劉 斌,何進榮,李遠成,韓 宏
(1.西北農林科技大學信息工程學院,陜西楊凌712100;2.農業(yè)農村部農業(yè)物聯(lián)網重點實驗室(西北農林科技大學),陜西楊凌712100;3.陜西省農業(yè)信息感知與智能服務重點實驗室(西北農林科技大學),陜西楊凌712100;4.延安大學數學與計算機科學學院,陜西延安716000;5.西安科技大學計算機科學與技術學院,西安710054)
中國是世界上最主要的蘋果生產大國,蘋果產量約占世界蘋果總產量的55%。同時,蘋果營養(yǎng)豐富[1],不僅可以調節(jié)腸胃功能,還具有降低膽固醇、增加記憶力和防癌等功效。開展蘋果市場價格的短期預測性研究,對果農規(guī)避市場風險、提高管理部門市場宏觀調控效率、切實保護消費者權益和保障蘋果市場穩(wěn)定具有重要的理論意義和應用價值。針對這一問題,學術界已經提出多種蘋果市場價格短期預測模型。然而,現(xiàn)有的預測模型都是基于串行算法實現(xiàn)的,比較耗時,且隨著大數據時代的到來,無法快速準確預測海量數據場景下的蘋果市場價格。因此,本文基于云計算平臺通過大數據切分的形式,訓練了多個神經網絡模型,并將預測結果采用求取平均權值的形式對多個神經網絡模型進行融合,在海量數據的場景下有效地利用并行機制設計和實現(xiàn)了復雜度低、并行度高的蘋果市場價格短期預測模型。
近年來,國內學者和科研人員針對農產品市場價格短期預測展開了廣泛的研究。較早被應用于農產品價格預測的模型有自回歸積分滑動平均(AutoRegressive Integrated Moving Average,ARIMA)模型[2]和組合模型[3]。劉峰等[2]以白菜月價格數據為研究對象,基于ARIMA 模型預測白菜未來的月價格,實驗結果表明,ARIMA(0,1,1)模型能很好地模擬并預測白菜月價格趨勢,為農產品市場信息準確預測提供了重要方法。王川等[3]以我國蘋果市場價格為研究對象,綜合雙指數平滑模型、Holt-Winters 乘法模型和ARIMA 模型提出了一種組合預測模型對蘋果市場價格進行預測,實驗結果表明組合模型預測的精度高于單項時間序列模型。丁慧娟等[4]以遵義豬肉價格為研究對象,通過對ARIMA 模型和灰色模型兩種模型具體步驟進行分析,實現(xiàn)了對豬肉價格的精準預測,提高了經濟效益。ARIMA、組合模型等時間序列模型單純依靠歷史價格進行預測,用不同的模型根據相同的價格信息往往得到不同的結果,未能有效利用盡可能多的有效信息。為了綜合考慮其他因素對農產品價格的影響,科研工作者提出采用多元線性回歸、神經網絡等模型對農產品價格進行預測。錢曄等[5]以蔬菜瓜果為研究對象,將菜蔬價格分為高價、較高價、適中、較便宜以及非常便宜5 類,通過聚類分析法比較測試數據與5 類目標距離對像的距離,實現(xiàn)了對蔬菜瓜果的預測。姚冠新[6]針對農產品價格序列具有非線性特征,以全國蘋果周批發(fā)價格序列為研究對象,提出一種基于經驗模態(tài)分解和支持向量機的短期預測方法,對蘋果批發(fā)價格進行了預測,實驗結果表明該預測模型能夠較好地預測農產品價格。張永禮等[7]提出一種基于模糊信息粒化和粒子群優(yōu)化支持向量機的農產品價格預測時序回歸模型,實現(xiàn)了對棉花價格的預測。Zhang等[8]研究農畜產品價格的影響因素,采用多元線性回歸的方法建立了農業(yè)和畜牧業(yè)產品價格的預測模型,該模型可以提前預警由于突如其來的自然災害引起的農作物減少和價格上升可能引發(fā)的問題。許杞剛等[9]針對農產品價格波動特點,基于改進的K 最近鄰(K-Nearest Neighbors,KNN)算法構建了農產品價格預測模型,實驗結果表明該預測模型具有較高的預測精度,滿足農產品價格預測的要求。蘇照軍等[10]結合BP(Back Propagation)神經網絡和支持向量回歸機(Support Vector Regression,SVP)的組合模型構建了一種新型農產品物價預測模型BP-SVR-BP,實驗結果表明該模型預測精度更高,能夠客觀真實地反映農產品物價變化規(guī)律。段青玲等[11]提出一種基于時間序列遺傳算法(Genetic Algorithm,GA)和SVR 的預測模型對水產品價格進行預測,實驗結果表明其預測結果同真實值相比誤差極小。羅長壽[12]利用蔬菜的價格數據,基于BP 神經網絡模型、基于遺傳算法的神經網絡模型和徑向基函數(Radial Basis Function,RBF)神經網絡模型建立了一種集成的網絡預測模型,實現(xiàn)了對蔬菜價格的預測,實驗結果表明,該集成預測模型能夠提高蔬菜市場價格的預測精度,效果比單一的預測模型更好。相比單變量回歸模型,多元線性回歸、神經網絡模型以及集成模型在農產品市場價格預測方面雖取得了較大的成功,但目前研究采用的串行算法在單臺計算機上需要很長的運算時間,導致計算代價高,無法實時響應;同時,由于單臺計算機存儲容量不足,導致存儲墻問題,無法將所有的數據載入內存進行迭代計算,串行算法無法適應基于大數據分析的蘋果市場價格預測場景。在大數據環(huán)境下針對我國蘋果產業(yè)構建分布式神經網絡模型進行市場價格短期預測還處于空白領域,是當前人工神經網絡和農業(yè)信息化領域的一項重要研究工作。
本文以陜西白水、洛川、千陽和全國蘋果市場價格為研究對象,研究影響蘋果市場價格波動規(guī)律的相關因素,選取蘋果歷史價格、替代品價格、居民消費水平和原油價格為特征,構建蘊含價格波動規(guī)律的分布式神經網絡預測模型,實現(xiàn)對蘋果市場價格的短期預測,探討適合我國蘋果市場價格短期預測方法,以探索蘋果市場價格的預見性,避免蘋果市場價格波動帶來的危害,同時也為其他農產品市場價格的短期預估提供不同的思路。
蘋果市場價格是由多種因素的影響共同決定的,經過市場調研分析,蘋果的市場價格主要與以下因素[13]相關:1)歷史價格。根據經濟學價格規(guī)律,市場未來的商品價格圍繞著歷史價格上下波動。2)替代品價格。蘋果市場價格受到供求關系的影響,根據經濟學理論替代效應,蘋果的替代品會導致消費者對蘋果的需求失衡,引起蘋果市場價格變動。3)居民消費水平。根據經濟學收入效應理論,收入水平的實際變動能引起商品價格的變動。4)運輸成本。蘋果產地不同,距離消費市場的距離不同,會引起運輸成本不一致。運輸成本主要由油價決定,因此,本文研究將油價作為一種影響因素。5)地域分布。蘋果價格的地域分布差異十分明顯,分析調研數據結果顯示,近產區(qū)或者大產區(qū)價格一般要低一些,而遠離產區(qū)或者較小的分散產區(qū)價格也會相對較高。6)季節(jié)變化。由于所處時期的不同,價格存在明顯的波動,在蘋果的成熟季節(jié)價格較低,而較遠離這個時期價格就較高。7)突發(fā)事件。自然災害等突發(fā)事件能大幅度影響價格波動,但難以計量和預知。
上述7 個因素會影響蘋果市場價格的波動,通過分析歷史數據這一因素后發(fā)現(xiàn),地域分布和季節(jié)變化對蘋果市場價格的影響蘊含在歷史數據中,所以本文研究將歷史價格作為獨立特征。同時,由于突發(fā)事件對市場價格的影響較為復雜,難以建模,在階段性的工作研究中暫不考慮。
在數據來源方面,全國蘋果價格和替代品梨價格來源于一畝田網站,居民消費水平來源于中華人民共和國統(tǒng)計局,原油價格來源于黃金網,陜西白水、洛川和千陽的蘋果價格數據由西北農林科技大學蘋果實驗站價格信息員采集上報。經過對以上數據源進行數據預處理形成實驗數據集(記錄了2016年1月8日—8月12日的相關特征數據)。
通過對蘋果市場價格的影響因素的分析和提取,最終確定影響蘋果市場價格的4 個因素為:蘋果歷史價格、替代品梨歷史價格、居民價格消費指數和原油價格,并將這4 個影響因素作為神經網絡模型輸入層的特征。在數據預處理時,蘋果歷史價格、替代品歷史價格和原油價格數值精確到小數點后兩位。居民消費水平以居民消費價格指數(Consumer Price Index,CPI)表示,數據來源于中華人民共和國國家數據網(http://data.stats.gov.cn/),由于居民消費價格指數以月度進行統(tǒng)計,因此,本文通過差值法將月度居民消費指數轉換成日度居民消費指數。此外,為了消除具有不同量綱的特征值對數據分析產生的影響,對數據進行了歸一化處理。
設定神經網絡為三層結構,即1個輸入層、1個隱藏層和1個輸出層。輸入層節(jié)點數目由實際輸入的特征數量確定。輸出層節(jié)點數由目標輸出特征個數確定為1 個節(jié)點。隱藏層節(jié)點數由經驗方法式(1)確定。
其中:m 為輸入層神經元節(jié)點數目,n 為輸出層神經元節(jié)點數目,a為0~10區(qū)間的常數。該公式的值是一個區(qū)間,具體值根據問題的復雜度和對預測精度的要求由實際測試確定,本文研究中根據實際測試結果取值為6。
根據以上分析,最終確定的蘋果市場價格神經網絡預測模型結構如圖1所示。針對神經網絡模型作以下定義:L表示神經網絡的層數;nl表示l層神經元的個數;fl(·)表示l層神經元的激活函數;W(l)∈Rnl×nl-1表示l-1 層到第l 層的權重矩陣;b(l)∈Rnl表示l-1 層到第l 層的偏置;z(l)∈Rnl表示l 層神經元的狀態(tài);a(l)∈Rnl表示l層神經元的激活值。
圖1 神經網絡預測模型Fig.1 Neural network prediction model
本文提出的分布式神經網絡模型設計如圖2 所示:分布式神經網絡模型能對大數據進行分解,同時,將訓練模型的計算量分攤在多個計算節(jié)點上并行計算以加快收斂,最后將中間結果組裝成最終解,對蘋果市場價格進行預測。
圖2 分布式神經網絡模型Fig.2 Distributed neural network model
在訓練過程中采用的分布式神經網絡算法如算法1 所示,在Spark分布式計算框架中首先在Master節(jié)點設置全局神經網絡模型參數,主要包括神經網絡結構、網絡層數、激活函數、學習率因子和網絡權重。然后,采用數據劃分策略將較大的數據集D 劃分成m 等份數據集。最后,將全局神經網絡模型結構和參數廣播至各Worker 節(jié)點。各Worker 節(jié)點接收到Master 節(jié)點傳來的權重參數后對各自神經網絡結構進行初始化,并利用式(2)和式(3)進行前饋計算,通過逐層的信息傳遞和計算,得到前饋神經網絡最后的輸出y(aL)。
假設給定一組樣本(x(i),y(i))(1 ≤i ≤N/m),前饋神經網絡的輸出為f(x|w,b),則目標函數為式(4):
為了最小化目標函數J(W,b),采用梯度下降法更新參數,如式(5)和式(6)所示:
而δl通過式(9)計算:
其中·是向量的點積運算符,表示每個元素相乘。由式(9)可以看出,第l 層的誤差項可以通過第l+1 層的誤差項計算得出,第l 層的一個神經元的誤差是所有與該神經元相連的第l+1 層的神經元的誤差項權重之和乘上該神經元激活函數的梯度。
將反向計算得出的δl代入式(7)和式(8),求取神經網絡各層的導數,并利用式(5)和式(6)對權重及偏置進行更新,最后輸出分布式神經網絡模型參數。
算法1 分布式神經網絡算法。
輸入 訓練集(xi,yi)(i=1,2,…,N),迭代次數T;
輸出 W,b。
1) 設置神經網絡模型參數(神經網絡結構、網絡層數、激活函數、學習率因子等);
2) 初始化權重:w0=0;
3) 采用數據分區(qū)策略將大數據集D 劃分成m 等份數據子集Di;
4) 在Master 節(jié)點上向各Worker 節(jié)點分發(fā)全局神經網絡模型結構及參數;
5) for t=1,2,…,T do
6) for i=1,2,…,N/m do
8) 利用式(2)、式(3)前饋計算每一層的狀態(tài)和激活值,直到最后一層;
9) 利用式(9)反向計算每一層的誤差δl;
10) 利用式(7)和式(8)求取每一層參數的導數;
11) 通過式(5)和式(6)更新參數,調整神經網絡的權值;
12) end;
13)end;
14)Master 節(jié)點匯總Worker 節(jié)點發(fā)來的參數,并求取平均值得到全局參數,并返回神經網絡模型。
神經網絡模型不僅學習規(guī)則簡單,具有較強的記憶能力和強大的自學習能力,同時具備很強的非線性擬合能力,可映射任何復雜的非線性關系[14-15];但也存在比如過度擬合、收斂速度過慢和導致局部最優(yōu)等問題。本文針對這些問題對神經網絡模型進行了優(yōu)化,優(yōu)化的策略主要包括在訓練數據集中加入隨機噪聲和采用Dropout 方法讓神經網絡模型中某些隱藏節(jié)點的連接權重系數不起作用來增強神經網絡模型的健壯性,防止網絡的過度擬合;同時,為了加快訓練速度和避免局部收斂,本文根據訓練過程中的結果來自適應地改變學習速率,從而得到最佳的分布式神經網絡模型。
本文采用Spark 大數據處理框架實現(xiàn)了基于分布式神經網絡的蘋果價格預測方法。實驗平臺由1 個控制節(jié)點(namenode)和3 個計算節(jié)點(datanode 1~3)組成,各節(jié)點之間以千兆以太網互聯(lián),Hadoop 采用2.6 版本,Spark 采用1.3 版本,其配置參考Hadoop、Spark 官方網站提供的方法進行搭建配置,實驗環(huán)境如表1 所示,其中,分布式神經網絡模型采用Scala編程語言和MapReduce編程模型實現(xiàn)。
為了驗證本文所提模型和方法的性能,采用絕對誤差和相對誤差進行評估,其定義如下:
其中:Ea 為絕對誤差,xi為單次預測值,Ti為真實值,n 為測試樣本數量;Er為相對誤差,是絕對誤差和真實值的百分比率。
基于本文提出的分布式神經網絡模型,選取2016 年8 月6 日—8 月12 日連續(xù)7 天的數據作為預測樣本,預測是對蘋果未來市場價格進行估計,但事實上本文研究采用測試集進行預測。利用真實數據值與預測值進行比較分析,進而評價神經預測模型的預測效果,以評估所提出的模型是否達到預期水平。同時,為了便于對照比較,將預測樣本的預測值和真實值連接成為曲線,各地區(qū)測試樣本結果如圖3所示。
從圖3 中可以直觀地看出,各地蘋果主產區(qū)市場價格的預測值大體上都能夠逼近蘋果的真實市場價格,絕大數預測點都能夠較好地貼近真實值,其絕對誤差始終保持在0.04元/斤之內;只有個別地區(qū)的個別數據點(樣本137、樣本271、樣本272 和樣本408)稍微有些偏差,與真實價格相差在0.05~0.06元/斤。
從圖4 可以看出,各地區(qū)的相對誤差曲線基本控制在一個較小的水平1%之下,但仍然有2個預測數據點的相對誤差超過了1%的水平。實驗結果表明,分布式神經網絡模型具有較高的預測精度,能夠使得絕大部分預測數據點都保持在較小的相對誤差范圍內。盡管個別數據點相對誤差稍微有些偏差(實際上,相對誤差最大也沒有超過1.4%),但也說明個別數據點的預測偏差不會對其他預測點產生不良的影響,從而進一步驗證了神經網絡模型具有較強的非線性擬合能力和穩(wěn)定性。
表1 實驗環(huán)境配置Tab.1 Experimental environment configration
圖3 不同地區(qū)與全國測試樣本的真實價格與預測價格曲線Fig.3 Curves of prediction price and real price of test samples from different regions and the whole country
為了更加詳細地對預測效果進行深度分析,以各產區(qū)的蘋果市場價格預測過程為例進行具體評價。從表2 中看出,陜西省白水縣蘋果市場價格預測結果非常逼近真實價格,絕對誤差絕對值超過0.02元/斤的僅有兩個預測點,其他預測點偏差相對較小,其平均相對誤差值為0.36%,處于非常小的水平。相比其他地區(qū),陜西省洛川縣蘋果市場價格預測結果的誤差最大;但絕對誤差超過0.03元/斤的也僅有兩個預測數據點,樣本270和271絕對誤差超過了0.05元/斤,相對誤差超過了1%,其他預測點偏差相對較小??傮w上來看,陜西洛川蘋果的平均絕對誤差保持在0.027 元/斤,平均相對誤差值為0.66%,滿足對蘋果市場價格的預測要求。陜西省千陽縣蘋果市場價格預測結果相對較好,只有一個預測數據點的絕對誤差絕對值超過了0.04元/斤,其他預測數據點的絕對誤差絕對值和相對誤差保持在較小的范圍之內。但在千陽蘋果市場預測時預測值均低于真實值,這說明基于分布式神經網絡模型針對低估現(xiàn)象不存在自我修正機制。全國蘋果市場價格預測結果相比其他地區(qū)預測效果最佳,絕對誤差超過0.01元/斤的僅有一個預測數據點,其他預測點偏差都非常小,幾乎可以忽略;其相對誤差相應地也處于非常小的水平,其平均相對誤差僅為0.28%,這樣的預測結果近乎于“完全精準預測”。
圖4 各地區(qū)和全國數據的相對誤差對比Fig.4 Comparison of relative error of different regions and the whole country
表2 各地區(qū)與全國的蘋果價格預測結果與真實值Tab.2 Prediction results and true values of apple price in different regions and the whole country
本文在海量數據場景下提出了一種基于分布式神經網絡的蘋果市場價格預測方法,在云計算平臺下通過數據并行和規(guī)約求和的形式,訓練了多個神經網絡模型,并運用求取平均權值的形式對多個預測模型進行融合,為大數據環(huán)境下如何充分有效地利用云計算構建預測模型提供了一種思路。但本文研究目前僅僅考慮了可定量分析的相關因素,未考慮其他難以定量的因素,如:突發(fā)事件、金融危機、自然災害、生產成本等。由于這些因素的不可預知性和難以定量分析,在本文的階段性研究中沒有考慮,在下階段工作中有望將這些因素量化分析。