m分别使用BP神经网络和GRNN网络进行时间序列预测matlab仿真
目錄
1.算法描述
2.仿真效果預(yù)覽
3.MATLAB核心程序
4.完整MATLAB
1.算法描述
? ? ? ? 廣義回歸神經(jīng)網(wǎng)絡(luò)是徑向基神經(jīng)網(wǎng)絡(luò)的一種,GRNN具有很強(qiáng)的非線性映射能力和學(xué)習(xí)速度,比RBF具有更強(qiáng)的優(yōu)勢(shì),網(wǎng)絡(luò)最后普收斂于樣本量集聚較多的優(yōu)化回歸,樣本數(shù)據(jù)少時(shí),預(yù)測(cè)效果很好,還可以處理不穩(wěn)定數(shù)據(jù)。雖然GRNN看起來(lái)沒(méi)有徑向基精準(zhǔn),但實(shí)際在分類和擬合上,特別是數(shù)據(jù)精準(zhǔn)度比較差的時(shí)候有著很大的優(yōu)勢(shì)。
? ? ? ?GRNN是RBF的一種改進(jìn),結(jié)構(gòu)相似。區(qū)別就在于多了一層求和層,而去掉了隱含層與輸出層的權(quán)值連接(對(duì)高斯權(quán)值的最小二乘疊加)。
1.輸入層為向量,維度為m,樣本個(gè)數(shù)為n,線性函數(shù)為傳輸函數(shù)。
2.隱藏層與輸入層全連接,層內(nèi)無(wú)連接,隱藏層神經(jīng)元個(gè)數(shù)與樣本個(gè)數(shù)相等,也就是n,傳輸函數(shù)為徑向基函數(shù)。
3.加和層中有兩個(gè)節(jié)點(diǎn),第一個(gè)節(jié)點(diǎn)為每個(gè)隱含層節(jié)點(diǎn)的輸出和,第二個(gè)節(jié)點(diǎn)為預(yù)期的結(jié)果與每個(gè)隱含層節(jié)點(diǎn)的加權(quán)和。
4.輸出層輸出是第二個(gè)節(jié)點(diǎn)除以第一個(gè)節(jié)點(diǎn)。
??????? 在GRNN神經(jīng)網(wǎng)絡(luò)中,一旦確立了學(xué)習(xí)樣本數(shù)據(jù)后,只需要調(diào)整一個(gè)參數(shù)“光滑因子”即可確定其網(wǎng)絡(luò)結(jié)構(gòu)和權(quán)值,因此訓(xùn)練GRNN網(wǎng)絡(luò)要比傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)更加便捷。所以選擇GRNN。
————————————————
? ? ? ?BP神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)層包括輸入層,隱含層和輸出層三個(gè)網(wǎng)絡(luò)層次,其基本結(jié)構(gòu)如下圖所示:?
基于三層網(wǎng)絡(luò)結(jié)構(gòu)的BP神經(jīng)網(wǎng)絡(luò)具有較為廣泛的應(yīng)用場(chǎng)合和訓(xùn)練效果。
? ? ? ? 在BP神經(jīng)網(wǎng)絡(luò)中,隱含層數(shù)量對(duì)神經(jīng)網(wǎng)絡(luò)的性能有著至關(guān)重要的影響,如果隱含層數(shù)量過(guò)多,會(huì)大大增加BP神經(jīng)網(wǎng)絡(luò)的內(nèi)部結(jié)構(gòu)的復(fù)雜度,從而降低學(xué)習(xí)效率,增加訓(xùn)練時(shí)間;如果隱含層數(shù)量過(guò)少,則無(wú)法精確獲得訓(xùn)練輸入數(shù)據(jù)和輸出結(jié)果之間的內(nèi)在規(guī)律,增加預(yù)測(cè)誤差。因此,選擇合適的隱含層個(gè)數(shù)具有十分重要的意義。由于隱含層個(gè)數(shù)的設(shè)置沒(méi)有明確的理論可以計(jì)算,通常情況下,采用逐次分析的方法獲得,即通過(guò)對(duì)不同隱含層所對(duì)應(yīng)的神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測(cè)誤差的仿真分析,選擇誤差最小情況下所對(duì)應(yīng)的隱含層個(gè)數(shù)。
? ? ? ? 學(xué)習(xí)率,即網(wǎng)絡(luò)權(quán)值得更新速度,當(dāng)學(xué)習(xí)率較大的時(shí)候,網(wǎng)絡(luò)權(quán)值的更新速度快,當(dāng)網(wǎng)絡(luò)穩(wěn)定性會(huì)下降;當(dāng)學(xué)習(xí)率較小的時(shí)候,網(wǎng)絡(luò)權(quán)值的更新速度慢,網(wǎng)絡(luò)較為穩(wěn)定。這里選擇BP神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)率方式參考上一章節(jié)隱含層的選擇方式,即通過(guò)對(duì)比不同學(xué)習(xí)率的網(wǎng)絡(luò)訓(xùn)練誤差,選擇性能較優(yōu)的學(xué)習(xí)率。
? ? ? ?BP神經(jīng)網(wǎng)絡(luò)的初始網(wǎng)絡(luò)權(quán)值對(duì)網(wǎng)絡(luò)訓(xùn)練的效率以及預(yù)測(cè)性能有著較大的影響,通常情況下,采用隨機(jī)生成[-1,1]之間的隨機(jī)數(shù)作為BP神經(jīng)網(wǎng)絡(luò)的初始權(quán)值。
————————————————
2.仿真效果預(yù)覽
matlab2022a仿真結(jié)果如下:
?
??? 可以看到,藍(lán)色的是原始的數(shù)據(jù),紅色的我們的預(yù)測(cè)輸出,前面幾個(gè)年份,由于有已知數(shù)據(jù),所以可以對(duì)比,可以看到,BP神經(jīng)網(wǎng)絡(luò)會(huì)存在的一定的誤差。而GRNN則誤差非常小。
誤差具體數(shù)值,新改的程序有輸出的,結(jié)果如下:
BP:
GRNN:
因此,通過(guò)上述過(guò)程可知,GRNN神經(jīng)網(wǎng)絡(luò)具有更好的預(yù)測(cè)結(jié)果。
3.MATLAB核心程序
SAFE10=[1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1];%GRNN神經(jīng)網(wǎng)絡(luò)訓(xùn)練 char = [D]'; T = [SAFE]; Net = newgrnn(char,T,25); save Grnn.mat Net;%% %通過(guò)擬合的方法,得到未來(lái)的指標(biāo)的數(shù)據(jù) X0=Time'; %設(shè)置預(yù)測(cè)年份 X1=[Time,2016,2017,2018,2019,2020];Y1=D(:,1); Y2=D(:,2); Y3=D(:,3); Y4=D(:,4); Y5=D(:,5); Y6=D(:,6); Y7=D(:,7); Y8=D(:,8); Y9=D(:,9); Y10=D(:,10); Y11=D(:,11); Y12=D(:,12); Y13=D(:,13); Y14=D(:,14); Y15=D(:,15);%開(kāi)始擬合 p=polyfit(X0,Y1,5);Y1_=p(1)*X1.^5+p(2)*X1.^4+p(3)*X1.^3+p(4)*X1.^2+p(5)*X1.^1+p(6); p=polyfit(X0,Y2,5);Y2_=p(1)*X1.^5+p(2)*X1.^4+p(3)*X1.^3+p(4)*X1.^2+p(5)*X1.^1+p(6); p=polyfit(X0,Y3,5);Y3_=p(1)*X1.^5+p(2)*X1.^4+p(3)*X1.^3+p(4)*X1.^2+p(5)*X1.^1+p(6); p=polyfit(X0,Y4,5);Y4_=p(1)*X1.^5+p(2)*X1.^4+p(3)*X1.^3+p(4)*X1.^2+p(5)*X1.^1+p(6);p=polyfit(X0,Y5,5);Y5_=p(1)*X1.^5+p(2)*X1.^4+p(3)*X1.^3+p(4)*X1.^2+p(5)*X1.^1+p(6);; p=polyfit(X0,Y6,5);Y6_=p(1)*X1.^5+p(2)*X1.^4+p(3)*X1.^3+p(4)*X1.^2+p(5)*X1.^1+p(6);; p=polyfit(X0,Y7,5);Y7_=p(1)*X1.^5+p(2)*X1.^4+p(3)*X1.^3+p(4)*X1.^2+p(5)*X1.^1+p(6);; p=polyfit(X0,Y8,5);Y8_=p(1)*X1.^5+p(2)*X1.^4+p(3)*X1.^3+p(4)*X1.^2+p(5)*X1.^1+p(6);;p=polyfit(X0,Y9,5);Y9_=p(1)*X1.^5+p(2)*X1.^4+p(3)*X1.^3+p(4)*X1.^2+p(5)*X1.^1+p(6);; p=polyfit(X0,Y10,5);Y10_=p(1)*X1.^5+p(2)*X1.^4+p(3)*X1.^3+p(4)*X1.^2+p(5)*X1.^1+p(6);; p=polyfit(X0,Y11,5);Y11_=p(1)*X1.^5+p(2)*X1.^4+p(3)*X1.^3+p(4)*X1.^2+p(5)*X1.^1+p(6);; p=polyfit(X0,Y12,5);Y12_=p(1)*X1.^5+p(2)*X1.^4+p(3)*X1.^3+p(4)*X1.^2+p(5)*X1.^1+p(6);;p=polyfit(X0,Y13,5);Y13_=p(1)*X1.^5+p(2)*X1.^4+p(3)*X1.^3+p(4)*X1.^2+p(5)*X1.^1+p(6);; p=polyfit(X0,Y14,5);Y14_=p(1)*X1.^5+p(2)*X1.^4+p(3)*X1.^3+p(4)*X1.^2+p(5)*X1.^1+p(6);; p=polyfit(X0,Y15,5);Y15_=p(1)*X1.^5+p(2)*X1.^4+p(3)*X1.^3+p(4)*X1.^2+p(5)*X1.^1+p(6);;05_051_m4.完整MATLAB
V
總結(jié)
以上是生活随笔為你收集整理的m分别使用BP神经网络和GRNN网络进行时间序列预测matlab仿真的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Redis 网络模型 -- 阻塞非阻塞I
- 下一篇: matlab最小二乘法拟合参数,matl