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