蘇照軍,郭銳鋒,高 岑,王美吉,李冬梅
1(中國科學(xué)院大學(xué) 計(jì)算機(jī)控制與工程學(xué)院,北京 100049)
2(中國科學(xué)院 沈陽計(jì)算技術(shù)研究所,沈陽 110168)
我國是一個(gè)農(nóng)業(yè)大國,農(nóng)業(yè)在國民經(jīng)濟(jì)中占據(jù)著重要地位,農(nóng)業(yè)是否平穩(wěn)健康發(fā)展,關(guān)系著社會(huì)的穩(wěn)定.所以,對(duì)農(nóng)產(chǎn)品物價(jià)進(jìn)行預(yù)測(cè)具有迫切的現(xiàn)實(shí)意義.
之前人們大多采用單一模型進(jìn)行預(yù)測(cè),近年來人們更多的是采用組合模型進(jìn)行預(yù)測(cè).陳詠梅[1]等使用基于ARIMA 和BP神經(jīng)網(wǎng)絡(luò)[2]的組合模型對(duì)福建濱海旅游市場(chǎng)規(guī)模進(jìn)行預(yù)測(cè),表明該組合模型的預(yù)測(cè)準(zhǔn)確率高,更加接近真實(shí)情況.朱葉[3]等使用灰色模型和BP神經(jīng)網(wǎng)絡(luò)構(gòu)建的組合模型對(duì)兵團(tuán)農(nóng)產(chǎn)品物流市場(chǎng)需求進(jìn)行預(yù)測(cè),表明組合模型在預(yù)測(cè)精度上有了很大的提升.劉金源[4]等使用基于BP神經(jīng)網(wǎng)絡(luò)、GM 灰色預(yù)測(cè)理論和PCA 主成分分析的組合模型對(duì)城市燃?xì)馊肇?fù)荷進(jìn)行預(yù)測(cè),表明該組合模型[5,6]是一種更為有效的預(yù)測(cè)方法.組合模型展現(xiàn)出了更大的優(yōu)勢(shì).本文使用粒子群和動(dòng)態(tài)學(xué)習(xí)率優(yōu)化BP神經(jīng)網(wǎng)絡(luò)模型,結(jié)合支持向量機(jī)模型對(duì)農(nóng)產(chǎn)品物價(jià)進(jìn)行預(yù)測(cè),將兩組預(yù)測(cè)結(jié)果使用優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行組合得到預(yù)測(cè)結(jié)果,提高模型的泛化能力和預(yù)測(cè)準(zhǔn)確度.
組合模型是利用兩種或者兩種以上的模型,分別對(duì)實(shí)際問題進(jìn)行模型訓(xùn)練,將結(jié)果使用權(quán)重進(jìn)行組合,得到最終結(jié)果的過程.組合模型目標(biāo)就是利用一組最優(yōu)權(quán)重系數(shù),對(duì)單獨(dú)模型結(jié)果進(jìn)行加權(quán)求值,使得結(jié)果更加接近真實(shí)值.
目前,單一預(yù)測(cè)模型準(zhǔn)確率不高,考慮因素單一,沒有結(jié)合模型的適用場(chǎng)景,所以本文研究了組合模型.由于BP神經(jīng)網(wǎng)絡(luò)能夠更好地模擬線性和非線性數(shù)據(jù),適合于長期預(yù)測(cè)模型的訓(xùn)練;SVR 是基于時(shí)間序列的回歸預(yù)測(cè)模型,適合于短期預(yù)測(cè).將適合中長期預(yù)測(cè)的BP模型和適合于短期預(yù)測(cè)的SVR模型組合,使模型具有更高的準(zhǔn)確率,更強(qiáng)的泛化能力.所以選用了優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)模型和SVR模型進(jìn)行組合.提出了基于BP-SVR-BP的組合模型算法,即BP神經(jīng)網(wǎng)絡(luò)-支持向量機(jī)回歸-BP神經(jīng)網(wǎng)絡(luò)的組合模型,并且使用農(nóng)產(chǎn)品價(jià)格數(shù)據(jù)對(duì)模型進(jìn)行驗(yàn)證評(píng)估.
圖1 BP-SVR-BP 組合模型
圖1 為BP-SVR-BP 組合模型的結(jié)構(gòu)圖.第一步將經(jīng)過數(shù)據(jù)預(yù)處理的訓(xùn)練集數(shù)據(jù)(train_data)輸入到SVR 算法中,經(jīng)過訓(xùn)練,得到SVR模型(M1);同時(shí)將訓(xùn)練集數(shù)據(jù)輸入第一輪的BP神經(jīng)網(wǎng)絡(luò)算法中,經(jīng)過訓(xùn)練,得到BP神經(jīng)網(wǎng)絡(luò)模型(M2).第二步將實(shí)驗(yàn)數(shù)據(jù)或者稱之為測(cè)試數(shù)據(jù)(test_data)輸入到SVR 和BP模型中,得到兩組實(shí)驗(yàn)結(jié)果數(shù)據(jù)(P1,P2),將其組成兩列數(shù)據(jù),并且將其對(duì)應(yīng)的真實(shí)數(shù)據(jù)(Price)加入,作為第三列,形如(P1,P2,Price)組成第二輪BP神經(jīng)網(wǎng)絡(luò)算法的訓(xùn)練集數(shù)據(jù)(new_data).第三步將新的訓(xùn)練集數(shù)據(jù)(new_data)輸入BP神經(jīng)網(wǎng)絡(luò)算法,這一步主要是利用BP 擬合組合模型的權(quán)重系數(shù),尋找最優(yōu)的權(quán)重系數(shù)組合.經(jīng)過訓(xùn)練,得到第二輪的BP模型(M3).第四步將實(shí)驗(yàn)數(shù)據(jù)(test_data1)輸入模型(M3),得到預(yù)測(cè)結(jié)果,評(píng)價(jià)組合模型的預(yù)測(cè)準(zhǔn)確度.
在組合模型中,第一輪我使用了優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)模型和基于多項(xiàng)式核函數(shù)的SVR模型,第二輪使用了優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練組合模型權(quán)重系數(shù).
本文采用三層結(jié)構(gòu),即輸入層、隱含層、輸出層.假設(shè)輸入層n個(gè)節(jié)點(diǎn),隱含層k個(gè)節(jié)點(diǎn),輸出層1個(gè)節(jié)點(diǎn).X(X1,X2,…,Xn)為輸入層輸入數(shù)據(jù);M(M1,M2,…,Mn)為經(jīng)輸入層加權(quán)求和的結(jié)果,即隱含層的輸入數(shù)據(jù);N(N1,N2,…,Nk)為隱含層由激活函數(shù)求得的結(jié)果,即隱含層的輸出數(shù)據(jù);Z為經(jīng)隱含層加權(quán)求和的結(jié)果,即輸出層的輸入數(shù)據(jù);Y為預(yù)測(cè)值,W為各層鏈接的權(quán)值,B(B1,B2,…,Bi)表示偏置值.
根據(jù)輸入X,得隱含層的輸入為:
其中,l為層數(shù),b為偏置值.則隱含層的輸出為:
其中,ψ1為隱含層Sigmoid 激活函數(shù),j=1,2,…,n.
輸出層的輸入為:
輸出層的輸出為:
由于BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值對(duì)價(jià)格的預(yù)測(cè)準(zhǔn)確度有一定影響,可以通過粒子群算法對(duì)網(wǎng)絡(luò)中的權(quán)值和閾值進(jìn)行全局尋優(yōu),合理優(yōu)化調(diào)整.假設(shè)給定n個(gè)粒子:
pi=(pi1,pi2,···,piD)粒子i的位置xi=(xi1,xi2,···,xiD);粒子i的速度vi=(vi1,vi2,···,viD);粒子i經(jīng)過的歷史最優(yōu)位置;粒子群整體經(jīng)歷的最優(yōu)位置:g=(g1,g2,···,gD);則PSO 速度更新公式為:
位置更新為:
k為:第k次迭代;c1,c2為學(xué)習(xí)率變量,r1,r2為[0,1]范圍之內(nèi)的隨機(jī)數(shù),ω為粒子群權(quán)重變量.
假設(shè)輸入層、隱含層、輸出層節(jié)點(diǎn)數(shù)為L1_Num,L2_Num,L3_Num.種群參數(shù)初始化為:種群數(shù)目N;維度為D=L1_Num×L2_Num+L2_Num×L3_Num;使用真實(shí)值與預(yù)測(cè)值的均方誤差作為粒子群適應(yīng)度函數(shù):
其中,Oj為第j個(gè)記錄的真實(shí)值,Yj為第j個(gè)記錄的預(yù)測(cè)值.得到的最優(yōu)位置數(shù)據(jù),分配到網(wǎng)絡(luò)中訓(xùn)練.
BP神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)率對(duì)網(wǎng)絡(luò)的收斂速度有影響整.η過大,收斂速度過快;η過小,導(dǎo)致收斂速度過慢.因此需采用一種動(dòng)態(tài)改變的學(xué)習(xí)速率η.
支持向量回歸機(jī)(SVR)模型是在SVM 基礎(chǔ)上,加以改進(jìn),可以用于基于回歸的預(yù)測(cè)模型.模型主要是通過核函數(shù)將數(shù)據(jù)映射到一個(gè)高維空間,然后在高維空間尋找一個(gè)最優(yōu)的超平面,使所有點(diǎn)到該平面的距離誤差最小.這個(gè)函數(shù)即是SVR 函數(shù)模型.SVR 函數(shù)為:
其中,W為權(quán)值向量;φ(X)為映射函數(shù);b為常數(shù).在此基礎(chǔ)增加松弛度變量ξi和,則式子可轉(zhuǎn)化為:
同時(shí)必須滿足:
數(shù)據(jù)選用2009-2016年上海農(nóng)產(chǎn)品日價(jià)格數(shù)據(jù)作為實(shí)驗(yàn)數(shù)據(jù).
圖2 構(gòu)建模型流程圖
選用數(shù)據(jù)的平均交易價(jià)格作為預(yù)測(cè)目標(biāo),數(shù)據(jù)發(fā)布時(shí)間、最低交易價(jià)格、最高交易價(jià)格、最高溫度、最低溫度作為模型輸入數(shù)據(jù),訓(xùn)練模型.
(1)將數(shù)據(jù)發(fā)布時(shí)間轉(zhuǎn)換為YYMMDD的時(shí)間格式,例如2016/6/11 轉(zhuǎn)換為20160611.
(2)采用前后k個(gè)數(shù)據(jù)的平均值填充缺失值.
(3)采用MIN-MAX 方法對(duì)特征數(shù)據(jù)歸一化.
(1)預(yù)處理之后的數(shù)據(jù),選用集合數(shù)據(jù)(train_data)的70% 作為訓(xùn)練數(shù)據(jù)(Train1),train_data的30%的數(shù)據(jù)作為測(cè)試數(shù)據(jù)(Test1).將Train1 數(shù)據(jù)分別輸入到SVR 算法和BP 算法中訓(xùn)練出SVR模型(M1)和BP模型(M2).將Test1 輸入到M1 和M2模型中,得到兩組預(yù)測(cè)結(jié)果(P1,P2),和真實(shí)數(shù)據(jù)(Price)組成三列數(shù)據(jù)(train_data2),形如(P1,P2,Price).將train_data2的80% 作為訓(xùn)練集(Train2),train_data2的20%作為測(cè)試集(Test2),Train2 訓(xùn)練集訓(xùn)練BP模型,得到最優(yōu)權(quán)重系數(shù)組合,得到模型M3.將Test2 輸入M3模型得到預(yù)測(cè)結(jié)果值.
(2)對(duì)BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練,選擇最優(yōu)隱含層節(jié)點(diǎn)數(shù)目.使用均方根誤差(RMSE)衡量真實(shí)值和預(yù)測(cè)值之間的準(zhǔn)確率,如圖3.
圖3 隱藏層節(jié)點(diǎn)數(shù)-RMSE 圖
根據(jù)圖3,BP 隱含層節(jié)點(diǎn)數(shù)目為9.
(3)SVR模型,選用多項(xiàng)式核函數(shù)(Poly).
本文基于BP-SVR-BP 組合模型,第一個(gè)BP網(wǎng)絡(luò)模型使用了5個(gè)節(jié)點(diǎn)的輸入層,9個(gè)節(jié)點(diǎn)的隱藏層,1個(gè)節(jié)點(diǎn)的輸出層,網(wǎng)絡(luò)權(quán)值和閾值使用粒子群算法進(jìn)行全局優(yōu)化,加以自適應(yīng)動(dòng)態(tài)調(diào)整學(xué)習(xí)率;SVR 選用多項(xiàng)式核函數(shù)進(jìn)行訓(xùn)練;第二個(gè)BP神經(jīng)網(wǎng)絡(luò)使用2個(gè)節(jié)點(diǎn)的輸入層,5個(gè)節(jié)點(diǎn)的隱含層,1個(gè)節(jié)點(diǎn)的輸出層.預(yù)測(cè)結(jié)果如圖4.
圖4 描繪了時(shí)間與價(jià)格預(yù)測(cè)值的折線圖,從圖中可以得出BP神經(jīng)網(wǎng)絡(luò),SVR模型,BP-SVR-BP模型,總體趨勢(shì)相近,但BP,SVR 局部存在較大差距,BPSVR-BP 組合模型局部更符合價(jià)格數(shù)據(jù)趨勢(shì).將折線圖放大,如圖5所示.
圖4 時(shí)間-價(jià)格圖
圖5 時(shí)間-價(jià)格圖
從圖5中,可以得出,SVR模型預(yù)測(cè)的值離真實(shí)值曲線最遠(yuǎn),BP神經(jīng)網(wǎng)絡(luò)次之,BP-SVR-BP模型最近,說明BP-SVR-BP模型的預(yù)測(cè)準(zhǔn)確度最高,所以BP-SVRBP 預(yù)測(cè)準(zhǔn)確率上優(yōu)于單一的BP,SVR模型.
為了更加準(zhǔn)確地評(píng)價(jià)三個(gè)預(yù)測(cè)模型,采用量化體系進(jìn)行評(píng)價(jià).采用MAE,MSE,RMSE 進(jìn)行量化評(píng)價(jià).
測(cè)得的結(jié)果見表1.
表1 單一模型對(duì)比
從表1中,可以從量化的角度分析得出,BP-SVRBP模型,MAE,MSE,RMSE的值都比BP 和SVR模型小,基于以上綜合分析,得出BP-SVR-BP 組合預(yù)測(cè)模型對(duì)農(nóng)產(chǎn)品價(jià)格曲線擬合效果更優(yōu),預(yù)測(cè)準(zhǔn)確率更高.
前人的研究中,也嘗試了很多的組合模型預(yù)測(cè)算法.比如使用BP神經(jīng)網(wǎng)絡(luò)模型和ARIMA模型進(jìn)行組合,首先通過ARIMA模型預(yù)測(cè)結(jié)果值,接著使用預(yù)測(cè)值作為參數(shù),輸入BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè),得出預(yù)測(cè)結(jié)果,即為BP-ARIMA模型.也有采用BP神經(jīng)網(wǎng)絡(luò)模型和灰色模型GM(1,1)進(jìn)行組合,將結(jié)果采用標(biāo)準(zhǔn)差確定組合模型組合權(quán)重,將單一模型結(jié)果組合,得出預(yù)測(cè)結(jié)果,即為BP-GM(1,1)組合模型.現(xiàn)將提到的預(yù)測(cè)方法用在農(nóng)產(chǎn)品價(jià)格預(yù)測(cè)上,對(duì)組合模型進(jìn)行對(duì)比分析,如圖6.
圖6 組合模型時(shí)間-價(jià)格圖
圖6 分別描繪了BP-SVR-BP、BP-ARIMA、BPGM(1,1)組合模型在農(nóng)產(chǎn)品價(jià)格中的預(yù)測(cè)結(jié)果,從圖中可以清晰地看出,三種組合模型對(duì)農(nóng)產(chǎn)品價(jià)格曲線模擬較好,都能夠比較準(zhǔn)確地模擬出農(nóng)產(chǎn)品價(jià)格走勢(shì),和真實(shí)農(nóng)產(chǎn)品價(jià)格走勢(shì)相同,但是從圖6中也可以得出,三種模型雖然走勢(shì)相同,但是準(zhǔn)確率上卻有差別,BP-SVR-BP模型描繪的曲線相對(duì)于BP-ARIMA、BPGM(1,1)模型描繪的曲線,更加逼近真實(shí)數(shù)據(jù)曲線,即為準(zhǔn)確率更高.采用量化體系分析結(jié)果如表2.
從表2中,可以從量化的角度分析,BP-SVR-BP 組合模型的MAE,MSE,RMSE 值都比BP-ARIMA、BPGM(1,1)組合模型的小,所以可以得出BP-SVR-BP 組合模型的準(zhǔn)確率更好,泛化能力更強(qiáng),能夠更好地實(shí)現(xiàn)農(nóng)產(chǎn)品物價(jià)的預(yù)測(cè).
表2 組合模型對(duì)比分析
本文提出了基于BP-SVR-BP的組合模型,使用圖分析和數(shù)據(jù)量化分析,分析了BP模型、SVR模型、BP-SVR-BP 組合模型,得到組合模型準(zhǔn)確率更高,擬合效果更優(yōu).緊接著對(duì)常見的組合模型進(jìn)行了對(duì)比分析,對(duì)BP-SVR-BP 組合模型、BP-ARIMA 組合模型、BPGM(1,1)組合模型三種組合模型進(jìn)行了圖分析和數(shù)據(jù)量化分析,得出BP-SVR-BP 組合模型相對(duì)于BPARIMA 和BP-GM(1,1)組合模型準(zhǔn)確率更好,泛化能力更強(qiáng),能夠較好地實(shí)現(xiàn)農(nóng)產(chǎn)品物價(jià)的預(yù)測(cè).本方法還有繼續(xù)需要改進(jìn)的地方,比如說,將對(duì)農(nóng)產(chǎn)品價(jià)格產(chǎn)生影響的更多影響因素納入模型訓(xùn)練中,對(duì)SVR 核函數(shù)進(jìn)行優(yōu)化,對(duì)組合模型組合預(yù)測(cè)結(jié)果的加權(quán)值進(jìn)行優(yōu)化等等.未來將繼續(xù)對(duì)組合模型進(jìn)行深入研究,深化改進(jìn)模型,得到更優(yōu)組合.