余 洋,萬定生
(河海大學(xué) 計(jì)算機(jī)與信息學(xué)院,江蘇 南京 211100)
在大數(shù)據(jù)時(shí)代,數(shù)據(jù)已經(jīng)成為重要的資源。面對海量的數(shù)據(jù),對其進(jìn)行有效的處理和分析變得非常重要[1]。而時(shí)間序列數(shù)據(jù)挖掘(time series data mining,TSDM)已成為數(shù)據(jù)挖掘領(lǐng)域的重要分支,主要通過不同的數(shù)據(jù)挖掘技術(shù)[2]分析時(shí)間序列的局部特征從而挖掘出時(shí)間序列內(nèi)在的規(guī)律,這將有助于實(shí)現(xiàn)時(shí)間序列的異常檢測、預(yù)測等目的[3]。
而具有隨機(jī)性、突變性的復(fù)雜時(shí)間序列如水文時(shí)間序列的預(yù)測已成為國際熱點(diǎn)。此類時(shí)間序列預(yù)測方法主要有三類:一是定性預(yù)測方法,根據(jù)預(yù)測對象的特性、狀態(tài),采用類推對比、專家打分等方法來預(yù)測序列;二是因果關(guān)系預(yù)測法,對目標(biāo)時(shí)間序列和影響因子序列基于因果關(guān)系進(jìn)行統(tǒng)計(jì)預(yù)測;三是時(shí)間序列預(yù)測法,根據(jù)時(shí)間序列自身變化規(guī)律進(jìn)行預(yù)測,常見的有自回歸模型(AR)、自回歸滑動模型(ARMA)[4]、人工神經(jīng)網(wǎng)絡(luò)(ANN)、相空間模型、灰色理論和支持向量機(jī)(SVM)等。Kottegoda[5]提出在線性隨機(jī)模型中ARMA對Vanern河流量進(jìn)行了預(yù)測,但其在非平穩(wěn)序列中的表現(xiàn)不夠精確。Wei Shouke等[6]將小波神經(jīng)網(wǎng)絡(luò)應(yīng)用于江河月徑流量擬合和預(yù)測上,得出WNN相對于后者能顯著增加預(yù)測精度的結(jié)論,但其對多變化的流量精度仍有缺陷。
由于這些模型的適用范圍不同,而此類復(fù)雜時(shí)間序列既包含線性成分又含有非線性成分,對單一模型的優(yōu)化不能完全克服其局限性[7]。針對此問題,文中提出了基于WNN-SVM組合的水文時(shí)間序列預(yù)測模型。
支持向量機(jī)(support vector machine,SVM)是一種基于統(tǒng)計(jì)學(xué)習(xí)理論構(gòu)建的典型神經(jīng)網(wǎng)絡(luò),它的基本思想是使用一個(gè)線性模型解決非線性的問題,將一些非線性的輸入空間映射到高維的特征空間。利用最佳的超平面構(gòu)造邊界,使決策類之間實(shí)現(xiàn)最大分隔,在新的空間構(gòu)建一個(gè)線性模型表示原來空間的非線性決策邊界,最后轉(zhuǎn)化為一個(gè)凸二次規(guī)劃問題進(jìn)行求解。在線性可分的情況下,二元決策類分離表示為:
y=ω0+ω1x1+ω2x2
(1)
其中,y為輸出向量,xi為特征值,ωi為平面的權(quán)重值。
支持向量機(jī)將輸入轉(zhuǎn)換成高維特征空間,以構(gòu)造一個(gè)線性模型來實(shí)現(xiàn)非線性類邊界。在非線性可分的情況下,高維的最大超平面邊界方程可以表示為:
(2)
其中,K(x(i),x)為核函數(shù)。輸入空間中產(chǎn)生的不同類型的支持向量機(jī)有不同的核函數(shù),常見的核函數(shù)有多種,例如多項(xiàng)式核和高斯徑向基核等。
1.2.1 小波變換
小波(wavelet)是一種特殊的長度有限,平均值為0的波形。它的“小”體現(xiàn)在時(shí)域具有緊支性或近似緊支性,它的“波”體現(xiàn)為正負(fù)交替的波動性,即直流分量為零。小波變換(WT)利用信號在一簇基函數(shù)構(gòu)成的函數(shù)空間的投影表征該信號。在低頻部分具有較低的時(shí)間分辨率和較高的頻率分辨率,在高頻部分具有較高的時(shí)間分辨率和較低的頻率分辨率,能實(shí)現(xiàn)信號的多分辨率分析,得到信號的等價(jià)描述[8]。小波變換可分為連續(xù)小波變換(CWT)和離散小波變換(DWT)[9]。
(3)
(4)
其中,a是尺度因子;b是位移因子。
定義2:任意L2(R)空間中的一維信號f(t)作離散小波變換的表達(dá)式為:
Wf(j,k)≤f(t)
(5)
1.2.2 緊致型小波神經(jīng)網(wǎng)絡(luò)
小波神經(jīng)網(wǎng)絡(luò)(WNN)從結(jié)構(gòu)上分為兩大類[10],一類是小波變換與神經(jīng)網(wǎng)絡(luò)松散耦合形成的松散型小波神經(jīng)網(wǎng)絡(luò)。整個(gè)系統(tǒng)由小波變換和神經(jīng)網(wǎng)絡(luò)以串聯(lián)形式構(gòu)成。小波分解作為神經(jīng)網(wǎng)絡(luò)的前置處理手段[11]。另一類是小波變換與神經(jīng)網(wǎng)絡(luò)緊密融合形成的緊致型小波神經(jīng)網(wǎng)絡(luò)[12]。文中采用的是第二種,其基本思想是以小波分析中的小波基函數(shù)代替BP神經(jīng)網(wǎng)絡(luò)中的Sigmoid族激活函數(shù),并以小波函數(shù)的尺度因子置換輸入到隱含層的權(quán)值,以位移因子置換隱含層閾值。緊致型WNN由輸入層、輸出層和隱含層組成,信號前向傳播,誤差反向傳播。其表達(dá)式為:
(6)
具有隨機(jī)性、突變性的復(fù)雜時(shí)間序列如水文時(shí)間序列的確定性成分、周期性成分和非確定性因素,使得單一模型及其改進(jìn)對預(yù)測精度的提升空間十分有限。傳統(tǒng)時(shí)間序列模型對序列平穩(wěn)性要求較高且預(yù)測效果不盡人意,對此提出一種基于小波變換的組合預(yù)測模型。與傳統(tǒng)的以權(quán)系數(shù)最優(yōu)為目標(biāo)的組合預(yù)測方法不同,通過引入小波變換,使得序列的高低頻成分分離,針對高低頻序列特征,分別采用不同的預(yù)測算法。以水文時(shí)間序列為例,其建模流程如圖1所示。
復(fù)雜時(shí)間序列普遍波動頻繁且差值較大,因此首先有必要對時(shí)間序列進(jìn)行歸一化處理以減小模型誤差。處理數(shù)據(jù)的歸一化方法通常為線性函數(shù)歸一化(Min-Max scaling)和0均值標(biāo)準(zhǔn)化(Z-score standardization),但由于水文時(shí)間序列數(shù)據(jù)在個(gè)別處峰值極高,采用線性函數(shù)歸一化方法會導(dǎo)致大多數(shù)數(shù)據(jù)處于一個(gè)極低的值,損害模型的訓(xùn)練,甚至導(dǎo)致梯度消失或爆炸;而0均值標(biāo)準(zhǔn)歸一化方法則要求原始數(shù)據(jù)的分布近似為高斯分布,否則歸一化的效果會變得很糟糕。
圖1 組合預(yù)測模型建模流程
因此,提出一種基于均值的歸一化方法,經(jīng)驗(yàn)證其有效規(guī)避了梯度消失和梯度爆炸,具有較好的訓(xùn)練效果。歸一化公式如下:
(7)
算法思想:在對時(shí)間序列進(jìn)行預(yù)處理后,通過相空間重構(gòu)的方法將低維時(shí)間序列向高維轉(zhuǎn)換。隨后對時(shí)間序列信號進(jìn)行小波分解,有助于發(fā)揮小波的多分辨率分析優(yōu)勢,同時(shí)也是組合模型并行預(yù)測的必要步驟。結(jié)合子序列的波形特征和波動頻率,針對波動性很高的高頻小波變換序列,用WNN模型對其進(jìn)行擬合預(yù)測,能有效提高預(yù)測的準(zhǔn)確性。針對包含趨勢項(xiàng)和周期項(xiàng)的低頻尺度變換序列,利用SVM模型預(yù)測其未來值,同時(shí)能降低計(jì)算量。最后將子模型輸出的預(yù)測值序列進(jìn)行小波重構(gòu),得到預(yù)測值。
算法步驟:
(1)對原始復(fù)雜時(shí)間序列進(jìn)行去噪、均值歸一化等預(yù)處理。
(2)對清洗后的時(shí)間序列數(shù)據(jù)進(jìn)行小波分解,得到不同頻段的小波。小波分解函數(shù)通常按照自相似原則和小波支撐集長度進(jìn)行選擇。大部分應(yīng)用選擇支撐集長度為5~9的小波,因?yàn)橹ЪL會產(chǎn)生邊界問題,支集太短消失矩太低,不利于信號能量的集中。朱躍龍等[13]采用db10小波作為流量預(yù)測時(shí)的分解小波,因Daubechies(db)小波適合提取時(shí)間序列躍變特征,而實(shí)驗(yàn)流域流量序列細(xì)節(jié)波動與db小波非常相似,因此選擇db10小波作為原始時(shí)間序列分解的小波基,分解層級為6。分解算法見算法1,重構(gòu)算法見算法2。
算法1:Signal_Wavedec(db,sourceData)。
輸入:db:過濾器類型;sourceData:歸一化時(shí)間序列。
輸出:cA[n]:分解后的近似部分序列-低頻部分;cD[n]:分解后的細(xì)節(jié)部分序列-高頻部分。
for(n=0 to decLen) do
cA[n]=0,cB[n]=0;//遍歷小波變換結(jié)果序列長度,初始化分解序列
for(k=0 to filterLen) do
p=2*n-k;
if((p<0)&&(p>=-filterLen+1))
tmp=sourceData[-p-1];
else if((p>dataLen-1)&&(p<-dataLen+filterLen-2))
tmp=sourceData[2*dataLen-p-1];
else if((p>=0)&&(p tmp=sourceData[p]; else tmp=0;//信號邊沿對稱延拓 cA[n]+=m_db.lowFilterDec[k]*tmp; cD[n]+=m_db.highFilterDec[k]*tmp; end for end for 算法2:Signal_Waverec(cA,cD,db)。 輸入:db:過濾器類型;cA,cD:分解后的低頻高頻序列。 輸出:recData:重構(gòu)后輸出的數(shù)據(jù)。 for(n=0 to recLen) do recData[n]=0//遍歷小波變換結(jié)果序列長度,初始化重組序列 for(k=0 to cAlength) do p=n-2*k+filterLen-1; if((p>=0)&&(p recData[n]+=m_db.lowFilterRec[p]*cA[k]+m_db.highFilterRec[p]*cD[k];//信號重構(gòu) end for end for (3)在時(shí)間序列數(shù)據(jù)分解后對各子序列進(jìn)行相空間重構(gòu)[14],由此可以將低維時(shí)間序列向高維轉(zhuǎn)換,盡可能挖掘到序列間的相關(guān)信息[15]。設(shè)時(shí)間序列為x(t),t=1,2,…,N,嵌入維為m,時(shí)間延遲為τ,則重構(gòu)相空間為: y(t)={x(t),x(t+τ),…,x[t+(m-1)τ]},t=1,2,…,M (8) 其中,M=N-(m-1);τ為相空間中的相點(diǎn)數(shù)。實(shí)際應(yīng)用中,若時(shí)間延遲τ太小,則相空間矢量在數(shù)值上過于接近,無法提供兩個(gè)獨(dú)立的坐標(biāo)分量;若時(shí)間延遲τ太大,則兩坐標(biāo)分量的相關(guān)關(guān)系又趨于獨(dú)立,根據(jù)自相關(guān)函數(shù)法分析,選定τ=1,m=25。 (4)針對分解后的低頻尺度變換序列構(gòu)建支持向量機(jī)模型進(jìn)行預(yù)測。普遍認(rèn)為,基于高斯核函數(shù)的支持向量機(jī)具有較好的模擬效果[12],實(shí)驗(yàn)選取高斯核函數(shù)(RBF)作為支持向量機(jī)模型的核函數(shù),定義為: K(x,xc)=exp(-g‖x-xc‖2) (9) 模型中懲罰參數(shù)C設(shè)置為10.0,不敏感損失函數(shù)ε設(shè)置為0.1。將相空間重構(gòu)后的二維數(shù)據(jù)輸入至模型中進(jìn)行訓(xùn)練,并對測試數(shù)據(jù)進(jìn)行預(yù)測。 (5)對小波分解后的高頻小波變換序列應(yīng)用小波神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測。小波神經(jīng)網(wǎng)絡(luò)輸入維數(shù)和小波函數(shù)是影響網(wǎng)絡(luò)性能的重要因素[16]。通過對小波系數(shù)進(jìn)行相關(guān)性評價(jià),發(fā)現(xiàn)嵌入維m=25,時(shí)間延遲τ=1時(shí),具有較高的相關(guān)性。經(jīng)測試選取小波函數(shù)為Morlet小波,其基函數(shù)和導(dǎo)函數(shù)分別為: Ψ(x)=exp(-x2/2)*cos1.75x (10) Ψ'(x)=-(xcos1.75x+1.75sin1.75x)* exp(-x2/2) (11) 隨后設(shè)計(jì)小波神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。根據(jù)相關(guān)性分析設(shè)置輸入層節(jié)點(diǎn)數(shù)為128,輸入維度為25,隱含層數(shù)為1,輸出層節(jié)點(diǎn)數(shù)為1,優(yōu)化器為Adam函數(shù),損失函數(shù)為MSE,驗(yàn)證數(shù)據(jù)集為訓(xùn)練數(shù)據(jù)集的10%,最大迭代次數(shù)為100。進(jìn)行網(wǎng)絡(luò)迭代訓(xùn)練得到WNN模型。具體過程如算法3。 算法3:WNN_premodel(train,test)。 輸入:train:小波變換序列訓(xùn)練集;test:小波變換序列測試集。 輸出:測試集預(yù)測值test_simu。 初始化參數(shù):輸入節(jié)點(diǎn)數(shù)m,輸出節(jié)點(diǎn)數(shù)N,隱含節(jié)點(diǎn)數(shù)n,訓(xùn)練樣本數(shù)S,迭代步長etha,最大迭代步數(shù)StepMax; G<-normrnd(0,1,n,m+1),W<-normrnd(0,1,N.n+1); //權(quán)值系數(shù)矩陣隨機(jī)初始化 while(flag==0) do //未達(dá)到訓(xùn)練要求或迭代步數(shù) WaveNetIn<-G*[X;ones(1,S)]; V<-ψ(x);//小波函數(shù)基函數(shù) Y<-tansig(W*[V;ones(1,S)]);//計(jì)算WNN輸出 if(Step>=StepMax) flag<-1;//退出 else dtansigWV<-4*exp(2W[V;ones(1,S)])/(exp(2W[V;ones(1,S)]+1)^2); W<-W-etha*(-(dtansigWV*EA)*[V;ones(1,S)]’);//輸出層系數(shù)矩陣更新 DL<-ψ'(x);//小波函數(shù)導(dǎo)函數(shù) dEdG<- -DL*(W(:,1:n)’*Gamma)*[X;ones(1,S)]’; G<-G-etha*dEdG;//輸入-隱含層權(quán)值系數(shù)矩陣更新 end if end while 實(shí)驗(yàn)平臺為PyCharm2017.3.4,采用的數(shù)據(jù)集為屯溪流域從1981年5月1日至2007年3月25日共計(jì)43 996個(gè)小時(shí)流量數(shù)據(jù)。數(shù)據(jù)集被分為兩部分,一部分是訓(xùn)練數(shù)據(jù)共39 998條,用于訓(xùn)練調(diào)整網(wǎng)絡(luò)權(quán)值和系數(shù);另一部分是測試數(shù)據(jù)共3 998條,用于測試網(wǎng)絡(luò)性能。 對歸一化流量序列進(jìn)行離散小波變換,采用Mallat算法,小波的低通濾波長度不能太長,同時(shí)能提取序列躍變特征,采用db10小波作為小波分解函數(shù),分解層級為6層,分解后的低頻尺度變換序列為a6,高頻小波變換序列為d1,d2,d3,d4,d5,d6。因?yàn)殡S著分解層級的提高,每次循環(huán)抽樣都會減少低頻近似分量的數(shù)據(jù)量,因此對分解后序列應(yīng)進(jìn)行單支重構(gòu),便于預(yù)測。測試數(shù)據(jù)分解序列如圖2所示,訓(xùn)練數(shù)據(jù)與其相似。 圖2 測試數(shù)據(jù)流量時(shí)間序列小波分解 利用SVM模型對尺度變換序列a6進(jìn)行仿真預(yù)測,得到SVM模型對測試數(shù)據(jù)a6序列的擬合及預(yù)測結(jié)果如圖3所示。 圖3 SVM模型預(yù)測a6序列效果 依次導(dǎo)入訓(xùn)練數(shù)據(jù)的d1,d2,d3,d4,d5,d6序列,對WNN進(jìn)行網(wǎng)絡(luò)迭代訓(xùn)練,在迭代次數(shù)不到50次時(shí)損失函數(shù)值已趨于穩(wěn)定,說明WNN的收斂速度良好;利用訓(xùn)練好的WNN對測試數(shù)據(jù)集的3 998個(gè)樣本進(jìn)行測試,其中對d6小波變換序列的預(yù)測效果如圖4所示。 圖4 WNN模型預(yù)測d6序列效果 將SVM子模塊和WNN子模塊得出的預(yù)測結(jié)果進(jìn)行重構(gòu),即可得到組合模型的預(yù)測結(jié)果。將尺度變換序列a6和小波變換序列d1,d2,d3,d4,d5,d6的預(yù)測值進(jìn)行重構(gòu)得到組合模型的輸出,如圖5所示。 圖5 WNN-SVM組合模型預(yù)測效果 同時(shí),應(yīng)用單一的WNN模型及SVM模型對流量序列進(jìn)行預(yù)測,得到的預(yù)測序列如圖6、圖7所示。 圖6 WNN模型預(yù)測效果 圖7 SVM模型預(yù)測效果 將基于小波變換的并行組合模型與單一的WNN模型以及SVM模型的預(yù)測值進(jìn)行對比,同時(shí)選擇均方誤差(MSE)、均方根誤差(RMSE)和決定系數(shù)(R2)對上述模型的預(yù)測效果進(jìn)行參數(shù)檢驗(yàn),得到的參數(shù)統(tǒng)計(jì)結(jié)果如表1所示。 表1 模型性能對比 通過實(shí)驗(yàn)驗(yàn)證,SVM模型對尺度變換子序列的擬合程度與WNN模型對小波變換子序列的擬合程度都處于較高的水平。同時(shí),文中提出的WNN-SVM組合模型對測試序列的擬合程度非常貼近原始序列真實(shí)值。而SVM模型和WNN模型在整體上雖然保持了一定的準(zhǔn)確性,但在波動轉(zhuǎn)折點(diǎn)具有一定的遲滯性,導(dǎo)致較大誤差。在參數(shù)檢驗(yàn)上,MSE、RMSE越貼近0,則預(yù)測效果越好,R2則越貼近于1,表示擬合程度越高??梢钥闯?,并行組合模型的MSE和RMSE明顯低于WNN和SVM模型的MSE和RMSE,而R2值則比WNN和SVM模型更貼近于1,驗(yàn)證了其預(yù)測能力,相對單一模型具有更好的性能表現(xiàn)。 針對單一模型對具有隨機(jī)性、突變性復(fù)雜時(shí)間序列預(yù)測精度的不足,提出一種基于小波變換的組合預(yù)測模型,將SVM模型與WNN模型相結(jié)合的組合模型應(yīng)用于測試屯溪流域的小時(shí)流量數(shù)據(jù)。為驗(yàn)證方法的有效性,將其與傳統(tǒng)的單一WNN模型和SVM模型進(jìn)行對比,經(jīng)實(shí)驗(yàn)驗(yàn)證組合模型的預(yù)測精度高于單一模型,證明了該并行組合模型的有效性。但對于小波基函數(shù)及分解層次的選擇,仍依賴于實(shí)驗(yàn)對比分析。同時(shí),對復(fù)雜時(shí)間序列預(yù)測期的延長還有待后續(xù)研究。3 實(shí)驗(yàn)及結(jié)果分析
3.1 實(shí)驗(yàn)結(jié)果
3.2 實(shí)驗(yàn)分析
4 結(jié)束語