コミュニティ スパイダー アルゴリズムに基づいて最適化された BP ニューラル ネットワーク (予測アプリケーション) - コード付き

コミュニティ スパイダー アルゴリズムに基づいて最適化された BP ニューラル ネットワーク (予測アプリケーション) - コード付き


要約: この記事では主に、スウォーム スパイダー アルゴリズムを使用して BP ニューラル ネットワークを最適化し、予測に適用する方法を紹介します。

1. データの紹介

この場合、データ セットは 2000 セットあり、そのうち 1900 セットがトレーニングに使用され、100 セットがテストに使用されます。データの入力は 2 次元データ、予測出力は 1 次元データです

2. ソーシャル スパイダーは BP ニューラル ネットワークを最適化します

2.1 BPニューラルネットワークのパラメータ設定

ニューラル ネットワークのパラメーターは次のとおりです。

%% 构造网络结构
%创建神经网络
inputnum = 2;     %inputnum  输入层节点数 2维特征
hiddennum = 10;     %hiddennum  隐含层节点数
outputnum = 1;     %outputnum  隐含层节点数

2.2 ソーシャルスパイダーアルゴリズムの応用

ソーシャル スパイダー アルゴリズムの原理を参照してください: https://blog.csdn.net/u011835903/article/details/108406547

スウォーム スパイダー アルゴリズムのパラメーターは次のように設定されます。

popsize = 20;%种群数量
Max_iteration = 20;%最大迭代次数
lb = -5;%权值阈值下边界
ub = 5;%权值阈值上边界
%  inputnum * hiddennum + hiddennum*outputnum 为阈值的个数
%  hiddennum + outputnum 为权值的个数
dim =  inputnum * hiddennum + hiddennum*outputnum + hiddennum + outputnum ;%  inputnum * hiddennum + hiddennum*outputnum维度

ここで、ニューラル ネットワークのしきい値数は次のように計算されることに注意してください。

このネットワークには 2 つの層があります。

最初の層のしきい値の数は次のとおりです: 2*10 = 20; つまり、inputnum * hiddennum;

最初の層の重みの数は 10、つまり hiddennum です。

2 番目の層のしきい値番号は 10*1 = 10、つまり hiddennum * Outputnum; です。

2 番目の層の重みの数は 1、つまり、outputnum です。

したがって、最適化された次元は次のようになります。 inputnum * hiddennum + hiddennum*outputnum + hiddennum + Outputnum = 41;

フィットネス関数値の設定:

この論文では、適応度関数は次のように設定されます
フィットネス_ _ _ _=a r g min ( m se (トレーニングデータエラー) _ _ _ _ _ _+m es ( T est D a ta Error ))ここで、TrainDataError と TestDataError は、それぞれトレーニング セットとテスト セット
予測誤差です。mse は平均二乗誤差関数を見つけることであり、適合度関数は、最終的に必要なネットワークがテスト セットとトレーニング セットの両方でより良い結果を得ることができるネットワークであることを示します。

4. テスト結果:

スウォーム スパイダー アルゴリズムの収束曲線から、全体的な誤差が継続的に減少していることがわかり、スウォーム スパイダー アルゴリズムが最適化された役割を果たしていることがわかります。

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

5. MATLAB コード

おすすめ

転載: blog.csdn.net/u011835903/article/details/132436708
おすすめ