曹惠茹,許沛鑫,陳俊炯,鐘 麟,李小敏※
(1.廣州工程技術(shù)職業(yè)學(xué)院信息工程學(xué)院,廣州 510075;2.仲愷農(nóng)業(yè)工程學(xué)院機(jī)電工程學(xué)院,廣州 510550)
自2003 年以來,國內(nèi)豬肉價(jià)格存在明顯的波動(dòng),究其根本是由于豬飼料的主要成分玉米和大豆等價(jià)格也隨時(shí)間而增長,此外,受仔豬的供需矛盾影響,豬肉價(jià)格同樣也存在明顯的波動(dòng)。而豬肉是我國肉類消費(fèi)的主要對(duì)象,其價(jià)格偏差過大過小都會(huì)影響到居民的日常生活,因此,建立一個(gè)有效的模型預(yù)測生豬價(jià)格具有重要意義。國內(nèi)外學(xué)者實(shí)現(xiàn)數(shù)據(jù)預(yù)測的方法大概可分為3 個(gè)方向,即傳統(tǒng)統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)。在傳統(tǒng)統(tǒng)計(jì)學(xué)方法上,廣泛使用ARIMA 模型[1-4]。Akshita Gupta 等[5]使用了ARIMA、Wavelet-ARIMA和機(jī)器學(xué)習(xí)3 種模型進(jìn)行中期日負(fù)荷預(yù)測,結(jié)果表明機(jī)器傾斜算法優(yōu)于時(shí)間序列算法。Lun Wang[6]基于X12-ARIMA-GARCH 家族模型對(duì)上海銅期貨價(jià)格進(jìn)行預(yù)測,具有較好的擬合和預(yù)測能力。張瑩瑩[7]基于ARIMA模型對(duì)豬肉價(jià)格進(jìn)行了短期預(yù)測,預(yù)測曲線擬合度較好。在機(jī)器學(xué)習(xí)方法上,多使用SVM[8-10]模型。Ali Shiri 等[11]基于SVM 預(yù)測德國電價(jià),并通過對(duì)比分析,確定了使用了西德克薩斯中質(zhì)原油(WTI)的日價(jià)格的SVM 模型更加有效。Hasan 等[12]比較使用了k近鄰算法,樸素貝葉斯和支持向量機(jī)等來預(yù)測洋蔥的價(jià)格,將洋蔥價(jià)格分為高中低3 類。蔡超敏等[13]使用集成模型EMD-SVM,并與SVM、EMD-BP、BP等模型比較,顯示出了較高的預(yù)測精度。姜百臣等[14]通過改進(jìn)后的SVM 模型對(duì)豬肉價(jià)格進(jìn)行預(yù)測,相較于原始模型,預(yù)測精度良好,RMSE 為1.62。張大斌等[15]利用GEEMD 的分解能力,通過遺傳算法優(yōu)化SVR預(yù)測模型,提高了SVR 預(yù)測模型對(duì)豬肉價(jià)格的預(yù)測精度。在深度學(xué)習(xí)方法上,則多使用RNN 或RNN 變種LSTM等,Karim Moharm[16]基于雙向長短期記憶網(wǎng)絡(luò)構(gòu)建8 組對(duì)照組預(yù)測風(fēng)速,其對(duì)風(fēng)速數(shù)據(jù)集的理解具有良好的性能。Rijo Jackson Tom[17]利用Bi-LSTM預(yù)測比特幣的價(jià)格,該模型能夠以平均絕對(duì)誤差為13%的方式跟蹤測試數(shù)據(jù)集。Feng Li 等[18]使用LSTM-RNN 提出了一種考慮儲(chǔ)能效應(yīng)的短期負(fù)荷預(yù)測方法,MAPE 為3.0,RMSE為0.72。Van Bui[19]提出基于多尺度RNN 的深度學(xué)習(xí)可以高精度地反映其反應(yīng)性和準(zhǔn)確性,并顯示了作為輸出負(fù)載預(yù)測問題的魯棒解決方案的潛力。黃琪[20]采用特征選擇和LSTM 模型對(duì)同期豬肉價(jià)格進(jìn)行了定性比較合適分析,顯示LSTM有更好的預(yù)測效果。
顯然,在價(jià)格預(yù)測或其他預(yù)測方面眾多學(xué)者取得了不錯(cuò)的成果,但豬肉等大宗商品的價(jià)格預(yù)測,卻鮮有人進(jìn)行研究。結(jié)合以上問題,本文構(gòu)建了雙向循環(huán)神經(jīng)網(wǎng)絡(luò)和雙向長短期記憶網(wǎng)絡(luò)組合模型Bi-RNN-LSTM,該模型在國家數(shù)據(jù)庫提供的活豬(中等)集貿(mào)市場價(jià)格當(dāng)期值數(shù)據(jù)上擁有優(yōu)秀的預(yù)測結(jié)果,能在一定程度上幫助國家宏觀調(diào)控豬肉價(jià)格,避免由于豬肉價(jià)格的波動(dòng)較大而引起的一系列民生問題。
圖1 雙向RNN結(jié)構(gòu)
(1)前向隱藏RNN層
(2)反向隱藏RNN層
(3)前反向隱藏層合并RNN 隱藏層(RNN 新隱藏層)
(4)RNN輸出層
注:←表示反向傳播,→表示正向傳播。
Bi-LSTM同樣擁有兩個(gè)中間隱藏層,但其由于存在遺忘門(Forget gate)、輸入門(Input gate)、輸出門(Output gate),因此將3 個(gè)門視為一個(gè)operation 單元,簡化示意圖如圖2(圖中σ 為Sigmoid 函數(shù),F(xiàn)t為遺忘門,It為輸入門,Ot為輸出門,⊙為Hadamard 乘積)所示。相對(duì)于Bi-RNN,每一次由輸入層輸入時(shí),不會(huì)直接將序列數(shù)據(jù)抵達(dá)隱藏層,而是經(jīng)過前向operation 單元后,由前向operation 單元進(jìn)行相關(guān)計(jì)算,前向operation輸出對(duì)應(yīng)的記憶單元(c)供給下一個(gè)operation,而輸出的ht則和反向operation 輸出的ht'合并為一個(gè)隱藏層,再進(jìn)行輸出。
圖2 操作單元
對(duì)于operation 單元而言,則有:
(1)輸入門
(2)遺忘門
(3)輸出門
(4)候選記憶單元
(5)記憶單元
(6)隱藏層
而對(duì)于總體結(jié)構(gòu)而言,其計(jì)算公式與Bi-RNN 相似,僅需經(jīng)過1 個(gè)operation 單元,本文在此不再贅述。
圖3 相關(guān)系數(shù)熱圖
分析生豬價(jià)格的影響因素,可由兩個(gè)主要方向確定輸入特征,崽豬和飼料。因此可對(duì)由國家數(shù)據(jù)庫提供的畜產(chǎn)品集貿(mào)市場價(jià)格和糧食集貿(mào)市場價(jià)格數(shù)據(jù)之間進(jìn)行相關(guān)系數(shù)的計(jì)算。此外,由于輸入特征對(duì)標(biāo)簽的影響是相對(duì)滯后幾個(gè)月份的,因此本文將時(shí)間序列錯(cuò)開進(jìn)行相關(guān)性分析,即對(duì)2003 年1 月至2018 年8 月的輸入特征數(shù)據(jù)和2003 年5月至2018 年12 月的豬肉價(jià)格數(shù)據(jù)進(jìn)行相關(guān)性分析,各系數(shù)分析計(jì)算結(jié)果熱圖如圖3 所示。其中:Kendall 為肯德爾相關(guān)系數(shù);Person 為皮爾遜相關(guān)系數(shù);Spearman 為斯皮爾曼相關(guān)系數(shù)。由圖可知,對(duì)于肯德爾相關(guān)系數(shù),糧食作物與豬肉價(jià)格相關(guān)性均在0.5 左右,而仔豬達(dá)到了0.6,對(duì)于皮爾遜相關(guān)系數(shù),相關(guān)性最高的為仔豬、玉米,而大豆與秈稻、粳稻均約為0.79,對(duì)于斯皮爾曼相關(guān)系數(shù),相關(guān)性最高的為仔豬、玉米,而其他的則相關(guān)性接近。考慮到豬飼料的主要成分有豆粕,而本文做相關(guān)性分析時(shí)使用的是大豆,因此相關(guān)系數(shù)偏低,結(jié)合實(shí)際,最終選取玉米、仔豬、大豆作為輸入特征。
圖4 模型總結(jié)構(gòu)
首先,實(shí)驗(yàn)以訓(xùn)練集數(shù)據(jù)輸入,為消除奇異樣本數(shù)據(jù),將所有輸入特征和標(biāo)簽進(jìn)行歸一化處理,再經(jīng)過RNN層,為防止過擬合,將RNN 層的輸出先經(jīng)過Dropout層,進(jìn)而再輸入LSTM 層,同樣對(duì)再LSTM 層的輸出經(jīng)過Dropout 層,最終將Dropout 層的輸出作為Bi -LSTM 層的輸入,再經(jīng)過Bi-RNN 層,最后經(jīng)過全連接層Dense即可得到輸出,反復(fù)訓(xùn)練后,最終保存模型訓(xùn)練參數(shù),將測試集數(shù)據(jù)歸一化后進(jìn)入模型,將模型所得結(jié)果逆歸一化即可得到最終預(yù)測結(jié)果,模型構(gòu)建過程如圖4所示。
為對(duì)模型預(yù)測結(jié)果進(jìn)行評(píng)價(jià),采用平均絕對(duì)誤差(Mean Absolute Error,MAE)、平均絕對(duì)百分比誤差(Mean Absolute Percentage Error,MAPE)、對(duì)稱平均絕對(duì)百分比誤差(Symmetric Mean Absolute Percentage Error,SMAPE)、均方誤差(Mean Squared Error,MSE)、均方根誤差(Mean Squared Log Error,RMSE)等5 個(gè)誤差評(píng)價(jià)指標(biāo),其中,MAE、MSE、RMSE 越小表示誤差越小,MAPE和SMAPE 為0%表示完美模型,100%表示劣質(zhì)模型。
式中:yi為豬肉價(jià)格真實(shí)值;為豬肉價(jià)格預(yù)測值;n為時(shí)間序列長度。
為比較不同訓(xùn)練次數(shù)下的模型精度,設(shè)訓(xùn)練次數(shù)初值為100,公差為100,最終項(xiàng)為9。受模型訓(xùn)練次數(shù)和運(yùn)行環(huán)境的影響,同時(shí)因?yàn)榇嬖贒ropout層,所以每一次訓(xùn)練模型學(xué)習(xí)到的參數(shù)都存在變化,因此本文訓(xùn)練時(shí)每n項(xiàng)都訓(xùn)練兩遍,取最優(yōu)結(jié)果。
表1 模型訓(xùn)練結(jié)果(單元素長度為4)
圖5 Bi_RNN_LSTM最優(yōu)組預(yù)測值
由表1 可知,隨著模型訓(xùn)練次數(shù)的逐漸上升,模型精度大體提高,當(dāng)Epoch為400/600 時(shí),模型達(dá)到最優(yōu)結(jié)果,MSE 僅為0.48,RMSE為0.69,MAE為0.53,MAPE 為3.37%,SMAPE 為3.37%,epoch 為400 時(shí)預(yù)測值與真實(shí)值的折線圖如圖5 所示。
為比較不同模型最優(yōu)組的精度,本文在同一組數(shù)據(jù)集上訓(xùn)練了單層深度學(xué)習(xí)模型RNN、LSTM、GRU 以及雙向RNN、LSTM、GRU,其預(yù)測結(jié)果如圖6 所示。
圖6 其他模型預(yù)測值
考慮到不同輸入特征長度可能會(huì)對(duì)訓(xùn)練的精度造成影響,因此,設(shè)立不同輸入特征長度的模型作為對(duì)照,在原輸入單元素長度為4(原輸入特征含4 種元素,共計(jì)16 個(gè)輸入特征)的基礎(chǔ)上,設(shè)立單元素輸入特征長度為3 和5 作為對(duì)比。
表2 模型訓(xùn)練結(jié)果(單元素長度為3)
從表2 可看出元素輸入特征長度為3 時(shí)最優(yōu)組的MSE、RMSE、MAE、MAPE、SMAPE 依次為0.63、0.8、0.59、3.58、3.64;從表3 可看出最優(yōu)組的MSE、RMSE、MAE、MAPE、SMAPE依次為0.82、0.9、0.69、4.29%、4.32%。相對(duì)于單元素輸入特征長度為4 時(shí)的誤差指標(biāo)來說其精度均略低于單元素輸入特征長度為4 的實(shí)驗(yàn)組,單元素輸入長度為3、4、5 的模型預(yù)測值與真實(shí)值間折線圖如圖7 所示。
圖7 不同長度下的預(yù)測值
豬肉價(jià)格的提前預(yù)測關(guān)系到民生根本,本文使用深度學(xué)習(xí)組合模型,發(fā)揮各模型的優(yōu)點(diǎn),最終構(gòu)建出精度高的豬肉價(jià)格預(yù)測模型,通過模型預(yù)測值得出以下結(jié)論。
(1)模型訓(xùn)練次數(shù)的提高能有效地提高模型的預(yù)測精度,但當(dāng)訓(xùn)練次數(shù)過高時(shí),模型的精度又會(huì)下降;而對(duì)于單元素輸入特征長度為4 的實(shí)驗(yàn)來說,其400 次與600 次時(shí)的預(yù)測誤差基本相等,且在模型訓(xùn)練中精度最為精準(zhǔn)。
(2)對(duì)于深度學(xué)習(xí)模型來說,單層單向模型的預(yù)測誤差大,而單層雙向模型的預(yù)測誤差則相對(duì)較好,但由于結(jié)構(gòu)簡單,導(dǎo)致其誤差仍偏大。
(3)在不同單元素輸入特征長度的情況下,總體上模型的預(yù)測值與真實(shí)值基本擬合,這說明本文模型在豬肉價(jià)格時(shí)間序列上的可適度高。
對(duì)比本文使用的模型,證明了使用多層單雙向的深度學(xué)習(xí)模型預(yù)測效果最好。