張保國 任萬明 吳兵
(1山東麥港數(shù)據(jù)系統(tǒng)有限公司山東濟南250100;2山東省現(xiàn)代農(nóng)業(yè)農(nóng)村發(fā)展研究中心山東濟南250100;3濟南市農(nóng)業(yè)農(nóng)村信息中心山東濟南250100)
農(nóng)業(yè)是國民經(jīng)濟的基礎(chǔ),農(nóng)產(chǎn)品市場是我國市場經(jīng)濟的重要組成部分,農(nóng)產(chǎn)品價格的波動直接關(guān)系農(nóng)民切身利益乃至國民生活質(zhì)量。農(nóng)產(chǎn)品短期價格受自然災(zāi)害、重大疫情等的影響,農(nóng)產(chǎn)品短期價格呈現(xiàn)波動大、非平穩(wěn)、非線性的特點,這對農(nóng)民的收入和農(nóng)產(chǎn)品市場的穩(wěn)健發(fā)展等產(chǎn)生不利的影響。因此,對農(nóng)產(chǎn)品短期價格進行預(yù)測,幫助政府做出相關(guān)決策實施宏觀調(diào)控、對農(nóng)業(yè)從業(yè)者進行指導(dǎo)、維持農(nóng)產(chǎn)品市場的穩(wěn)健具有重要作用。
根據(jù)原理不同,農(nóng)產(chǎn)品短期價格預(yù)測可以分為2種:定性預(yù)測方法和定量預(yù)測方法[1]。定量預(yù)測方法是農(nóng)產(chǎn)品短期價格預(yù)測領(lǐng)域的主流方法,又可以分為傳統(tǒng)方法和智能方法兩大類。傳統(tǒng)方法主要指計量經(jīng)濟方法,其中比較流行的有差分整合移動平均自回歸(Autoregressive Integrated Moving Average,ARIMA)模型[2-3]、自回歸條件異 方 差(Autoregressive Conditional Heteroscedasticity,ARCH)模型[4-5]、線性回歸等。經(jīng)濟計量模型普遍對非線性數(shù)據(jù)預(yù)測具有局限性,對數(shù)據(jù)使用有太多限制。智能方法中比較普遍使用的有人工神經(jīng)網(wǎng)絡(luò)[6-8]、遺傳算法[7]等。目前,在農(nóng)產(chǎn)品短期價格預(yù)測方面,遺傳算法主要是與其他預(yù)測方法組成混合模型來使用,但是遺傳算法中參數(shù)的選擇主要是靠經(jīng)驗來選擇,而參數(shù)的人為選擇很容易對預(yù)測結(jié)果造成不利影響。
總體來看,農(nóng)產(chǎn)品價格的影響因素大概可以分為2種:內(nèi)部因素和外部因素。內(nèi)部因素主要是人們按照以往的價格來定價,這使得農(nóng)產(chǎn)品價格序列表現(xiàn)為歷史相關(guān)性;而外部因素則由國民經(jīng)濟體中其他的市場變動、自然災(zāi)害、重大疫情等情況引起,這使得農(nóng)產(chǎn)品短期價格序列表現(xiàn)為波動大、非平穩(wěn)、非線性的特點。
劉峰等[9]利用農(nóng)產(chǎn)品價格時間序列的當(dāng)前值和過去值準(zhǔn)確預(yù)報未來值,以白菜價格為例,構(gòu)建了非平穩(wěn)時間序列ARIMA(p,d,q)。姚霞等[10]以南京市青椒價格為例,構(gòu)建了非平穩(wěn)時間序列ARIMA(p,d,q)模型,描述并預(yù)測時鮮農(nóng)產(chǎn)品價格的動態(tài)變化。但是ARIMA模型過于依賴數(shù)據(jù)的穩(wěn)定性,它本質(zhì)上只能捕捉線性關(guān)系,不能捕捉非線性關(guān)系,在面對非線性時間序列時,ARIMA模型則差強人意。
馬孝斌等[11]對影響生豬市場價格的幾個關(guān)鍵因素進行關(guān)聯(lián)分析,在此基礎(chǔ)上建立了生豬市場價格預(yù)測的向量自回歸模型,并運用此模型對實際數(shù)據(jù)進行了預(yù)測和分析。蘇博等[12]在對中國糧價的研究中,運用回歸分析模型分析了影響中國糧價運行的影響因子,并結(jié)合中國糧食價格定價和作用機制在不同時期的發(fā)展變化,運用逐步回歸方法構(gòu)造出了糧價預(yù)測模型。但是回歸分析對數(shù)據(jù)的異常值十分敏感,并且難以對數(shù)據(jù)的異常值和大幅波動進行處理。
羅萬純等[13]利用GARCH、GARCH-M、TARCH和EGARCH等ARCH類模型對糧食價格的波動、波動的非對稱性進行了分析,并提出了對糧食價格預(yù)測的建議。董曉霞等[8]使用雙指數(shù)平滑、Holt-W inters無季節(jié)性模型和ARCH模型對我國鮮奶零售價格短期預(yù)測進行了應(yīng)用模擬,結(jié)果顯示,ARCH模型預(yù)測結(jié)果精確度最高。但是ARCH模型對參數(shù)的限制極其嚴(yán)格,而且ARCH模型會過高估計抖動率。
牛東來等[14]以北京市2015—2017年幾個街道的雞蛋價格為數(shù)據(jù)集,以過去5 d的價格作為輸入,使用基于Levenberg-Marqardt的BP算法,有效克服了標(biāo)準(zhǔn)BP算法收斂速度緩慢、過擬合等不良現(xiàn)象,總體上對檢驗樣本的數(shù)據(jù)具有很好的擬合效果。張津等[15]利用神經(jīng)網(wǎng)絡(luò)的很強的非線性、自組織、自學(xué)習(xí)能力,選用基于時間序列的BP神經(jīng)網(wǎng)絡(luò)預(yù)測法,對豬肉的價格進行預(yù)測。但是普通神經(jīng)網(wǎng)絡(luò)雖然可以有效的擬合數(shù)據(jù),但是它并沒有對起伏尖銳的大幅的、不正常的波動數(shù)據(jù)進行處理,在這方面它存在著不足。
易利容等[16]提出了一種基于多變量分析的LSTM時序預(yù)測方法,該方法利用數(shù)據(jù)的遠(yuǎn)距離信息和多變量相關(guān)性,有效地提高了工業(yè)傳感器時序數(shù)據(jù)預(yù)測的準(zhǔn)確性。但是,農(nóng)產(chǎn)品短期價格波動頻繁,數(shù)據(jù)異常值和大幅波動對預(yù)測精度影響極大,該模型難以對其進行處理。
Kyunghyun等[17]提出了區(qū)別于LSTM的另一種門控循環(huán)單元(GRU)的門控機制,目標(biāo)是讓每個經(jīng)常性單位自適應(yīng)捕捉不同時間尺度的依賴關(guān)系,Chung等[18]也對GRU進行了具體的研究。但該思想也難以結(jié)合數(shù)據(jù)異常波動和大幅波動來對數(shù)據(jù)進行處理。
農(nóng)產(chǎn)品的價格受到內(nèi)部外部多方面的影響,呈現(xiàn)出波動大、非線性、非平穩(wěn)的特點,而劇烈起伏的波動往往對預(yù)測結(jié)果產(chǎn)生不好的影響,但是目前現(xiàn)有的方法難以對起伏尖銳的、大幅的、不正常的波動數(shù)據(jù)進行處理。對此,本文針對農(nóng)產(chǎn)品價格的歷史相關(guān)性,使用LSTM來解決,其次,針對由自然災(zāi)害等引起的大幅波動,可以使用價格波動數(shù)據(jù)來降低其影響。因此,考慮對標(biāo)準(zhǔn)的LSTM模型進行改進,提出一種新的W-LSTM模型,輸入價格數(shù)據(jù)和波動數(shù)據(jù)來訓(xùn)練模型,來減少異常價格波動和大幅波動對預(yù)測結(jié)果的影響,實現(xiàn)對農(nóng)產(chǎn)品短期價格的精準(zhǔn)預(yù)測。
由于農(nóng)產(chǎn)品的價格受到歷史價格及其價格波動的影響,因此,進行如下定義:
定義t為歷史相關(guān)天數(shù):xi表示第i天的價格數(shù)據(jù),則輸入數(shù)據(jù)為Xi={x1,x2……xt},X2={x2,x3……xt+1},以此類推,直到最后一天;價格波動使用公式Δpi=pi-pi-1來計算獲得,當(dāng)i=1時,假定前一天的數(shù)據(jù)為0,則Δw1=w1,價格波動的輸入格式為ΔPi={Δp1,Δp2……Δpt},ΔP2={Δp2,Δp3,……Δpt+1},以此類推,直到最后一天。
LSTM模型的輸入包括歷史價格數(shù)據(jù)和歷史價格波動數(shù)據(jù),即使用前t天的數(shù)據(jù)作為輸入來預(yù)測t+1天的價格。
LSTM是一種特殊的RNN結(jié)構(gòu),是由Hochreiter等[19]在1997年提出的,用于決定何時以及如何更新RNN的隱藏狀態(tài),由于其很獨特的設(shè)計結(jié)構(gòu),LSTM可以很好的解決梯度消失問題,它特別適合處理時序問題。標(biāo)準(zhǔn)的LSTM單元包括遺忘、輸入、輸出門。
W-LSTM在LSTM的基礎(chǔ)上,將其輸入信息進行了相應(yīng)的處理,將歷史價格數(shù)據(jù)和價格波動數(shù)據(jù)進行相應(yīng)的處理作為數(shù)據(jù)的輸入,并且它還包括前置門、遺忘門和輸出門(圖1),因此,它相對標(biāo)準(zhǔn)LSTM能處理更多的信息,在本研究中它的輸入包含歷史價格信息和價格波動信息。
圖1 W-LSTM結(jié)構(gòu)圖
前置門(Front gate),將價格信息和價格波動信息進行結(jié)合形成組合信息:
其中,Xi是價格信息用來分析歷史價格變動規(guī)律,Pi是由價格信息中提取出的價格波動信息單獨作為輸入,來強化模型對價格波動的處理,{Wx,Wp,bx,bp}是網(wǎng)絡(luò)參數(shù)。tanh激活函數(shù)的輸出結(jié)果在[-1,1]之間,輸出值越靠近-1,代表負(fù)波動越大;輸出值越靠近1,代表正波動越大。數(shù)據(jù)波動越大,它對W-LSTM模型的訓(xùn)練影響就越大,相反,當(dāng)波動為0時,輸入的波動數(shù)據(jù)便對模型的訓(xùn)練無影響,此時,W-LSTM模型便相當(dāng)于標(biāo)準(zhǔn)LSTM。
遺忘門(Forget gate),是控制是否“遺忘”的歷史狀態(tài)信息。
其中,ht-1是上一序列的隱藏狀態(tài),sk是本次的輸入序列。定義Wf為ht-1的偏重矩陣,Uf為sk的偏重矩陣,bf為偏置。
輸入門(Input gate)負(fù)責(zé)將當(dāng)前輸入補充到最新的“記憶”中,它包含兩個部分:第一,Sigmoid層輸出it;第二,一個Tanh層創(chuàng)建一個新的候選值向量,會被加入到狀態(tài)中。定義{Wt,Ut,bt}{Wa,Ua,ba}為輸入門的網(wǎng)絡(luò)參數(shù),則
然后更新細(xì)胞狀態(tài):
輸出門(Output gate)控制著有多少“記憶”可以用于下一層網(wǎng)絡(luò)的更新中,定義{Wo,Uo,bo}為輸出門的網(wǎng)絡(luò)參數(shù),輸出門的計算可用公式6表示:
在計算得出Ot后,還需要使用Tanh函數(shù)把記憶值壓制到[-1,1],所以最終輸出門的輸出公式為:
最后一個W-LSTM層輸出的歷史信息經(jīng)過一個預(yù)測層輸出結(jié)果y:
W-LSTM的訓(xùn)練過程如下:
按照前向計算公式(1)~(8)計算W-LSTM細(xì)胞的輸出值。
按照時間和網(wǎng)絡(luò)層級2個方向反向傳播,計算誤差項。
根據(jù)相應(yīng)的誤差項,計算每個權(quán)重的梯度,更新權(quán)重。
重復(fù)(1)~(3),得到一組最優(yōu)的參數(shù),并保留下來。
為了防止訓(xùn)練過程中過擬合,本研究使用Dropout正則化技術(shù)[20],它在2014年由Hinton教授的團隊提出。Dropout提供了一種巧妙的方式,通過減少權(quán)重連接來增加網(wǎng)絡(luò)模型的泛化能力。
本節(jié)將通過實驗評估提出的W-LSTM模型。實驗環(huán)境為:INTEL Corei5 CPU,2.80GHz;4G內(nèi)存。實驗數(shù)據(jù)為天津市2016年7月到2019年1月每天的蔬菜價格數(shù)據(jù)。每個對比實驗情況均運行10遍,取平均值。
設(shè)置了3個對比模型:
(1)W-LSTM模型,輸入歷史價格信息與價格波動信息訓(xùn)練模型,進行預(yù)測。
(2)LM算法改進的BP神經(jīng)網(wǎng)絡(luò),只將歷史價格信息作為輸入,使用前n天的價格信息預(yù)測第n+1天的農(nóng)產(chǎn)品價格。
(3)ARIMA模型,將農(nóng)產(chǎn)品價格隨著時間推移而生成的數(shù)據(jù)序列視為一個隨機序列,用一定的數(shù)學(xué)模型來近似的描述這個序列。
同時,為了檢驗W-LSTM模型的普適性,使用辣椒、大蔥、韭菜和西紅柿4種價格數(shù)據(jù)進行實驗來對3種模型進行比較。
本小結(jié)分別使用W-LSTM模型、LM算法改進的BP神經(jīng)網(wǎng)絡(luò)和ARIMA模型來進行實驗,對預(yù)測結(jié)果的準(zhǔn)確性判定公式使用的是均方誤差(MSE)和決定系數(shù)(R2)。
MSE和R2是評價模型準(zhǔn)確率的常用指標(biāo),MSE是反映估計量與被估計量之間差異程度的一種度量,MSE越小代表著模型準(zhǔn)確率越高;R2越大,自變量對因變量的解釋程度越高,自變量引起的變動占總變動的百分比高,觀察點在回歸直線附近越密集,代表模型擬合程度越高。其中n代表總樣本,Y_actual表示真實數(shù)據(jù),Y_predict代表預(yù)測結(jié)果,Y_mean代表真實數(shù)據(jù)平均值。
通過對蒜苗價格序列進行建模預(yù)測,圖2、3分別是使用W-LSTM模型和ARIMA模型得到的預(yù)測結(jié)果與實際數(shù)據(jù)的比較。很明顯,本研究提出的W-LSTM模型預(yù)測結(jié)果更理想。
圖2 W-LSTM預(yù)測結(jié)果
通過觀察圖3數(shù)據(jù)發(fā)現(xiàn),ARIMA模型的實驗結(jié)果明顯與其它模型有較大的偏差,而R2甚至小于0,這代表預(yù)測結(jié)果與原數(shù)據(jù)毫無關(guān)系。ARIMA模型在處理平穩(wěn)時間序列時表現(xiàn)良好,當(dāng)數(shù)據(jù)不平穩(wěn)時,需要通過一定的處理方式得到平穩(wěn)序列,而本實驗使用的蒜苗價格數(shù)據(jù)具有連續(xù)不變性和突變性,即在一段時間內(nèi)連續(xù)不變,然后突然垂直變化,這種特性導(dǎo)致數(shù)據(jù)在差分的時候,損失了太多信息,導(dǎo)致ARIMA模型預(yù)測效果極其不好,偏差極大。
圖3 ARIMA模型預(yù)測結(jié)果
訓(xùn)練結(jié)束后,輸入數(shù)據(jù)進行預(yù)測,W-LSTM模型和LM算法改進的BP神經(jīng)網(wǎng)絡(luò)的MSE隨著預(yù)測的進行,變化如圖4所示。W-LSTM模型的MSE為0.032,LM-BP模型的MSE為0.059,ARIMA模型的MSE為0.923。W-LSTM模型的MSE比其它模型都要小,模型準(zhǔn)確率最高;而R2比其它模型大,代表W-LSTM模型的擬合程度相對其它模型來說更高??傮w來說,兩個模型的MSE變化趨勢大致相同,WLSTM模型的MSE總體上小于LM算法改進的BP神經(jīng)網(wǎng)絡(luò)的MSE。
圖4 W-LSTM模型和LM算法改進的BP神經(jīng)網(wǎng)絡(luò)的MSE變化
輸入數(shù)據(jù)在總數(shù)據(jù)的三分之一處出現(xiàn)了大幅的波動,而此時兩模型的MSE均出現(xiàn)了短暫的增長,而W-LSTM模型的MSE波動變化要小于LM算法改進的BP神經(jīng)網(wǎng)絡(luò),這說明W-LSTM模型對處理數(shù)據(jù)的大幅波動有著更好的效果。
為驗證W-LSTM模型的普適性,又使用辣椒、大蔥、韭菜和西紅柿4種價格數(shù)據(jù)來做為輸入對三種模型進行對比實驗,實驗結(jié)果如表1、2。表中展示了3種模型分別在四種蔬菜上的預(yù)測結(jié)果評價指數(shù),可以看出,W-LSTM比其他模型擁有更好的效果,同時說明了W-LSTM模型具有良好的普適性。
通過以上實驗可以看出,W-LSTM模型準(zhǔn)確率更高,擬合程度更好,同時具有良好的普適性。綜合來看,針對農(nóng)產(chǎn)品短期價格預(yù)測問題,WLSTM是一個很好的預(yù)測模型。
表1 MSE對比
表2 R 2對比
農(nóng)產(chǎn)品價格與農(nóng)民收入息息相關(guān),也是國家決定相關(guān)政策的重要因素,對農(nóng)產(chǎn)品價格進行精準(zhǔn)預(yù)測對解決農(nóng)產(chǎn)品供需問題,促進農(nóng)業(yè)生產(chǎn)轉(zhuǎn)型、和市場經(jīng)濟持續(xù)健康發(fā)展具有重要意義。本文針對農(nóng)產(chǎn)品短期價格預(yù)測提出了一個W-LSTM預(yù)測模型,以歷史價格信息與價格波動信息作為輸入對模型進行訓(xùn)練,實現(xiàn)對農(nóng)產(chǎn)品短期價格的精準(zhǔn)預(yù)測。首先,將W-LSTM對波動較大、不平穩(wěn)的數(shù)據(jù)進行處理,實驗結(jié)果表明,W-LSTM對于該類數(shù)據(jù)具有更高的準(zhǔn)確率;其次,將W-LSTM用于其他的農(nóng)作物產(chǎn)品,實驗表明,該模型比以往通用預(yù)測模型在數(shù)據(jù)上有更好的普適性。
在未來,計劃將此模型應(yīng)用到其他具有相同特征的預(yù)測問題,讓波動較大、不平穩(wěn)不再成為預(yù)測問題上的一大障礙;同時,提高模型的適應(yīng)性,讓模型可以處理更多通用問題,例如:天氣信息、重大疫情等相關(guān)信息的處理。