龔 莎,彭宏玉
(1.西南交通大學(xué) 唐山研究生院,唐山 河北 063000;2.唐山學(xué)院 計算機科學(xué)與技術(shù)系,唐山 河北 063000)
灤河來水量在時間分布上很不均勻,一年之內(nèi)的來水量主要集中在七、八、九三個月內(nèi),且來水量的年際變化懸殊[1]。潘家口水庫是整個引灤工程的源頭,對其水位進行預(yù)測,對于提高灤河水資源的利用率、加強水資源的分配管理以及防洪減災(zāi)都具有重要意義。
目前,很多學(xué)者致力于湖泊流域水位預(yù)測方法的研究,采用的技術(shù)主要有遙感技術(shù)、物聯(lián)網(wǎng)技術(shù)、機器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)。其中應(yīng)用機器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)進行預(yù)測在國內(nèi)外已有不少研究成果。Makhtar等[2]使用Apriori算法從數(shù)據(jù)集中生成最佳規(guī)則,用于查找頻繁項集,通過建立洪水預(yù)報模型來發(fā)現(xiàn)水位與洪水面積之間的相關(guān)性,這項研究的結(jié)果證明了在水位預(yù)測中Apriori算法的可用性。Jangyodsuk等[3]基于貝葉斯的方法,提出了一種新的因果發(fā)現(xiàn)算法,利用降水和水文數(shù)據(jù)來尋找未來洪水的影響特征,但此研究只考慮了降水這單一因素對洪水的影響。趙春雷等[4]采取歷史資料回歸和機器學(xué)習(xí)方法,對白洋淀水位隨區(qū)域降水量變化的規(guī)律進行分析,并通過建立最低水位預(yù)測模型對已有的數(shù)據(jù)進行驗證。但此研究只考慮了影響水位的雨季自然降水量和白洋淀基礎(chǔ)水位這兩個因素,造成一定的結(jié)果誤差,預(yù)測精度有待提高。劉亞新等[5]提出了一種基于長短時記憶(Long Short-Term Memory,LSTM)的水位預(yù)測方法,用于葛洲壩水電站上下游水位的預(yù)測,此方法采用水位和出力等直接監(jiān)測數(shù)據(jù),避免了出入庫流量等間接計算值帶來的二次誤差,但預(yù)測精度仍有待進一步提高。Ghorbani等[6]將混合模型的預(yù)測能力與FFA集成在一起,作為具有多層感知器(MLP-FFA)的啟發(fā)式優(yōu)化工具,用于土耳其埃利迪爾湖水位的預(yù)測,實驗表明Firefly算法作為優(yōu)化器,可以使模型預(yù)測的準(zhǔn)確性更高。Khan等[7]為拉姆甘加河開發(fā)了一個人工神經(jīng)網(wǎng)絡(luò)模型,使用日常用水對模型化網(wǎng)絡(luò)進行訓(xùn)練、驗證和測試,由于河流流量和水位值難以測量,不能直接預(yù)測隱藏層神經(jīng)元最佳數(shù)量,必須通過枚舉技術(shù)獲得最佳網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),計算成本較高,增加了運行時間。Xu等[8]提出了一種基于ARIMA-RNN組合模型的水位預(yù)測方案,解決了單個預(yù)測模型不能同時考慮數(shù)據(jù)中線性和非線性成分的問題,實驗結(jié)果證明,預(yù)測模型可以取得較好的效果,但精度仍有待提高。
針對應(yīng)用傳統(tǒng)神經(jīng)網(wǎng)絡(luò)進行水位預(yù)測存在的問題,本文提出了一種基于PCA-ESN模型的水位預(yù)測方法。首先,在數(shù)據(jù)預(yù)處理部分利用主成分分析法(Principal Component Analysis,PCA)有效提取多元時間序列數(shù)據(jù)的特征并對原始數(shù)據(jù)進行重組,降低了水位數(shù)據(jù)的信息冗余;其次,使用回聲狀態(tài)網(wǎng)絡(luò)(Echo State Network,ESN)建立水位預(yù)測模型,克服了傳統(tǒng)遞歸神經(jīng)網(wǎng)絡(luò)梯度消失和梯度爆炸問題,網(wǎng)絡(luò)具有較好的信息處理能力和泛化能力。具體過程為,根據(jù)河北省潘家口水庫的水位日數(shù)據(jù),先通過PCA算法選取影響水位的相關(guān)變量,然后設(shè)計ESN模型預(yù)測水位。
對數(shù)據(jù)預(yù)處理是實驗結(jié)果準(zhǔn)確的前提。作為多元統(tǒng)計中常用的數(shù)據(jù)分析方法之一,主成分分析法能夠在降低原始數(shù)據(jù)變量維數(shù)的同時有效提取各個變量的特征,產(chǎn)生新成分,新成分能夠克服因原始變量信息重疊而對數(shù)據(jù)分析結(jié)果造成的不良影響[9]。
設(shè)原始數(shù)據(jù)集包括n個數(shù)據(jù)樣本,每個樣本具有p個變量,對此數(shù)據(jù)集的主成分分析計算流程如下。
(a)對原始數(shù)據(jù)集進行標(biāo)準(zhǔn)化處理,組成標(biāo)準(zhǔn)化數(shù)據(jù)矩陣Z。
(b)引入Pearson相關(guān)系數(shù)(式(1))計算各個變量數(shù)據(jù)間的相關(guān)性,組成相關(guān)系數(shù)矩陣R。
(1)
(c)求解相關(guān)系數(shù)矩陣R的特征方程,對求出的特征值按從大到小的順序進行排序λ1≥λ2≥…≥λp,并求出每個特征值相對應(yīng)的單位特征向量li,li組成如式(2)的主成分得分矩陣L。
(2)
其中,lij(i=1,2,…,n;j=1,2,…,p)。
(d)根據(jù)式(3)計算累計貢獻率ki,保留累計貢獻率在85%以上的前m個成分作為新主成分。
(3)
(e)根據(jù)第(c)步、第(d)步計算新主成分Y的各個主成分,得到原始數(shù)據(jù)集經(jīng)過PCA處理后的重組數(shù)據(jù)集,第m個新主成分的數(shù)學(xué)模型Ym如式(4)所示。
Ym=l1m×X1+l2m×X2+…+lnm×Xp。
(4)
原始數(shù)據(jù)為河北省潘家口水庫2009年9月3日至2019年12月29日的3 770組水位日數(shù)據(jù),數(shù)據(jù)來源于實驗室搭建的野外人工湖水位智慧預(yù)警系統(tǒng)的數(shù)據(jù)采集部分。該系統(tǒng)的數(shù)據(jù)采集部分比較完善,經(jīng)過了長時間的運行,已經(jīng)采集到定量的水位及相關(guān)信息。部分歷史水位及相關(guān)信息數(shù)據(jù)如表1所示。
表1 部分歷史水位及相關(guān)信息數(shù)據(jù)
在進行ESN模型構(gòu)建之前,要把ESN結(jié)構(gòu)中輸入層因子的具體數(shù)值進行預(yù)處理,輸入層因子的選擇和主成分分析相關(guān)性很強,無論是因子初選還有因子精選都是其范圍內(nèi)的,因子選擇過程本質(zhì)上來說就是主成分分析過程。
將歷史水位、降水量、水溫、濕度、壓力作為主成分分析過程的備選因子。數(shù)據(jù)集的變量分別為歷史水位(X1)、降水量(X2)、濕度(X3)、水溫(X4)、壓力(X5)。對5個初始因子進行主成分分析,結(jié)果如表2所示。
表2 PCA分析結(jié)果表
經(jīng)主成分分析,得到各個主成分的特征值、貢獻率、累積貢獻率。由表2可知,歷史水位和降水量2個主成分的累計貢獻率已經(jīng)達到92.986%,說明這2個主成分取代先前的5個因子可以讓信息丟失的程度降低,主成分的分析效果更穩(wěn)定。
數(shù)據(jù)集經(jīng)過PCA處理得到2個新主成分PA1,PA2,由主成分得分矩陣計算得到新主成分的模型如式(5)所示:
(5)
回聲狀態(tài)網(wǎng)絡(luò)ESN由2001年Jaeger提出[10],是典型的儲備池計算網(wǎng)絡(luò),具有復(fù)雜的動力學(xué)特征。目前ESN已經(jīng)在智能控制、語音識別、非線性時間序列預(yù)測等領(lǐng)域取得了廣泛的應(yīng)用。ESN主要由輸入層、儲備層和輸出層組成,其特點是儲備層由一個包含大量神經(jīng)元的動態(tài)儲備池(DR)構(gòu)成,儲備池內(nèi)的神經(jīng)元采用隨機、稀疏的方式連接,其蘊含了網(wǎng)絡(luò)的運行狀態(tài),具有短期記憶功能。儲備池是回聲狀態(tài)網(wǎng)絡(luò)結(jié)構(gòu)的核心部分,對于網(wǎng)絡(luò)最終的性能起著至關(guān)重要的作用。ESN結(jié)構(gòu)如圖1所示。
圖1 ESN結(jié)構(gòu)圖
設(shè)輸入矩陣、狀態(tài)矩陣、輸出矩陣分別為:
u(t)=(u1(t),u2(t),…,uK(t))T,
(6)
x(t)=(x1(t),x2(t),…,xN(t))T,
(7)
y(t)=(y1(t),y2(t),…,yM(t))T,
(8)
其中,K為輸入維數(shù),N為儲備池內(nèi)部神經(jīng)元個數(shù),M為輸出維數(shù),t=1,2,…,T。
狀態(tài)矩陣的更新如式(9)所示:
x(t+1)=f(Winu(t+1)+Wx(t)),
(9)
y(t)=fout(Woutxout(t)),
(10)
其中,Win是N×K輸入層到儲備層的權(quán)重矩陣,W是儲備層權(quán)重矩陣,Wout是M×K儲備層到輸出層的權(quán)重矩陣,此矩陣的更新如式(11)所示:
Wout=((STS+βI)-1STD)T,
(11)
其中,β表示非負(fù)正則化系數(shù),S表示全部狀態(tài)矩陣,I表示單位矩陣,D為全部輸出矩陣。
在設(shè)計算法前首先需要進行關(guān)鍵參數(shù)選擇,具體參數(shù)包括儲備池規(guī)模、稀疏度、譜半徑、輸入縮放因子。
(ⅰ)儲備池規(guī)模N是指ESN儲備池內(nèi)神經(jīng)元的個數(shù)。儲備池是隨機生成的,其規(guī)模必須足夠大,以捕捉潛在的數(shù)據(jù)特征。一般來說,如果采取適當(dāng)?shù)恼齽t化措施,則儲備池規(guī)模越大,獲得的網(wǎng)絡(luò)性能就越好。但過大也會導(dǎo)致“過擬合”。文中選取N為500。
(ⅱ)稀疏度s是指儲備池中存在相互連接的神經(jīng)元個數(shù)與神經(jīng)元總個數(shù)的百分比,反映了儲備池神經(jīng)元間連接的稀疏程度。ESN儲備池內(nèi)神經(jīng)元是稀疏連接的,即連接輸入層與儲備層的輸入權(quán)重矩陣Win中大部分元素值為0。文中設(shè)定稀疏度為5%。
(ⅲ)譜半徑ρ(W)是指儲備層權(quán)重矩陣W的特征值絕對值中的最大值。當(dāng)譜半徑介于[0,1]之間時,回聲狀態(tài)網(wǎng)絡(luò)具有回聲狀態(tài)特性。但由于激活函數(shù)引入非線性因素,最佳ρ(W)值有時可能會比1大得多,意味著ρ(W)<1并不是網(wǎng)絡(luò)具有回聲狀態(tài)特性的必要條件。因此,實際任務(wù)中的譜半徑應(yīng)更大,需要更大的輸入存儲空間。
(ⅳ)輸入縮放因子是指在輸入信號傳送到網(wǎng)絡(luò)儲備池前,對輸入權(quán)重矩陣Win進行尺度變換的一個縮放因子。輸入縮放因子的大小與網(wǎng)絡(luò)處理問題的非線性程度有關(guān),非線性程度越強,輸入縮放因子值越大。
ESN模型訓(xùn)練:
Step1:進行初始化操作,先確定儲備池的規(guī)模,即神經(jīng)元的個數(shù)。
Step2:隨機生成輸入權(quán)重矩陣Win和儲備層權(quán)重矩陣W。調(diào)整輸入縮放因子,使ρ(W)譜半徑小于1。
Step3:樣本數(shù)據(jù)依次加載到輸入、輸出,更新儲備池內(nèi)部狀態(tài)。
Step4:前n個數(shù)據(jù)因受到初始瞬變的影響,所以刪除x(1)至x(n),即前n個數(shù)據(jù)不用于學(xué)習(xí)Wout,并收集第n個數(shù)據(jù)以后的狀態(tài)變量。
Step5:計算輸出權(quán)重矩陣Wout。
Step6:用新輸入和訓(xùn)練好的Wout計算相應(yīng)輸出進行測試。
將基于PCA-ESN的預(yù)測模型用于潘家口水庫水位的預(yù)測。
首先對輸入數(shù)據(jù)進行歸一化處理:
x′=(xy-xmin)/(xmax-xmin),
(12)
其中,xy為數(shù)據(jù)序列的原始值,x′為歸一化后的值,xmin為序列的最小值,xmax為序列的最大值。
將3 770組數(shù)據(jù)歸一化處理后,利用PCA算法對數(shù)據(jù)進行分析處理,選取新主成分。取前2 000組數(shù)據(jù)用作訓(xùn)練樣本,后面1 770組數(shù)據(jù)用作測試樣本。ESN網(wǎng)絡(luò)的輸入節(jié)點為2,儲備池神經(jīng)元個數(shù)為500,稀疏度為5%,輸出節(jié)點數(shù)為1。
基于處理的數(shù)據(jù)集,對PCA-ESN模型進行水位預(yù)測的實驗?zāi)M。將模型運行30次以求得較為穩(wěn)定的模擬結(jié)果,采用30次的平均值繪制ESN測試效果圖圖2。由圖2可知,ESN的測試輸出接近真實水位數(shù)據(jù),效果較好。
圖2 ESN測試效果圖
為了進一步說明ESN的優(yōu)越性,本實驗選取均方誤差(MSE)作為模型預(yù)測性能的評價指標(biāo),計算公式如下:
(13)
ESN誤差測試如圖3所示。由于ESN模型的輸入權(quán)重矩陣與儲備層權(quán)重矩陣在每次訓(xùn)練時均需隨機生成,因此ESN模型的誤差分布有一定波動,但基本比較平穩(wěn),誤差控制在7.278E-05左右,預(yù)測效果較好。說明ESN的神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)處理能力強,訓(xùn)練效果好。
圖3 ESN誤差測試圖
采用PCA算法對數(shù)據(jù)集進行預(yù)處理,選取新的主成分作為輸入變量,建立ESN預(yù)測模型,對潘家口水庫水位進行預(yù)測。仿真實驗結(jié)果表明,采用PCA算法對數(shù)據(jù)進行預(yù)處理,提取到歷史水位和降水量的累計貢獻率達到92.986%,將這2個主成分作為輸入變量,減少了重復(fù)率,降低了復(fù)雜度。實驗展示了ESN預(yù)測非線性時間序列數(shù)據(jù)的優(yōu)勢,收到了較好的預(yù)測效果。因此,基于PCA-ESN模型預(yù)測水位的誤差小,準(zhǔn)確性高,具有一定的實用價值。