楊靜凌,唐國強,張建文
(桂林理工大學(xué) 理學(xué)院,廣西 桂林 541006)
原油作為基礎(chǔ)能源、化工原料和戰(zhàn)略物資,是當(dāng)今世界不可或缺的能源,它不僅對世界各國的政治、經(jīng)濟等方面具有極其重要的作用,而且和人們的生活息息相關(guān)。原油價格的波動對世界經(jīng)濟政治形勢具有非常重要的意義,對原油價格序列進行分析和預(yù)測是國際市場研究的一個重要領(lǐng)域。近年來,國際原油價格驟升驟降,并且原油價格序列具有非線性、非平穩(wěn)性、多尺度(多個頻率)和時變性等復(fù)雜特征,對其進行及時有效地預(yù)測面臨著巨大的困難和挑戰(zhàn)。因此,如何有效地對原油價格序列進行預(yù)測受到廣泛的關(guān)注。
目前,原油價格的預(yù)測方法較多,歸納起來主要分為3類:統(tǒng)計模型、人工智能模型和組合模型。原油價格預(yù)測研究常用的統(tǒng)計模型有回歸模型[1]、自回歸移動平均(ARIMA)模型[2]、加入季節(jié)因子的ARIMA模型[3]、指數(shù)函數(shù)模型[4]等。統(tǒng)計模型計算量小、過程簡單、易于理解,但是這些模型通常忽略原油價格序列的非線性特征,對數(shù)據(jù)的分布有著較高的要求,并且受主觀因素的影響較大,其預(yù)測精度不高。因此,傳統(tǒng)的統(tǒng)計模型具有一定的局限性。人工智能模型具有強大的自適應(yīng)、自學(xué)習(xí)和非線性能力,其對于原油價格序列的復(fù)雜特征有較好的跟隨能力。為此,有學(xué)者將人工智能模型引入原油價格預(yù)測中[5-8],預(yù)測精度得到了改善。但是單一模型無法刻畫出原油價格序列的多重特性,因此,組合模型將是一種有效的選擇。Krogh等[9]提出并證明了組合模型的預(yù)測精度高于單一模型。許南等[10]基于混沌理論下,提出利用PSO優(yōu)化BP神經(jīng)網(wǎng)絡(luò),對紐約商品交易市場的原油期貨價格數(shù)據(jù)進行預(yù)測,混沌理論下PSO-BP組合模型比單一的BP模型具有較高的擬合度和預(yù)測精度。
然而,單一模型和一般組合模型對原油價格序列非線性、非平穩(wěn)性、多尺度的刻畫能力仍無法滿足人們對預(yù)測精度的高要求。小波分析和經(jīng)驗?zāi)B(tài)分解(EMD)均能處理數(shù)據(jù)的非線性、非平穩(wěn)性和多尺度的數(shù)據(jù)特征,一些學(xué)者提出用小波分析和EMD與人工智能的組合模型來研究原油價格序列。王欣冉等[11]提出用小波包和貝葉斯推斷的最小二乘支持向量對石油價格進行預(yù)測,該方法更好地改善了石油價格預(yù)測模型的運行速度和預(yù)測精度。Islam等[12]利用EMD方法對數(shù)據(jù)序列進行分解,并將此方法與小波分解方法進行對比分析,認為EMD方法更有效。李成等[13]利用EMD和一種改進型變參數(shù)神經(jīng)網(wǎng)絡(luò)(FNN)結(jié)合對國際原油價格序列進行預(yù)測,預(yù)測效果較之前有了進一步的改善。王書平等[14]將EMD分別和ARIMA和BP模型進行組合,對美國西德克薩斯輕質(zhì)原油(WTI)價格序列進行預(yù)測,該組合模型的預(yù)測效果比單一ARIMA和BP優(yōu)越。而EMD在分解數(shù)據(jù)的過程中存在模態(tài)混疊、自適應(yīng)性差等缺點,對此,Wu等[15]提出了EEMD方法,有效彌補了EMD的不足。隨后,Zhang等[16]利用集合經(jīng)驗?zāi)B(tài)(EEMD)先將原油價格序列分解成一系列子序列,然后分別建立最小二乘支持向量機模型和廣義自回歸條件異方差模型對子序列進行預(yù)測,并取得了較好的預(yù)測效果。
以上EEMD與人工智能的組合模型對原油價格序列的預(yù)測研究已經(jīng)取得較好的結(jié)果,但仍存在以下缺陷:EEMD集合求平均的處理過程存在噪聲殘留和重構(gòu)誤差的現(xiàn)象;目前采用的人工智能模型學(xué)習(xí)精度不夠高、缺少時變特征,不能動態(tài)反映原油價格走勢特征。這些缺陷導(dǎo)致現(xiàn)有的組合模型預(yù)測精度不夠高,對此,本文中提出利用互補集合經(jīng)驗?zāi)B(tài)分解(CEEMD)和Elman-Adaboost神經(jīng)網(wǎng)絡(luò)的組合模型,對國際原油價格進行預(yù)測。
互補集合經(jīng)驗?zāi)B(tài)分解(CEEMD)是yeh等[17]在EMD和EEMD的基礎(chǔ)上,于2010年提出的一種噪聲輔助方法。該方法有效解決了EMD方法中出現(xiàn)的模態(tài)混疊問題和EEMD方法的重構(gòu)誤差問題,保留了EMD和EEMD的優(yōu)點,并能有效減弱冗余噪聲。CEEMD分解過程如下:
步驟1先用3次樣條插值來分別確定上下包絡(luò)線序列,然后計算得到上下包絡(luò)線的均值m1(t),序列(t)-m1(t)得到剩余分量h1(t):
步驟2對新的時間序列h1(t)重復(fù)步驟1,直到h1(t)滿足EMD分解的2個條件:① 局部極值點和過零點的數(shù)目相等或相差1個;②局部最大值的包絡(luò)和局部最小值的包絡(luò)平均值在任意時刻均為零。則得到第1個IMF分量,即IMF1。
步驟3用-IMF1可得到新的序列r1(t):
步驟4重復(fù)步驟1~3得到的一系列IMF分量和殘差分量Res(t):
其中J為IMF分量的個數(shù)。
步驟5對重復(fù)以上步驟,再次得到一系列IMF分量和殘差分量。
1990年,Elman提出了Elman神經(jīng)網(wǎng)絡(luò)模型。Elman是具有局部記憶單元和局部反饋連接的遞歸神經(jīng)網(wǎng)絡(luò)。該模型在BP神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上多了一層承接層,作為延遲的算子,以達到記憶的目的,系統(tǒng)從而具有時變特性,能直接動態(tài)反映數(shù)據(jù)特征,Elman神經(jīng)網(wǎng)絡(luò)分為4層,分別為輸入層、隱含層、承接層和輸出層[18]。其結(jié)構(gòu)如圖1所示。輸入層起著信號傳輸?shù)淖饔?,隱含層的傳遞函數(shù)可采用線性或非線性函數(shù),承接層用于記憶隱含層前一時刻的輸出值并返回給網(wǎng)絡(luò)的輸入,輸出層起線性加權(quán)的作用。
圖1 Elman神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖
Elman神經(jīng)網(wǎng)絡(luò)的非線性狀態(tài)空間表達式為:
其中:y、x、u、xc分別代表m維輸出結(jié)點向量、n維隱含層結(jié)點單元向量、r維輸入向量、n維反饋狀態(tài)向量;w3、w2、w1分別代表隱含層到輸出層、輸入層到隱含層、承接層到隱含層的連接權(quán)重;g(·)為輸出神經(jīng)元的傳遞函數(shù);f(·)為隱含層神經(jīng)元的傳遞函數(shù)。
Adaboost是一種迭代算法,其核心思想是先對同一個訓(xùn)練樣本訓(xùn)練不同的預(yù)測器(弱預(yù)測器),然后把這些弱預(yù)測器集合起來,構(gòu)成一個更強的預(yù)測器(強預(yù)測器)。主要步驟為:首先,給出弱學(xué)習(xí)算法和樣本空間,從樣本空間中找出m組訓(xùn)練數(shù)據(jù),每組訓(xùn)練數(shù)據(jù)的權(quán)重都是1/m。其次,再用弱學(xué)習(xí)算法迭代運算T次,每次運算后根據(jù)預(yù)測結(jié)果更新訓(xùn)練數(shù)據(jù)的權(quán)值分布,對不能預(yù)測的訓(xùn)練個體給予較大的權(quán)重,下一次迭代運算時更加關(guān)注這些訓(xùn)練個體。T次迭代之后,由弱預(yù)測器函數(shù)加權(quán)得到最終強預(yù)測器函數(shù)F[19]。Adaboost可以提高任意給定學(xué)習(xí)算法精度,不僅可以應(yīng)用于預(yù)測問題,也可以應(yīng)用于分類問題。
Adaboost可以提高Elman神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)精度。它通過Adaboost算法將Elman神經(jīng)網(wǎng)絡(luò)作為弱預(yù)測器,測試誤差超過0.1的樣本作為加強學(xué)習(xí)的樣本,得到一系列弱預(yù)測器及對應(yīng)的權(quán)重,對Elman神經(jīng)網(wǎng)絡(luò)的樣本輸出進行反復(fù)訓(xùn)練,通過Adaboost算法得到由多個Elman神經(jīng)網(wǎng)絡(luò)弱預(yù)測器組成的強預(yù)測器。Elman-Adaboost步驟如下:
1)數(shù)據(jù)獲取及網(wǎng)絡(luò)初始化。從Brent原油價格序列經(jīng)CEEMD分解出的每個分量中隨機選取m組訓(xùn)練數(shù)據(jù),初始化測試數(shù)據(jù)分布權(quán)值Dt(i)=1/m,根據(jù)樣本輸入輸出維數(shù)確定神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),初始化Elman神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值。
2)Elman弱預(yù)測器預(yù)測。在訓(xùn)練第t個弱預(yù)測器時,使用Elman神經(jīng)網(wǎng)絡(luò)對訓(xùn)練數(shù)據(jù)進行訓(xùn)練,得到預(yù)測序列g(shù)(t)的預(yù)測誤差和et:
3)計算預(yù)測序列權(quán)重。依據(jù)預(yù)測序列f(t)的預(yù)測誤差et計算序列的權(quán)重at:
4)測試數(shù)據(jù)權(quán)重調(diào)整。依據(jù)預(yù)測序列權(quán)重at調(diào)整新訓(xùn)練樣本的權(quán)重,調(diào)整公式為:
其中Bt是歸一化因子。
5)輸出Brent原油價格序列各分量的強預(yù)測器函數(shù)。經(jīng)過迭代運算T次后得到T組弱預(yù)測器函數(shù)f(gt,at),由此T組弱預(yù)測器組合得到強預(yù)測器函數(shù)F(x):
1.5.1 CEEMD-Elman-Adaboost組合模型的預(yù)測步驟
為有效地對Brent原油價格序列進行預(yù)測,使用CEEMD-Elman-Adaboost組合模型對樣本數(shù)據(jù)進行預(yù)測。CEEMD-Elman-Adaboost預(yù)測流程見圖2。
圖2 CEEMD-Elman-Adaboost預(yù)測流程框圖
步驟1對Brent原油價格序列進行CEEMD分解,得到多個IMF分量和1個殘差分量。
步驟2將分解后的各個分量分成訓(xùn)練樣本和檢驗樣本,并將樣本數(shù)據(jù)進行歸一化處理。
步驟3根據(jù)Brent原油價格序列的特征確定神經(jīng)網(wǎng)絡(luò)的輸入層節(jié)點數(shù),利用試湊法,多次運算和訓(xùn)練,根據(jù)網(wǎng)絡(luò)誤差選出最優(yōu)的隱含層節(jié)點數(shù);在訓(xùn)練預(yù)測模型時確定神經(jīng)網(wǎng)絡(luò)的其他重要參數(shù)。
步驟4用Adaboost優(yōu)化Elman神經(jīng)網(wǎng)絡(luò)系統(tǒng),對訓(xùn)練樣本進行訓(xùn)練得到預(yù)測模型;再將檢驗樣本放入預(yù)測模型進行預(yù)測。
步驟5將以上步驟各個分量的預(yù)測結(jié)果進行反歸一化,再求和,作為最終的預(yù)測結(jié)果。
1.5.2 重要參數(shù)的設(shè)定
在CEEMD分解過程中,標準偏差設(shè)為0.2,實現(xiàn)次數(shù)設(shè)為500,允許的篩選最大迭代次數(shù)設(shè)為5 000。在Elman-Adaboost模型訓(xùn)練過程中,設(shè)弱預(yù)測器個數(shù)為10,以tangsig為傳遞函數(shù),以traingdx為訓(xùn)練函數(shù),模型的最大迭代次數(shù)為3 000,誤差容限為0.000 01,學(xué)習(xí)速率為0.1,最多失敗次數(shù)為5,采用一層的隱含層和輸出層。輸入層的節(jié)點數(shù)和隱含層的節(jié)點數(shù)是神經(jīng)網(wǎng)絡(luò)的重要參數(shù),根據(jù)陳?。?0]和孫冰潔等[21]的觀點:樣本每周有5個交易日,而設(shè)置輸入層節(jié)點數(shù)為5。因此本文將輸入層節(jié)點數(shù)設(shè)為5,結(jié)合Baily等[22]和Katz[23]的研究結(jié)論,應(yīng)設(shè)置隱含層節(jié)點數(shù)為輸入層的0.75~3倍范圍,故利用試湊法,根據(jù)預(yù)測模型的網(wǎng)絡(luò)誤差選擇隱含層的最優(yōu)節(jié)點數(shù)。
為了有效地檢驗?zāi)P偷念A(yù)測效果,采用3個指標作為預(yù)測模型的評價標準,分別為均方根誤差(RMSE)、平均相對誤差(MAPE)、平均絕對誤差(MAE)。
假設(shè)yt為時間序列的實際值為預(yù)測值,n為預(yù)測的數(shù)據(jù)個數(shù)。則3個指標可用如下式子表達:
其中:RMSE反映預(yù)測值與真實值之間的偏差,數(shù)值越小,說明模型的預(yù)測效果越好;MAPE反映預(yù)測值與真實值的相差程度,MAPE值越小,說明模型的預(yù)測效果越好;MAE反映預(yù)測值誤差的實際情況,MAE值越小,說明模型的預(yù)測效果越好。
布倫特原油出產(chǎn)于北大西洋北海布倫特地區(qū),其原油期貨占世界原油期貨2/3以上的交易量,是國際市場油價的標桿。選取2015年1月1日—2019年12月31日的北海布倫特(Brent)原油日交易價格為研究對象,共1 274個數(shù)據(jù)。數(shù)據(jù)來源于美國U.SEnergy Information Administration。利用Matlab2015b和EVIEWS9.0對Brent原油價格序列數(shù)據(jù)進行分析預(yù)測。
原油日交易價格的基本統(tǒng)計量如表1所示,原油價格序列走勢圖如圖3所示。
表1 原油日交易價格基本統(tǒng)計量
由表1可知,Brent原油價格序列的標準差為11.563,數(shù)據(jù)的波動較大。樣本數(shù)據(jù)的偏度不為0,峰度均小于3,不服從正態(tài)分布。樣本的ADF值均大于1%、5%、10%的臨界值-4.949 133、-4.443 649、-4.193 627,且ADF檢驗的P值為0.449,遠大于0.05,數(shù)據(jù)非平穩(wěn)。
由圖3可以看出,Brent原油價格序列隨著時間的變化而變化,走勢曲線呈現(xiàn)大波動、非線性、不規(guī)律的趨勢。
圖3 原油價格序列走勢
綜合表1和圖3可知:Brent原油價格序列具有非正態(tài)、非線性、不平穩(wěn)、不規(guī)律的復(fù)雜特征,線性模型和一般組合模型很難對其進行有效預(yù)測。為此,應(yīng)用CEEMD分解結(jié)合Adaboost算法增強的Elman神經(jīng)網(wǎng)絡(luò)對樣本數(shù)據(jù)進行預(yù)測。
將Brent原油價格序列進行CEEMD分解,分解得到10個IMF分量和1個殘差分量。分解結(jié)果如圖4所示。
圖4 CEEMD分解結(jié)果
由圖4可以看出:每個IMF分量的振幅、頻率和周期均不相同,每個分量都有自身波動的特征。IMF分量從上至下的振幅和頻率逐漸變小,周期逐漸變長。殘差項呈現(xiàn)近似線性上升的趨勢,與Brent原始序列的總體走勢一致。IMF1~IMF5的振幅和頻率較大,周期較短。IMF5~IMF7的振幅和頻率較小,周期較長。CEEMD能將復(fù)雜的Brent原油價格序列分解為多個不同尺度的數(shù)據(jù),使每個尺度的數(shù)據(jù)都能展示自身的特質(zhì),減弱原始數(shù)據(jù)非線性、非平穩(wěn)等復(fù)雜特征,為后續(xù)的Elman-Adaboost神經(jīng)網(wǎng)絡(luò)模型提取樣本數(shù)據(jù)的有效信息奠定基礎(chǔ),進而提高模型預(yù)測精度。
利用Adaboost算法提高Elman神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)精度,對Brent原油的日交易價格進行預(yù)測。為更多地挖掘樣本數(shù)據(jù)信息,采用滾動窗口進行分析,滾動窗口大小設(shè)為5。前文對Brent原油現(xiàn)貨價格進行CEEMD分解,得到了10個IMF分量和殘差分量,在此,將各分量的前1 169個數(shù)據(jù)(2015年1月2日—2019年8月2日的數(shù)據(jù))為訓(xùn)練樣本,訓(xùn)練Elman-Adaboost預(yù)測模型,將后100個數(shù)據(jù)(2019年8月13—2019年12月31日的數(shù)據(jù))作為預(yù)測樣本進行模型預(yù)測,通過歷史數(shù)據(jù)進一步預(yù)測未來數(shù)據(jù)。各分量的預(yù)測值與真實值的對比如圖5所示。
圖5 各分量的真實值與預(yù)測值
由圖5可知:IMF1~IMF4預(yù)測值與真實值的走勢偏差較大,IMF5~IMF10和殘差項預(yù)測值與真實值的走勢基本保持一致,說明隨著原油價格序列數(shù)據(jù)的非線性和非平穩(wěn)性程度的降低,模型的預(yù)測值與真實值的偏差越小。
為了檢驗本文中模型的預(yù)測效果,將CEEMDElman-Adaboost模型與PSO-BP、CEEMD-PSO-BP、EEMD-Elman、CEEMD-Elman模型的預(yù)測結(jié)果作對比,各模型預(yù)測結(jié)果走勢如圖6所示。
圖6 各模型預(yù)測值與真實值
由圖6可知:PSO-BP、CEEMD-PSO-BP、EEMD-Elman、CEEMD-Elman對Brent原油價格序列的預(yù)測值比真實值偏低,各對比模型的預(yù)測曲線較真實值的曲線偏右,說明對比模型均存在低估Brent原油未來交易價格和預(yù)測滯后的現(xiàn)象。本文中所用方法CEEMD-Elman-Adaboost的預(yù)測曲線與真實值曲線的走勢基本一致,說明該方法有強大的跟隨能力,預(yù)測精度更高。
為了進一步檢驗本文中模型的預(yù)測效果,分別從RMSE、MAPE、MAE這3個預(yù)測評價指標對PSO-BP、CEEMD-PSO-BP、EEMD-Elman、CEEMDElman模型與CEEMD-Elman-Adaboost組合模型的預(yù)測誤差進行量化比較,有關(guān)數(shù)據(jù)如表2所示。
表2 預(yù)測誤差 %
1)以BP神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的組合模型預(yù)測結(jié)果對比。CEEMD-PSO-BP模型比PSO-BP模型的RMSE值減小58.61%,MAPE值減小59.87%,MAE值減小60.03%。說明加入CEEMD的神經(jīng)網(wǎng)絡(luò)系統(tǒng)能大大減小預(yù)測誤差。
2)以Elman神經(jīng)網(wǎng)絡(luò)為基礎(chǔ)的組合模型預(yù)測結(jié)果對比。CEEMD-Elman-Adaboost模型比EEMD-Elman模型的RMSE值減小18.07%,MAPE值減小18.57%,MAE值減小18.98%。CEEMDElman-Adaboost模型比CEEMD-Elman模型的RMSE值減小5.39%,MAPE值減小3.39%,MAE值減小2.22%。CEEMD-Elman-Adaboost模型的預(yù)測效果均優(yōu)于EEMD-Elman和CEEMD-Elman模型,說明與EEMD相比,CEEMD分解的誤差更小,CEEMD和Adaboost提高了神經(jīng)網(wǎng)絡(luò)系統(tǒng)的預(yù)測精度。
3)CEEMD-Elman-Adaboost模型與CEEMDPSO-BP模型的預(yù)測結(jié)果對比。原油價格序列的RMSE值分別減小15.34%,MAPE值分別減小9.52%,MAE值分別減小2.22%。說明CEEMDElman-Adaboost模型的跟隨能力強于CEEMDPSO-BP模型。
綜合以上分析,CEEMD-Elman-Adaboost組合模型比對比模型具有更高的預(yù)測精度,說明與BP神經(jīng)網(wǎng)絡(luò)相比,Elman神經(jīng)網(wǎng)絡(luò)的預(yù)測誤差更小,CEEMD比EEMD更有效地降低了Brent原油價格序列非平穩(wěn)、非線性帶來的預(yù)測誤差,Adaboost能提高神經(jīng)網(wǎng)絡(luò)系統(tǒng)的預(yù)測精度。
針對原油價格序列高度非線性、非平穩(wěn)性和時變性等復(fù)雜特性,提出一種能夠有效提高預(yù)測精度的新方法,以具有國際代表性的Brent原油日交易價格為研究對象進行實證分析。先利用CEEMD將Brent原油價格序列分解,再通過Adaboost算法優(yōu)化Elman神經(jīng)網(wǎng)絡(luò)對各個分量進行預(yù)測,最后重建得到Brent原油價格序列的最終預(yù)測結(jié)果。結(jié)果表明:CEEMD-Elman-Adaboost組合模型均比PSO-BP、CEEMD-PSO-BP、EEMD-Elman、CEEMD-Elman模型的預(yù)測誤差小。CEEMDElman-Adaboost組合模型有效減弱了Brent原油價格序列數(shù)據(jù)的非線性和非平穩(wěn)性,提高了Elman神經(jīng)網(wǎng)絡(luò)系統(tǒng)的學(xué)習(xí)精度,能動態(tài)反映Brent原油價格序列的特征,有效降低模型的預(yù)測誤差,是一種預(yù)測精度更高、更有效的預(yù)測方法。該研究為進一步預(yù)測原油價格序列的走向提供了有效的依據(jù),也為原油價格預(yù)測方法提供了新的思路。