張治華+徐元紅
【摘要】廣義回歸神經(jīng)網(wǎng)絡(luò)(GRNN)對(duì)于大量數(shù)據(jù)的非線性模型預(yù)測(cè)具有很好的效果,且預(yù)測(cè)過(guò)程中只需要調(diào)整平滑因子一個(gè)參數(shù).粒子群算法(PSO)操作簡(jiǎn)單,容易實(shí)現(xiàn).利用PSO算法優(yōu)化GRNN神經(jīng)網(wǎng)絡(luò),可以自動(dòng)調(diào)節(jié)平滑因子及連接權(quán)值.這兩種模型的預(yù)測(cè)誤差都較小,GRNN模型對(duì)三只股票的平均MSE誤差達(dá)到了0.048 6,而PSO-GRNN模型的平均誤差減小到了0.010 4.圖表分析表明PSO-GRNN模型比GRNN模型更精確,穩(wěn)定性更好,泛化能力更強(qiáng).
【關(guān)鍵詞】粒子群算法;神經(jīng)網(wǎng)絡(luò)模型;股票預(yù)測(cè)
一、引言
廣義回歸神經(jīng)網(wǎng)絡(luò)(簡(jiǎn)稱GRNN神經(jīng)網(wǎng)絡(luò))是一種基于非線性回歸理論的前饋式神經(jīng)網(wǎng)絡(luò)模型,具有局部非線性逼近能力強(qiáng)、收斂速度快等特點(diǎn),是股票預(yù)測(cè)中常用的神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)之一.由于平滑因子對(duì)網(wǎng)絡(luò)的性能影響比較大,需要不斷嘗試才能獲得最佳值.本文采用粒子群算法優(yōu)化GRNN神經(jīng)網(wǎng)絡(luò),通過(guò)自動(dòng)調(diào)整連接權(quán)值及平滑因子,使結(jié)果達(dá)到最優(yōu),建立了PSO-GRNN神經(jīng)網(wǎng)絡(luò)模型,對(duì)我國(guó)三支熱門股票上海電力(代碼:600021)、中信證券(代碼:600030)和中國(guó)石化(代碼:600028)進(jìn)行預(yù)測(cè).
二、基于粒子群算法的GRNN神經(jīng)網(wǎng)絡(luò)及其應(yīng)用
(一)粒子群算法
粒子群算法(PSO算法)是由Kennedy和Eberhart提出的,通過(guò)模擬鳥(niǎo)群飛行覓食過(guò)程中的協(xié)作行為,使群體達(dá)到最優(yōu).首先初始化一群隨機(jī)粒子,其中第i個(gè)粒子在D維解空間的位置和速度分別表示為L(zhǎng)i=(li1,li2,…,liD),Vi=(vi1,vi2,…,viD),通過(guò)迭代搜索產(chǎn)生粒子最優(yōu)解.每一次迭代,粒子從初始到當(dāng)前迭代次數(shù)搜索產(chǎn)生的最優(yōu)解為粒子的個(gè)體極值Pbest,粒子種群當(dāng)前的最優(yōu)解,即所有粒子的最優(yōu)位置,稱為全局極值gbest.第i個(gè)粒子通過(guò)兩個(gè)極值更新自己第d維(1≤d≤D)的位置lid和速度vid.
步驟1初始化.確定各個(gè)參數(shù)并隨機(jī)初始化種群中粒子的位置和速度,并設(shè)定位置的范圍[-Lmax,Lmax],速度的范圍[-Vmax,Vmax].將每個(gè)粒子的Pbest設(shè)置為當(dāng)前位置,gbest值設(shè)置為初始群體中適應(yīng)值最好的粒子位置.
步驟2判斷粒子是否達(dá)到個(gè)體極值.如果滿足,轉(zhuǎn)步驟5;否則,轉(zhuǎn)步驟3.
步驟3更新粒子的位置和速度.
步驟4更新粒子的Pbest值和gbest值.對(duì)每個(gè)粒子,如果適應(yīng)值小于Pbest的適應(yīng)值,則Pbest設(shè)置為當(dāng)前位置;如果粒子適應(yīng)值小于gbest的適應(yīng)值,則gbest設(shè)置為當(dāng)前位置,轉(zhuǎn)步驟2.
步驟5記錄gbest,算法結(jié)束.
(二)基于PSO的GRNN神經(jīng)網(wǎng)絡(luò)算法
步驟1提取目標(biāo)輸入矢量,并做歸一化處理,利用公式計(jì)算.xj(i)=xj(i)1max(xj(k)),k=1,2,…,N,式中,xj(i)表示第j個(gè)神經(jīng)元的第i個(gè)輸入值,N表示有N個(gè)訓(xùn)練樣本.
步驟2隨機(jī)初始化種群,設(shè)定種群規(guī)模為20,初始化粒子速度和位置,設(shè)定位置的范圍[-Lmax,Lmax]和速度的范圍[-Vmax,Vmax].
步驟3將粒子群中每一個(gè)體的分量映射為GRNN神經(jīng)網(wǎng)絡(luò)的參數(shù),構(gòu)成一個(gè)GRNN神經(jīng)網(wǎng)絡(luò),對(duì)每一個(gè)GRNN神經(jīng)網(wǎng)絡(luò)輸入訓(xùn)練樣本進(jìn)行訓(xùn)練,并計(jì)算每一個(gè)粒子在訓(xùn)練集上的均方誤差和作為適應(yīng)度值.均方誤差公式如下:fi=e=11n∑n1i=1(yij-ij)2.其中,N為訓(xùn)練樣本容量,yij表示訓(xùn)練樣本實(shí)際值,ij表示預(yù)測(cè)模型的輸出值.
步驟4根據(jù)每一個(gè)體的適應(yīng)度值來(lái)評(píng)價(jià)每個(gè)粒子的搜索位置,計(jì)算當(dāng)前每個(gè)粒子的個(gè)體極值和種群全局極值.
步驟5判斷是否滿足條件.如果達(dá)到最大迭代次數(shù)或均方誤差達(dá)到最初設(shè)定值,則結(jié)束粒子搜索.否則轉(zhuǎn)到步驟3,重復(fù)迭代優(yōu)化,更新粒子速度和位置.
步驟6輸出最優(yōu)粒子位置,將每一個(gè)個(gè)體的分量映射為GRNN神經(jīng)網(wǎng)絡(luò)的平滑因子和權(quán)值,對(duì)神經(jīng)網(wǎng)絡(luò)的輸入樣本進(jìn)行預(yù)測(cè).
步驟7算法結(jié)束.
三、利用MATLAB工具實(shí)現(xiàn)結(jié)果
為了確保PSO-GRNN神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)的精確度,我們選擇了3組訓(xùn)練數(shù)據(jù),每組數(shù)據(jù)都是從2012年3月29日到2012年4月16日的250天的收盤指數(shù).PSO-GRNN神經(jīng)網(wǎng)絡(luò)模型中動(dòng)量因子取α=0.05,β=0.55.粒子種群規(guī)模為20,粒子維數(shù)為12,學(xué)習(xí)因子c1=c2=2,慣性權(quán)值的初始值0=0.9,最大迭代次數(shù)為250次.為了檢驗(yàn)神經(jīng)網(wǎng)絡(luò)的泛化能力,我們引入三種評(píng)價(jià)指標(biāo):
均方根誤差:MSE=11n∑n1i=1(yi-i)2.
平均絕對(duì)誤差:MAE=11n∑n1i=1|yi-i|.
平均絕對(duì)百分比誤差:MAPE=11n∑n1i=1|yi-i|1|yi|×100%.
其中,yi表示訓(xùn)練樣本實(shí)際值,i表示預(yù)測(cè)模型的輸出值.平均絕對(duì)誤差(MAE)和平均絕對(duì)百分比誤差(MAPE)都是衡量預(yù)測(cè)結(jié)果偏離實(shí)際的指標(biāo),MAE(或者M(jìn)APE)值越大,預(yù)測(cè)誤差越大;均方根誤差(MSE)能較好地預(yù)測(cè)效果,MSE值越小,預(yù)測(cè)效果越好.
經(jīng)過(guò)PSO-GRNN模型和GRNN模型對(duì)所選三組數(shù)據(jù)的訓(xùn)練,兩種模型對(duì)比結(jié)果見(jiàn)下表.在模型樣本相同,初始因子相同的情況下,PSO-GRNN模型對(duì)樣本的預(yù)測(cè)精度明顯優(yōu)于GRNN模型,泛化能力更強(qiáng).
四、結(jié)論
GRNN神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)在股票預(yù)測(cè)方面能達(dá)到很好的效果,但在調(diào)節(jié)平滑因子過(guò)程中需要不斷嘗試.粒子群算法改進(jìn)的GRNN神經(jīng)網(wǎng)絡(luò),通過(guò)搜索—更新過(guò)程對(duì)平滑因子及權(quán)值的自動(dòng)尋優(yōu),可以達(dá)到更好的效果.在相同訓(xùn)練樣本的基礎(chǔ)下,PSO-GRNN模型比GRNN模型精確度更高,穩(wěn)定性更好,泛化能力更強(qiáng).