威縣企業(yè)做網(wǎng)站/seo優(yōu)化代理
基于JAYA算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)(預(yù)測應(yīng)用) - 附代碼
文章目錄
- 基于JAYA算法優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)(預(yù)測應(yīng)用) - 附代碼
- 1.數(shù)據(jù)介紹
- 2.JAYA優(yōu)化BP神經(jīng)網(wǎng)絡(luò)
- 2.1 BP神經(jīng)網(wǎng)絡(luò)參數(shù)設(shè)置
- 2.2 JAYA算法應(yīng)用
- 4.測試結(jié)果:
- 5.Matlab代碼
摘要:本文主要介紹如何用JAYA算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)并應(yīng)用于預(yù)測。
1.數(shù)據(jù)介紹
本案例數(shù)據(jù)一共2000組,其中1900組用于訓(xùn)練,100組用于測試。數(shù)據(jù)的輸入為2維數(shù)據(jù),預(yù)測的輸出為1維數(shù)據(jù)
2.JAYA優(yōu)化BP神經(jīng)網(wǎng)絡(luò)
2.1 BP神經(jīng)網(wǎng)絡(luò)參數(shù)設(shè)置
神經(jīng)網(wǎng)絡(luò)參數(shù)如下:
%% 構(gòu)造網(wǎng)絡(luò)結(jié)構(gòu)
%創(chuàng)建神經(jīng)網(wǎng)絡(luò)
inputnum = 2; %inputnum 輸入層節(jié)點數(shù) 2維特征
hiddennum = 10; %hiddennum 隱含層節(jié)點數(shù)
outputnum = 1; %outputnum 隱含層節(jié)點數(shù)
2.2 JAYA算法應(yīng)用
JAYA算法原理請參考:https://blog.csdn.net/u011835903/article/details/115572600
JAYA算法的參數(shù)設(shè)置為:
popsize = 20;%種群數(shù)量
Max_iteration = 20;%最大迭代次數(shù)
lb = -5;%權(quán)值閾值下邊界
ub = 5;%權(quán)值閾值上邊界
% inputnum * hiddennum + hiddennum*outputnum 為閾值的個數(shù)
% hiddennum + outputnum 為權(quán)值的個數(shù)
dim = inputnum * hiddennum + hiddennum*outputnum + hiddennum + outputnum ;% inputnum * hiddennum + hiddennum*outputnum維度
這里需要注意的是,神經(jīng)網(wǎng)絡(luò)的閾值數(shù)量計算方式如下:
本網(wǎng)絡(luò)有2層:
第一層的閾值數(shù)量為:2*10 = 20; 即inputnum * hiddennum;
第一層的權(quán)值數(shù)量為:10;即hiddennum;
第二層的閾值數(shù)量為:10*1 = 10;即hiddenum * outputnum;
第二層權(quán)值數(shù)量為:1;即outputnum;
于是可知我們優(yōu)化的維度為:inputnum * hiddennum + hiddennum*outputnum + hiddennum + outputnum = 41;
適應(yīng)度函數(shù)值設(shè)定:
本文設(shè)置適應(yīng)度函數(shù)如下:
f i t n e s s = a r g m i n ( m s e ( T r a i n D a t a E r r o r ) + m e s ( T e s t D a t a E r r o r ) ) fitness = argmin(mse(TrainDataError) + mes(TestDataError)) fitness=argmin(mse(TrainDataError)+mes(TestDataError))
其中TrainDataError,TestDataError分別為訓(xùn)練集和測試集的預(yù)測誤差。mse為求取均方誤差函數(shù),適應(yīng)度函數(shù)表明我們最終想得到的網(wǎng)絡(luò)是在測試集和訓(xùn)練集上均可以得到較好結(jié)果的網(wǎng)絡(luò)。
4.測試結(jié)果:
從JAYA算法的收斂曲線可以看到,整體誤差是不斷下降的,說明JAYA算法起到了優(yōu)化的作用: