山東農(nóng)業(yè)大學(xué)信息科學(xué)與工程學(xué)院 王俊美 張超 劉震
大蒜作為一種調(diào)味品,屬于小宗農(nóng)產(chǎn)品,產(chǎn)量相對較少,產(chǎn)地集中,每年的大蒜產(chǎn)量上下浮動空間大,而需求彈性不足,這種特殊的供求關(guān)系也讓大蒜吸引不少社會游資進行炒作,對價格走勢推波助瀾。2009 年“炒蒜潮”中,全國大蒜半年上漲40 多倍,很多中間商獲得巨額利潤?!八饽愫荨币辉~,也廣為消費者知曉。在投機者看來,蒜市猶如賭場。賭對了可一夜暴富,開豪車衣錦還鄉(xiāng);賭錯了則債臺高筑,因此各路投機者通過多種手段影響價格。
近些年,大蒜價格的“過山車”狀況頻現(xiàn),一方面反映出當(dāng)前農(nóng)產(chǎn)品市場的信息不對稱,一點兒風(fēng)吹草動都可能帶來行情的巨大波動;同時表明由于大蒜市場總體體量小,價格很容易遭到炒作。
研究近年來我國大蒜市場價格的運行軌跡,大蒜市場一直沒有走出暴漲暴跌的怪圈。大蒜作為一季生產(chǎn)、常年消費的農(nóng)產(chǎn)品,價格漲漲跌跌、寬幅震蕩,有其商品屬性造成的客觀性。
大蒜市場價格的穩(wěn)定,根本上取決于供求關(guān)系基本平衡,而供求關(guān)系的基本平衡,要求市場需求、種植面積和單位產(chǎn)量三個方面同時基本穩(wěn)定或同步相向變化。由于我國農(nóng)產(chǎn)規(guī)?;潭鹊停A(chǔ)薄弱,要做到這三者基本穩(wěn)定或同步相向變化,難度非常大。市場信息的不全面和混亂,讓蒜農(nóng)在決定種植的時候,沒有能力了解國際市場和國內(nèi)市場的供求關(guān)系,只能根據(jù)上一年的盈虧與否或跟風(fēng)種植。經(jīng)銷商不能準(zhǔn)確掌握全國的種植面積、產(chǎn)量和庫存,只能憑經(jīng)驗、靠感覺,價格上漲就跟風(fēng)收購、價格下跌就爭相出逃,客觀上放大了供求關(guān)系的不平衡,加劇了價格漲跌的幅度和速度。
因此為了解決大蒜價格的預(yù)測問題,很多研究人員利用不同的算法來進行價格預(yù)測,提高準(zhǔn)確率,本文在總結(jié)前人的方法的基礎(chǔ)上進行了各種方法比較。
想要研究并分析一個事物的原理時,通常的辦法就是通過觀察事物并對其建立一個數(shù)學(xué)模型。眾所周知,模型永遠(yuǎn)不是完美的,總會出現(xiàn)這樣或那樣不可免的誤差。要想研究大蒜價格的未來趨勢,就要先對大蒜的價格建立一個合適的數(shù)學(xué)模型(例如時間序列模型),但模型總會與原來的觀測值有差別,即誤差。對建模產(chǎn)生的誤差進行分析就是本文所要解決的問題。
人們總希望計算機能夠幫助我們處理各種各樣人類所不能解決的或者對于人類來說過于繁瑣的問題。從簡單的計算數(shù)據(jù),到后來的手機語音助手、攝像頭圖像識別、手機等語音識別等。人們總希望計算機可以越來越智能,在這種情形下,科學(xué)家依照人腦建立了人工神經(jīng)網(wǎng)絡(luò)。這就是本文主要用到的方法:神經(jīng)網(wǎng)絡(luò)。由于深度神經(jīng)網(wǎng)絡(luò)具有許多優(yōu)良的特性,其在建模分析中發(fā)揮巨大的作用。
在本文中先對大蒜的觀測值建立時間序列模型,得到建模所產(chǎn)生的誤差。然后利用深度神經(jīng)網(wǎng)絡(luò)研究并分析產(chǎn)生的誤差,以此來預(yù)測誤差未來的走勢。
本文數(shù)據(jù)來源于國際大蒜貿(mào)易網(wǎng)所提供的大蒜——周批發(fā)價格指數(shù)。時間從2013 年1 月4 日至2018 年1 月26 日共252 周數(shù)據(jù)。數(shù)據(jù)透視表如下:
時間 定基指數(shù)Length:252 Min. 213 Class 1st 286.4 Median 408 Mean 466.9 3rd 520.1 Max. 1103.9
為解決預(yù)測問題,本文將利用三種算法進行比較,使用傳統(tǒng)的ARIMA 進行建模分析,其次使用循環(huán)神經(jīng)網(wǎng)絡(luò)進行預(yù)測,最后使用組合模型進行分析,并利用RMSE 進行精度分析。
首先選用ARIMA 模型對時間序列數(shù)據(jù)建立時間序列模型,對大蒜的周價格進行建模以及分析。
圖1 大蒜周價格原始數(shù)據(jù)圖
圖2 ARIMA 大蒜周價格預(yù)測圖
其次使用神經(jīng)網(wǎng)絡(luò)進行建模分析,在利用神經(jīng)網(wǎng)絡(luò)對時間序列預(yù)測之前,首先要先建立神經(jīng)網(wǎng)絡(luò)。
而對于建立神經(jīng)網(wǎng)絡(luò)最為重要的問題就是如何確定輸入層和輸出層節(jié)點個數(shù)以及隱含層層數(shù)和每層節(jié)點個數(shù)。隱含層的層數(shù)以及節(jié)點數(shù)應(yīng)根據(jù)數(shù)據(jù)量以及數(shù)據(jù)類型來確定,過多的隱含層或者節(jié)點極容易造成過擬合問題。輸入層以及輸出層的節(jié)點則根據(jù)需要輸入以及輸出的數(shù)據(jù)來確定。
迭代方式為將隱含層的節(jié)點固定在區(qū)間[30,80](最少的節(jié)點數(shù)約等于數(shù)據(jù)數(shù)量,最多的節(jié)點數(shù)約等于數(shù)據(jù)的二倍)內(nèi),迭代步長為10。檢測方式為先選取大蒜價格的前90%的數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)data train 來訓(xùn)練神經(jīng)網(wǎng)絡(luò),而大蒜價格的后10%的數(shù)據(jù)作為測試數(shù)據(jù)data test 來測試神經(jīng)網(wǎng)絡(luò)。即當(dāng)神經(jīng)網(wǎng)絡(luò)訓(xùn)練完成以后,用該神經(jīng)網(wǎng)絡(luò)去預(yù)測后面的測試數(shù)據(jù)。將預(yù)測數(shù)據(jù)與實際觀測值比較得到均方差RMSE,以均方差為標(biāo)準(zhǔn)選擇合適的節(jié)點數(shù)。由于神經(jīng)網(wǎng)絡(luò)權(quán)值的更新具有隨機性,所以對于不同節(jié)點數(shù)的神經(jīng)網(wǎng)絡(luò)進行三次獨立的檢測,取得三次RMSE 的平均值,以此來減少誤差。經(jīng)過迭代得到:當(dāng)節(jié)點數(shù)分別為 30,40,50,60,70,80時用神經(jīng)網(wǎng)絡(luò)預(yù)測后百分之十(測試數(shù)據(jù))得到的均方差分別是:239.8324,219.6529,206.3730,219.8147,190.17 44,186.1080。
可以發(fā)現(xiàn)當(dāng)節(jié)點數(shù)為80 的時候,均方差最低。但從數(shù)據(jù)上來看,隨著節(jié)點數(shù)量的增加均方差就越少。所以有可能當(dāng)節(jié)點數(shù)更高時,均方差可能會越少。實際上確實是這樣,當(dāng)節(jié)點數(shù)為 90,100 時均方差為183.2896,176.7150。但由于訓(xùn)練數(shù)據(jù)較少,太多的節(jié)點數(shù)容易造成過擬合,所以不予考慮90 以及更多的節(jié)點數(shù)。所以就將節(jié)點數(shù)確定為80。節(jié)點為80 時,實驗的結(jié)果如下:
圖3 就是用LSTM模型對原始數(shù)據(jù)進行五個周預(yù)測的結(jié)果。
圖3 神經(jīng)網(wǎng)絡(luò)殘差分析對比圖
接著用上面的方式對建模產(chǎn)生的誤差進行預(yù)測。首先建立LSTM,用前90%的數(shù)據(jù)作為數(shù)據(jù)訓(xùn)練,然后測試后10%的數(shù)據(jù)。經(jīng)過迭代得到:當(dāng)節(jié)點數(shù)為200,220,240,260,280,300 時用神經(jīng)網(wǎng)絡(luò)預(yù)測后百分之十(測試數(shù)據(jù))得到的均方差為9.9943,13.2003,9.7888,9.0660,9.2775,9.8848。從數(shù)據(jù)中看當(dāng)節(jié)點數(shù)為 260 時,均方差最小。而且對周價格直接預(yù)測時節(jié)點數(shù)也是260,則將節(jié)點數(shù)確定為260。
從圖中看對最后10%的預(yù)測與實際觀測值相差不大。則認(rèn)為該LSTM神經(jīng)網(wǎng)絡(luò)建立成功。下面將所有數(shù)據(jù)用于訓(xùn)練,以及進行后五個周誤差預(yù)測,預(yù)測數(shù)據(jù)為:6.2618,-18.0115,4.4335,-12.7263,21.3424 如下圖所示。
圖4 神經(jīng)網(wǎng)絡(luò)預(yù)測圖
最 后 將 用 ARIMA 預(yù) 測 ,LSTM 預(yù) 測 以 及LSTM&ARIMA 預(yù)測放在一起比較。如下圖所示。
圖5 三種模型預(yù)測對比圖
其中紅色表示直接用ARIMA 預(yù)測;綠色表示直接用LSTM預(yù)測;藍(lán)色表示兩者一起預(yù)測。從上圖看直接用ARIMA 預(yù)測得到的數(shù)據(jù)較為平穩(wěn),兩者結(jié)合預(yù)測得到的數(shù)據(jù)圖像波動較大,直接用LSTM預(yù)測得到的數(shù)據(jù)圖像波動較介于兩者中間。兩者結(jié)合預(yù)測得到的數(shù)據(jù)更貼合前面的數(shù)據(jù),最終認(rèn)為LSTM 神經(jīng)網(wǎng)絡(luò)加ARIMA 的預(yù)測相對較好。
綜上,單純使用ARIMA 模型進行預(yù)測與單純使用神經(jīng)網(wǎng)絡(luò)進行預(yù)測其誤差都比較大,但是當(dāng)預(yù)測方法或者預(yù)測次數(shù)增加時,預(yù)測出來的值或許與真值越貼合。但具體增加多少次,用幾種預(yù)測方式,屬于另一個問題,也可以在以后改進模型的時候再加以分析。