張喜紅,王玉香
(亳州職業技術學院,安徽亳州236800)
三七號稱“金不換”,是名貴中藥材之一,具有活血化瘀、消腫止痛之功效,主產于我國云南地區。近年來,我國三七價格漲跌頻繁,波動劇烈。以亳州藥市為例,40頭規格的三七月均價從2012年800元/kg,到2015年下降為不足200元/kg,在2017年又漲回400元/kg。生產經營者迫切需要一套能夠精準預測三七價格的模型,以規避價格波動帶來的不利影響。
當前用于商品價格預測的建模方法,大致可分為兩大類,即因素分析法與基于價格時間序列的技術分析法。由于因素分析法存在影響因素數據難以全面收集,各因素因子的權重較難確定的問題,實際應用案例相對較少。基于價格時間序列的建模方法,其基本思想是認為歷史價格數據與當前價格數據存在關聯,在得到完整的歷史價格時間序列樣本的基礎上,可通過特定的數據分析技術探究歷史價格時間序列的變化規律,進而外推預測后期的價格數據。基于歷史價格時間序列分析建模的主要方法有:ARIMA算法、神經網絡算法、多種算法組合使用等方法。如:王諾等[1]提出了一種基于自回歸積分滑動平均模型的三七價格預測方法。該方法雖然具有一定的參考性,但在具體應用中對三七歷史價格數據的準確度、連續性提出了更為苛刻的要求,且ARIMA模型普遍存在無法應對價格突變的情況。馬廣慧等[2]以三七歷史售價時間序列為樣本數據,將遺傳算法用于BP神經網絡初始權值、閾值的優化,提出一種基于改進BP神經網絡的三七價格預測方法,收到了較好的實驗效果,但該方法不適用于樣本量較少的情況,在此情況下很難訓練出具有較高預測精度的模型。
基于上述背景,鑒于SVM(支持向量機)算法在小樣本學習方面具有較好的泛化能力,同時EMD(經驗模態分解)理論可將時間序列分解為不同尺度特征的模態分量進行深層次分析,本文提出了一種EMD與SVM相結合的三七價格預測方法。以40頭規格三七的歷史價格時間序列數據為例,對算法的可行性與優越性進行實例驗證。
EMD理論是黃鍔等人在1998年提出的一種對非平穩、非線性信號的自適應時頻域分析方法[3]。其核心思想是,任意非線性、非平穩信號均可依據自身的時間尺度特征將其分解成若干個本征模態分量與一個殘余分量的疊加,如式(1)所示:
(1)
式中:X(t)代表原始數據序列;imfi(t)代表各階本征模態分量;rm(t)代表殘余分量。每個本征模態分量反映了原始信號不同時間尺度的局部特征,殘余分量反映了原始信號的全局趨勢。
本征模態分量imfi(t)具有如下特征:
1)在信號的全部時長內,局部極值點的個數與過零點個數相差不超過1個;
2)在各時間點,上包絡值與下包絡值的均值為零,即信號波形局部對稱。
時間序列信號X(t)的EMD分解過程可按如下步驟實現:
1)尋找輸入信號的所有極值點,通過三次樣條插值方法擬合得到分別與極大值、極小值點對應的上包絡線e+(t)與下包絡線e-(t)。
2)原始時間序列數據X(t)與上、下包絡線的均值求差得到新的時間序列數據
(2)
3)判斷H(t)時間序列是否滿足在信號的全部時長內局部極值點的個數與過零點個數相差不超過1個,在各時間點上包絡值與下包絡值的均值為零。若不滿足,則循環執行1—2步,直到H(t)滿足本征模態分量的條件,得到原始信號的一階本征模態分量imf1(t)。
4)用原始信號減去一階本征模態分量imf1,求得去除高頻成分的新序列r1(t);對r1(t)序列重復1—4步,便可得到下一階次的本征模態分量及殘余分量。
SVM回歸理論是Vapnik等人于1995年基于統計學理論提出的一種適用于小樣本、非線性、高維度數據分類及回歸分析的模式識別方法。其與神經網絡算法相比克服了局部最優、泛化能力較弱的缺點,用較少的樣本便可得到精度較高的模型[4]。其算法的核心思想是:對于低維不可分的原始數據,在避免維數災難的前提下,通過核函數把原始數據映射至高維空間,實現數據的高維線性可分。采用SVM回歸算法進行數據分析的過程,實質上是求解輸入、輸出變量回歸面的過程,其詳細原理參見文獻[5—8]。在采用SVM算法進行回歸訓練時,核函數選擇得當與否,對于所建模型的性能至關重要。常見的核函數有RBF核函數、多項式核函數、線性核函數,分別如式(3)—(5)所示。
(3)
K(xi,yi)=((xi·yi)+1)d
(4)
K(xi,yi)=(xi·yi)
(5)
式中:xi為樣本輸入量;yi為時應的輸出量;σ為高斯核帶寬,σ>0;d取自然數。
RBF核函數通常用于高頻多變信號的映射;多項式函數一般用于緩慢變化的具有一定規律性的信號的映射;線性核函數常用于線性變化信號的映射。
實踐證明,價格時間序列大多是非線性、非平穩時間序列,原始信號序列中既有高頻多變成分、又有緩慢變化的規律性成分、同時也包含線性變化的成分。若直接將原始信號采用單一核函數進行SVM回歸訓練,將使所創建的模型容易出現誤差較大的情況。正如1.2小節所述,要想建立較高精度的預測模型,需對原始信號中不同性質的分量分類選取核函數進行SVM回歸訓練。因此,本文提出了一種基于EMD與SVM組合建模的方法,其具體實現過程如下。
1)首先對原始價格時間序列信號進行n階經驗模態分解,將其分解為n個本征模態分量與1個殘余分量。
2)對原始價格序列進行相關分析,依據當前期與各滯后期的相關度,確立各本征模態分量SVM訓練樣本的維數,即以d個滯后期作為輸入,當前期作為輸出。
3)依據各階本征模態分量與殘余分量的信號特點選取核函數,分別對各階本征模態分量及殘余分量進行SVM回歸分析。
4)將各本征模態序列與殘余序列的預測進行疊加合成,得到最終預測結果。
基于歷史價格時間序列的價格預測模型要求原始數據長期不間斷。中藥材天地網自2012年6月以來,按天公布了數百種藥材在亳州等地藥市的價格。經前期實地考證,數據真實無誤。因此,在研究中以此作為信息來源。由于手工整理數據效率低下,基于Scrapy網絡爬蟲框架構建了專用爬蟲工具[9],實現了歷史價格數據的快速采集與規范整理。三七規格較多難于統籌研究,本實驗以40頭規格的三七為代表開展研究,按月爬取2012年6月至2018年5月的亳州藥市歷史價格數據共72條,以此作為算法驗證的原始數據,其時間序列如圖1所示。

圖1 40頭規格三七的歷史價格數據
由圖1可知,40頭規格三七的歷史價格時間序列具有非平穩、非線性的特點。借助Matlab 2014平臺的EMD工具箱,編寫分解程序,將原始序列分解為4個本征模態分量和1個殘余分量,分解結果如圖2所示。
同樣借助Matlab 2014平臺對原始序列各期進行相關性分析。各滯后期與當期的相關性程度如圖3所示,分析可知當期值與各期滯后期的值長期相關,且隨著滯后階數的增加相關度呈下降趨勢,綜合考慮選取相關系數大于0.7的1—5期滯后期作輸入量來預測當期的值。
經上述分析,最終確定40頭規格三七價格預測模型的構建方案為:各階EMD分量均以當期序列值為期望輸出,滯后1—5期對應的序列值作為輸入量,分別進行SVM回歸分析,最后將各EMD分量的預測結果疊加得到最終預測值。結合各階本征模態分量的變化規律,對于高頻多變的imf1與imf2分量選取RBF核函數;對于按一定規律緩慢變化的imf3與imf4分量選用多項式核函數;對于有明顯線性特征的殘余分量res采用線性核函數。

(a) imf1分量

(b) imf2分量

(c) imf3分量

(d) imf4分量

(e) res分量圖2 imf分量及res分量示意圖

圖3 原始序列自相關分析圖
為了驗證EMD與SVM組合模型的可行性,將40頭規格三七價原始數據按一定比例劃分成訓練集與驗證集,即以2012年6月至2017年8月的價格作為訓練集,以2017年9月到2018年5月的價格作為驗證集,按2.2小節的建模方案,在Matlab 2014平臺下,進行EMD與SVM組合建模仿真實驗,并采用均方根誤差RMSE與平均百分比誤差MAPE2項評價指標進行評價。
(6)
(7)

具體的建模過程包括數據的預處理、交叉驗證參數優化、利用最優參數訓練SVM、擬合預測等步驟。最終得到此模型的預測結果評價表(表1)。由表1可知,各本征模態分量的誤差較大且均高于殘余分量誤差,本征模態分量預測結果不理想,但總體誤差并沒有因此出現明顯增大。結合圖2可知,與殘余分量相比,各本征模態分量幅度較低,故殘余分量對總體預測結果起決定作用。
為了進一步驗證EMD與SVM組合模型的優越性,將其與BP神經網絡模型、單純SVM模型及ARIMA模型進行比較。經前期的自相關、偏相關分析以及BIC信息量統計,得到ARIMA算法的最佳模型為ARIMA(3,1,1)。采用相同的訓練數據集與驗證數據集,經多次試湊實驗,最終確立的BP神經網絡算法的較優預測模型為輸入層3個神經元、隱含層6個神經元、輸出層1個神經元。輸入層與隱層之間選用sigmoid函數f(x)=1/(1+e-x)作為傳遞函數,學習率為0.3。各種方法對2017年9月到2018年5月間40頭規格三七的價格推算結果如圖4所示,各種方法的預測評價指標見表2。可知,EMD與SVM組合模型的2項預測誤差指標均低于其他單一模型,BP神經網絡模型、EMD與SVM組合模型均能對價格突變拐點做出響應,但BP神經網絡模型精度較差,單純SVM模型與ARIMA模型在穩定期的預測相對較好,但對價格突變拐點無法及時響應。

表1 EMD與SVM組合模型預測結果評價表

圖4 各種方法預測對比折線圖

評價指標EMD與SVM組合模型單純SVM模型BP神經網絡模型ARIMA模型RMSE/(元·kg-1)0.0330.0700.0690.088MAPE/%1.2312.6222.5942.902
文中以中藥材天地網40頭規格三七的歷史價格時間序列為原始實驗數據,針對傳統單一算法模型預測精度不高以及對價格突變點不能及時響應的情況,提出了一種EMD與SVM組合模型的預測方法。先對原始時間序列做4階EMD分解,依據各階EMD分量的變化規律,分別選擇相應的核函數并進行SVM回歸分析,并將各EMD分量的預測結果疊加得到最終預測值。通過對比實驗證實組合算法模型比單一模型具有明顯的優勢,EMD與SVM組合模型提高了預測精度,特別是可以較精確地預測到價格突變點。當然本文算法仍需進一步改進,如在SVM最優參數估計的方法上、EMD分解階數的確定方面均需進一步研究。