張順利,王小東,李艷翠
(1.河南科技學(xué)院信息工程學(xué)院,河南新鄉(xiāng)453003;2.山東聊城第二中學(xué),山東聊城252000)
蘋果是世界上最受歡迎的水果之一,中國的蘋果種植面積和產(chǎn)量均占世界50%以上.但是由于受生產(chǎn)成本、市場供求關(guān)系、政策導(dǎo)向以及國際市場變動等因素的影響,蘋果的市場價格時常出現(xiàn)較大的波動.蘋果價格的波動不僅會影響百姓的生活質(zhì)量和果農(nóng)收入,還會影響市場其他農(nóng)產(chǎn)品的價格走勢,進(jìn)而引發(fā)社會問題.
從相關(guān)文獻(xiàn)來看,早期農(nóng)產(chǎn)品價格的預(yù)測方法主要采用基于計量統(tǒng)計的時間序列預(yù)測方法,根據(jù)農(nóng)產(chǎn)品歷史價格數(shù)據(jù)建立統(tǒng)計模型,預(yù)測其未來的價格走勢.唐占彪等[1]使用甘肅省重點農(nóng)產(chǎn)品市場信息采集分析系統(tǒng)的價格監(jiān)測數(shù)據(jù),采用乘法原則對馬鈴薯等蔬菜價格序列進(jìn)行季節(jié)分解,并根據(jù)季節(jié)調(diào)整后的蔬菜平均價格建立了ARIMA 模型,完成了馬鈴薯等22 種大眾蔬菜2015 年各月份的整體平均價格預(yù)測.韓雯[2]以貴州省辣椒的月價格為實驗數(shù)據(jù),使用季節(jié)分解方法剔除季節(jié)因素,形成新的時間數(shù)據(jù)序列,構(gòu)建的非平穩(wěn)時間序列ARIMA 預(yù)測模型,能較好地預(yù)測辣椒的月價格趨勢,將價格的預(yù)測值與實際值的相對誤差控制在9%以內(nèi).劉峰等[3]根據(jù)白菜的歷史價格數(shù)據(jù),構(gòu)建非平穩(wěn)時間序列ARIMA(p,d,q)模型預(yù)測白菜未來的月價格.這種基于統(tǒng)計思想的時間序列模型,單純依靠農(nóng)產(chǎn)品的歷史價格為研究對象進(jìn)行數(shù)據(jù)的分析與預(yù)測,未考慮影響價格的多種因素,而且這種預(yù)測方法在建模之前需要對數(shù)據(jù)進(jìn)行差分、分解等工作,使預(yù)測的過程更加復(fù)雜.近年來,神經(jīng)網(wǎng)絡(luò)模型由于其可以自動學(xué)習(xí)數(shù)據(jù)特征、靈活考慮多種因素等優(yōu)點得到了廣泛應(yīng)用.賈寧等[4]采用雙重注意力機(jī)制與長短期記憶神經(jīng)網(wǎng)絡(luò)相結(jié)合的方式,選擇天氣變化作為價格影響因素的特征,預(yù)測了未來一周內(nèi)蔬菜類產(chǎn)品的價格指數(shù).劉雪等[5]研究雞蛋價格序列特征后,根據(jù)其非線性、季節(jié)性和周期性變化的特征,提出了一種基于時間序列季節(jié)性分解和長短期記憶網(wǎng)絡(luò)的組合預(yù)測模型,首先使用STL 方法分解雞蛋價格,將價格中的趨勢成分及剩余成分用LSTM 模型進(jìn)行預(yù)測,其預(yù)測結(jié)果表明模型的預(yù)測能力優(yōu)于ARIMA 模型.但目前在蘋果的價格預(yù)測方面,還未有比較成熟的神經(jīng)網(wǎng)絡(luò)模型應(yīng)用.基于此,本文構(gòu)建了一種基于LSTM的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行蘋果價格的預(yù)測.為了驗證預(yù)測模型的性能,本文采用先前比較成熟的差分整合移動平均自回歸(Autoregressive Integrated Moving Average Model,ARIMA)模型作為基線,進(jìn)行了對比實驗,實驗結(jié)果驗證了神經(jīng)網(wǎng)絡(luò)預(yù)測模型的有效性.
選取豫南陽果品批發(fā)交易中心的山東煙臺紅富士價格為研究對象,分析影響蘋果市場價格波動的相關(guān)因素,選取蘋果歷史價格、替補(bǔ)水果(香蕉、橙子)價格、居民消費指數(shù)為實驗特征,將時間序列問題轉(zhuǎn)化為可監(jiān)督學(xué)習(xí)問題,構(gòu)建基于LSTM的神經(jīng)網(wǎng)絡(luò)價格預(yù)測模型,實現(xiàn)對蘋果市場價格的預(yù)測.
蘋果市場價格的波動是由多種因素引起的,根據(jù)市場調(diào)研和相關(guān)經(jīng)濟(jì)規(guī)律研究學(xué)者[6-8]的研究文獻(xiàn)分析,我國蘋果的市場價格主要與以下5 個因素相關(guān):
(1)蘋果的歷史價格.計量經(jīng)濟(jì)學(xué)家們指出,商品的歷史價格蘊(yùn)含著豐富的信息,將會對未來商品的價格產(chǎn)生周期性或者波動性影響.
(2)替補(bǔ)水果價格.根據(jù)相關(guān)學(xué)者的研究成果分析,蘋果的替補(bǔ)水果的價格會影響對蘋果的市場需求量,也會引起蘋果的市場價格波動[9].本文使用回歸模型,采用脈沖響應(yīng)函數(shù)和方差分解方法對蘋果的替補(bǔ)品香蕉、葡萄、橙子等進(jìn)行分析實驗.根據(jù)實驗結(jié)果選定香蕉、橙子的價格為蘋果價格預(yù)測特征的組成部分.
(3)居民消費水平.商品經(jīng)濟(jì)學(xué)的收入效應(yīng)理論指出,居民消費水平的變化影響著居民的購買能力,購買能力的變化會引起商品價格的波動.
(4)季節(jié)性周期變化.生鮮水果由于所處時期的不同,價格會存在明顯的波動.預(yù)測日期的月份、日期以及是星期幾等因素都會對蘋果的價格產(chǎn)生影響.另外在蘋果的成熟季節(jié)價格會偏低,而大型節(jié)日價格就會有增高的波動.
(5)突發(fā)事件.自然災(zāi)害、流行疾病等突發(fā)事件能引起商品市場價格的大幅度波動,如最近的新冠肺炎,水果生鮮的價格都有很大的波動.但是這些事件對市場價格的影響較為復(fù)雜,至今沒有比較可行的建模方法,因此在現(xiàn)階段的研究工作中不予考慮.
根據(jù)影響蘋果價格因素的學(xué)習(xí)分析結(jié)果和蘋果價格的季節(jié)性、周期性波動特征,構(gòu)建了圖1 所示的基于LSTM的蘋果價格預(yù)測模型,模型由特征輸入層、雙向長短期記憶層、結(jié)果輸出層3 個層次組成.將原始特征數(shù)據(jù)拼接成一個特征向量,拼接后的特征向量用作雙向長短時記憶層的輸入,經(jīng)過該層計算后輸出蘋果的價格表示,最后在結(jié)果輸出層對價格序列進(jìn)行整體優(yōu)化,輸出下一個時間點蘋果的預(yù)測價格.
圖1 基于LSTM 的蘋果價格預(yù)測模型Fig.1 Apple price forecasting modelbased on LSTM
1.2.1 特征輸入層 根據(jù)影響蘋果價格的因素分析結(jié)果,設(shè)計特征輸入層如圖2 所示,輸入特征向量由歷史價格向量、替補(bǔ)水果信息向量和居民生活消費指數(shù)向量3 個部分拼接組成,因為蘋果的周期性、季節(jié)性特點可以在歷史日期中提取,所以和歷史價格特征放到一起,不再單獨列出.
圖2 特征輸入層向量組成Fig.2 Feature vectors in input layer
圖2 中,歷史價格向量包括:日期的年份+日期的月份+日期信息的天數(shù)+星期幾(一周中的第幾天)+價格+是否是法定假日.例如日期為“2019-03-02”,則歷史價格向量為:2019+03+02+6(表示周六)+當(dāng)天蘋果價格+“否”,共6 個特征.
可替補(bǔ)性水果(香蕉、橙子)的信息向量包括:香蕉上個月本日價格+香蕉上個月均值價格+橙子上個月本日價格+橙子上個月均值價格4 項內(nèi)容.居民消費價格指數(shù)向量包括:去年居民消費生活指數(shù)+上個月份居民消費指數(shù)兩部分?jǐn)?shù)據(jù).特征輸入層向量維度為12 維.
為了減少特征數(shù)據(jù)數(shù)值的差異性,對所有的特征均按公式(1)進(jìn)行了了歸一化處理.
式(1)中:X 表示原始的特征數(shù)據(jù),Y 表示歸一化處理之后的結(jié)果數(shù)據(jù),Xmax和Xmin分別表示原始特征數(shù)據(jù)列中的最大值和最小值.
1.2.2 雙向長短期記憶層 雙向長短期記憶網(wǎng)絡(luò)(BLSTM)是一種類似于循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的網(wǎng)絡(luò)模型,和循環(huán)神經(jīng)網(wǎng)絡(luò)的區(qū)別在于它使用LSTM結(jié)構(gòu)單元[10]替代RNN 網(wǎng)絡(luò)中的隱藏單元.基于長短期記憶網(wǎng)絡(luò)的神經(jīng)網(wǎng)絡(luò)模型由于克服了傳統(tǒng)RNN 模型中存在的梯度爆炸或者梯度消失問題[11-12],被廣泛地應(yīng)用到了很多領(lǐng)域.LSTM單元通過輸入門、記憶單元、遺忘門來控制參與網(wǎng)絡(luò)中的信息繼續(xù)參與計算或者被丟棄.其計算公式為
在一個輸入的價格特征向量序列{x1,x2,…xn},t∈1,2,…n 中,每一個時間點的特征數(shù)據(jù)對應(yīng)一個LSTM單元,其輸入為{xt,ht-1,ct-1}3 個變量,輸出為{ht,ct}.公式中的σ 是激活函數(shù),it、ft、ot、ct分別表示神經(jīng)網(wǎng)絡(luò)在t 時刻的輸入門、忘記門、輸出門和記憶門;wi、wf、wc表示不同的權(quán)重矩陣,bi、bf、bc為偏置向量,這兩組值通過神經(jīng)網(wǎng)絡(luò)訓(xùn)練學(xué)習(xí)得到.在每一個t 時刻,ft計算哪些沒用的特征信息在當(dāng)前的單元中將被放棄掉,it決定哪些新的輸入特征應(yīng)當(dāng)被存放在當(dāng)前的記憶單元ct中,ot表示哪些信息將被輸出到當(dāng)前的ht中.t 時刻LSTM的輸出向量{ht,ct},結(jié)合t+1 時刻的特征向量xt+1輸入到下一個LSTM單元.
如圖1 所示,BLSTM網(wǎng)絡(luò)首先對每個輸入的價格特征向量采用從左到右地順序(Forward)計算,然后再按照從右到左地順序(Backward)循環(huán)回來進(jìn)行計算,每一個t 時刻的價格特征向量經(jīng)過計算后得到兩種不同的隱藏層向量表示:和這兩個向量的拼接得到雙向長短時記憶層的輸出,其計算公式為
式(3)中:tanh 為激活函數(shù),wh為權(quán)重矩陣,bh表示偏置向量.
1.2.3 結(jié)果輸出層 對雙向長短期記憶網(wǎng)絡(luò)層計算的結(jié)果進(jìn)行整體序列優(yōu)化,輸出下一個時刻的預(yù)測價格.
由于要進(jìn)行蘋果的月價格、周價格和日價格數(shù)據(jù)預(yù)測,訓(xùn)練了3 個神經(jīng)網(wǎng)絡(luò)模型,每個神經(jīng)網(wǎng)絡(luò)模型的輸入序列長度各不相同,月價格預(yù)測模型序列輸入長度為12,周價格預(yù)測模型序列的輸入長度為48,日價格預(yù)測模型序列輸入長度為30.選用平均絕對誤差(MAE)為損失函數(shù),每個模型選取的最優(yōu)向量維度和學(xué)習(xí)率也各不相同,在結(jié)果部分有詳細(xì)地說明.對于每次LSTM模型訓(xùn)練,我們通過每次迭代的損失函數(shù)對訓(xùn)練效果做初步的判斷.隨著訓(xùn)練進(jìn)行,損失函數(shù)逐漸減少,最后得到最優(yōu)值,損失函數(shù)趨于平穩(wěn).
研究的程序開發(fā)環(huán)境為Pycharm Community Edition(python 3.7),使用Tensorflow 提供的LSTM神經(jīng)網(wǎng)絡(luò)包.訓(xùn)練過程中,采用隨機(jī)梯度下降模型AdaGrad,為了減輕模型的過度擬合,在BLSTM層的輸入輸出部分增加了Dropout.
研究中所使用的蘋果、香蕉和橙子的價格數(shù)據(jù)由作者在全國農(nóng)產(chǎn)品商務(wù)信息平臺上(http://nc.mofcom.gov.cn/)上爬取的豫南陽果品批發(fā)交易中心的價格數(shù)據(jù)得到.居民消費指數(shù)數(shù)據(jù)從中華人民共和國統(tǒng)計局網(wǎng)站(http://www.stats.gov.cn/)上查詢得到.本次試驗選取的蘋果歷史數(shù)據(jù)的時間范圍為2016年4 月到2020 年4 月,價格數(shù)據(jù)為1 152 條,其價格單位為元/500 g.
本實驗選取時間序列數(shù)據(jù)預(yù)測中常用的4 個客觀評價標(biāo)準(zhǔn),進(jìn)行數(shù)據(jù)分析.
(1)平均絕對誤差(MAE,),由式(4)計算
(2)均方誤差(MSE,),由式(5)計算
(3)均方根誤差(RMSE,),由式(6)計算
(4)平均絕對百分比誤差,由式(7)計算
本文進(jìn)行了3 組蘋果價格的預(yù)測實驗,分別為月價格、周價格和日價格數(shù)據(jù)預(yù)測.
2.4.1 蘋果月價格預(yù)測 在價格預(yù)測模型中,LSTM 網(wǎng)絡(luò)的輸入向量大小設(shè)置為100 維,學(xué)習(xí)率選取為0.03,正則化參數(shù)為10-8,Dropout 值為0.3,進(jìn)行了蘋果的月價格預(yù)測,預(yù)測結(jié)果見圖3.
圖3 月價格數(shù)據(jù)預(yù)測和實際數(shù)值對比Fig.3 Comparison of the forecast and actual value of the monthly price data
2.4.2 蘋果周價格預(yù)測結(jié)果 使用價格預(yù)測模型,將LSTM網(wǎng)絡(luò)的輸入向量大小設(shè)置為300 維,學(xué)習(xí)率選取為0.03,正則化參數(shù)為10-8,Dropout 值為0.5,進(jìn)行了蘋果的周價格預(yù)測,預(yù)測結(jié)果見圖4.
圖4 周價格數(shù)據(jù)預(yù)測和實際數(shù)值對比Fig.4 Comparison of the forecast and actual value of the weekly price data
2.4.3 蘋果日價格預(yù)測結(jié)果 使用價格預(yù)測模型,將LSTM網(wǎng)絡(luò)的輸入向量大小設(shè)置為200 維,學(xué)習(xí)率選取為0.05,正則化參數(shù)為10-8,Dropout 值為0.3,進(jìn)行了蘋果的日價格預(yù)測,預(yù)測結(jié)果見圖5.
圖5 日價格數(shù)據(jù)預(yù)測和實際數(shù)值對比Fig. 5 Comparison of the forecast and actual value of the day price data
2.4.4 統(tǒng)計分析 將基于LSTM的神經(jīng)網(wǎng)絡(luò)模型的預(yù)測數(shù)據(jù)與傳統(tǒng)的ARIMA 模型預(yù)測數(shù)據(jù)進(jìn)行統(tǒng)計分析,得到的比較結(jié)果見表1.
表1 模型預(yù)測結(jié)果誤差對比Tab.1 Error comparison of model prediction results
由表3 可知,基于LSTM的神經(jīng)網(wǎng)絡(luò)預(yù)測模型除了個別數(shù)據(jù)的個別評價標(biāo)準(zhǔn)外,均優(yōu)于ARIMA 模型.因為使用LSTM神經(jīng)網(wǎng)絡(luò)模型,可以兼顧數(shù)據(jù)序列的平穩(wěn)和非平穩(wěn)特性特征,LSTM通過對數(shù)據(jù)的學(xué)習(xí)訓(xùn)練,可以較好地學(xué)習(xí)到非平穩(wěn)時間序列的隱含特征,提高預(yù)測的準(zhǔn)確度.
本文以豫南陽果品批發(fā)交易中心的煙臺紅富士價格為研究對象,分析了當(dāng)前農(nóng)產(chǎn)品價格預(yù)測的相關(guān)理論和技術(shù),在此基礎(chǔ)上提出并構(gòu)建了基于LSTM神經(jīng)網(wǎng)絡(luò)的蘋果價格預(yù)測模型.研究沿用以往的分析方法確定了影響蘋果價格的特征,然后對影響價格的特征進(jìn)行向量化處理,輸入BLSTM網(wǎng)絡(luò),計算出蘋果未來的預(yù)測價格,實驗總共訓(xùn)練了3 個預(yù)測模型.經(jīng)測試和統(tǒng)計分析證明:本文的神經(jīng)網(wǎng)絡(luò)模型既沒有損失細(xì)節(jié)信息,也沒有損失整體趨勢的價格信息,提高了預(yù)測價格的準(zhǔn)確度.
在未來的工作中,我們將針對現(xiàn)有的特征做進(jìn)一步的實驗分析,細(xì)化調(diào)整各個因素之間的權(quán)重,優(yōu)化模型參數(shù),以降低預(yù)測數(shù)據(jù)與真實值之間的誤差.