周勇強(qiáng),朱躍龍
(河海大學(xué)計(jì)算機(jī)與信息學(xué)院,江蘇 南京 211100)
水文時(shí)間序列是指水位、流量等指標(biāo)隨著時(shí)間變化而產(chǎn)生的一系列觀測(cè)值。水文時(shí)間序列預(yù)測(cè)能夠?yàn)樗こ痰慕ㄔO(shè)提供有效的設(shè)計(jì)指導(dǎo)和控制,為水資源的優(yōu)化配置和合理開(kāi)發(fā)提供科學(xué)的決策和規(guī)劃。
近幾十年來(lái),隨著大數(shù)據(jù)和人工智能時(shí)代的到來(lái),水文時(shí)間序列預(yù)測(cè)技術(shù)也在不斷地發(fā)展起來(lái),國(guó)內(nèi)外研究者提出了很多經(jīng)典的傳統(tǒng)預(yù)測(cè)模型、神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型以及各種優(yōu)化算法,極大地推動(dòng)了水文時(shí)間序列領(lǐng)域的蓬勃發(fā)展。在20世紀(jì)70年代時(shí),Box等[1]對(duì)自回歸模型(AR)、自回歸移動(dòng)平均模型(ARMA)和自回歸綜合移動(dòng)平均模型(ARIMA)進(jìn)行了系統(tǒng)的介紹和表述,由于其結(jié)構(gòu)簡(jiǎn)單的特點(diǎn),因此被廣泛應(yīng)用于時(shí)間序列數(shù)據(jù)分析和預(yù)測(cè)。商其亞等[2]利用時(shí)間序列分析中的ARIMA模型對(duì)民勤地下水位主要影響因子的人口、耕地面積、大牲畜存欄、上游來(lái)水量4個(gè)指標(biāo)進(jìn)行預(yù)測(cè),對(duì)類(lèi)似地區(qū)的地下水位預(yù)測(cè)有一定的參考價(jià)值。Yu等[3]基于進(jìn)化算法(Evolutionary Algorithm, EA),將混沌理論與支持向量機(jī)(Support Vector Machine, SVM)相結(jié)合,提出了EC-SVM模型,用于丹麥流域和維克斯堡河日徑流預(yù)報(bào),所提出的EC-SVM模型優(yōu)于標(biāo)準(zhǔn)混沌、SVM和ARIMA模型。Yadav等[4]采用小波變換(Wavelet Transform, WT)和SVM對(duì)湖泊水量日變化進(jìn)行預(yù)測(cè),以湖泊日水位和其他水文氣象數(shù)據(jù)作為輸入,進(jìn)行了多種組合試驗(yàn),得到了最佳模型結(jié)構(gòu)并將其推廣應(yīng)用于湖泊水位預(yù)測(cè)。Atiquzzaman等[5]將極限學(xué)習(xí)機(jī)(Extreme Learning Machine, ELM)應(yīng)用于水文流量序列建模,并與基于遺傳算法和進(jìn)化算法的SVM進(jìn)行性能比較。實(shí)驗(yàn)結(jié)果表明,在相同條件下,ELM表現(xiàn)出了更佳的穩(wěn)健性。與此同時(shí),隨著水文時(shí)間序列數(shù)據(jù)的數(shù)據(jù)量和復(fù)雜性的不斷增加,傳統(tǒng)的統(tǒng)計(jì)學(xué)預(yù)測(cè)方法的算法效率、預(yù)測(cè)精度和準(zhǔn)確度已經(jīng)不能滿足現(xiàn)實(shí)中的要求,許多研究者利用機(jī)器學(xué)習(xí)、深度學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)來(lái)搭建預(yù)測(cè)模型,從而提高模型的效率和預(yù)測(cè)準(zhǔn)確性。Kalteh[6]使用人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Network, ANN)和SVM,結(jié)合小波變換來(lái)預(yù)測(cè)伊朗哈爾吉爾和波內(nèi)爾站的月河流流量。結(jié)果表明,ANN-SVM比單個(gè)SVM模型具有更好的精度。Wang等[7]提出了一種基于長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(Long and Short-Term Memory, LSTM)模型的水質(zhì)預(yù)測(cè)方法,并以太湖2000年至2006年每月的水質(zhì)指標(biāo)數(shù)據(jù)集作為訓(xùn)練數(shù)據(jù)進(jìn)行了一系列仿真實(shí)驗(yàn)。該方法與基于BP神經(jīng)網(wǎng)絡(luò)和基于在線ELM的2種方法比較,實(shí)驗(yàn)結(jié)果表明LSTM預(yù)測(cè)方法具有較高的精度和通用性。許國(guó)艷等[8]提出了基于CNN-MC的水文時(shí)間序列預(yù)測(cè)組合模型,利用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)的權(quán)值共享優(yōu)點(diǎn)和馬爾科夫鏈(Markov Chain, MC)的殘差對(duì)CNN的預(yù)測(cè)值進(jìn)行修正,有效提高了預(yù)報(bào)的準(zhǔn)確性。Hu等[9]提出了一種將集成經(jīng)驗(yàn)?zāi)J椒纸?Ensemble Empirical Mode Decomposition, EEMD)和SVR相結(jié)合的混合預(yù)測(cè)方法,利用EEMD對(duì)非線性和非平穩(wěn)性的風(fēng)速時(shí)間序列進(jìn)行分解,再使用SVM模型得到相應(yīng)的預(yù)測(cè)值。該方法計(jì)算簡(jiǎn)單,數(shù)據(jù)需求量少,易于實(shí)現(xiàn)。Wang等[10]提出了基于ARIMA-Bi_LSTM混合模型對(duì)電解質(zhì)容器早期的穩(wěn)定性預(yù)測(cè),其中ARIMA用來(lái)預(yù)測(cè)時(shí)間序列的線性部分,Bi_LSTM用來(lái)預(yù)測(cè)時(shí)間序列非線性部分,最后通過(guò)小波變換將線性和非線性結(jié)合起來(lái),得到最優(yōu)的預(yù)測(cè)值。傳統(tǒng)單一模型結(jié)構(gòu)簡(jiǎn)單,對(duì)于復(fù)雜的非線性水文時(shí)間序列具有預(yù)測(cè)精度較低、不能很好捕捉水文時(shí)間序列的復(fù)合特征的問(wèn)題[11]。組合預(yù)測(cè)模型能夠包含更多、全面的時(shí)序數(shù)據(jù)和信息,有效地提高了預(yù)測(cè)準(zhǔn)確度,然而在模型參數(shù)選擇方面需要手工調(diào)參,花費(fèi)時(shí)間多且不準(zhǔn)確[12]。
本文提出一種基于SFLA-CNN和LSTM的組合預(yù)測(cè)模型。該模型通過(guò)隨機(jī)蛙跳算法對(duì)CNN模型進(jìn)行參數(shù)尋優(yōu),然后利用BP神經(jīng)網(wǎng)絡(luò)[13]對(duì)SFLA-CNN和LSTM模型的預(yù)測(cè)值進(jìn)行非線性組合,更準(zhǔn)確地捕捉水文數(shù)據(jù)的局部特征和時(shí)序特征,可有效提高預(yù)測(cè)的準(zhǔn)確度,具有更好的泛化能力。
由于水位變化和降雨量之間存在復(fù)雜、高度非線性的關(guān)系,設(shè)計(jì)一個(gè)能夠捕捉水位序列整體特征的水位預(yù)測(cè)模型,對(duì)于研究人員來(lái)說(shuō)是一項(xiàng)具有挑戰(zhàn)性的任務(wù)。近幾十年來(lái),水位預(yù)測(cè)方法主要分為物理學(xué)方法、統(tǒng)計(jì)學(xué)方法、機(jī)器學(xué)習(xí)方法、深度學(xué)習(xí)方法和組合模型方法等[14]。
1)物理學(xué)方法是使用數(shù)值模擬技術(shù)構(gòu)建一個(gè)水位預(yù)報(bào)系統(tǒng),該系統(tǒng)旨在重現(xiàn)水文過(guò)程,卻忽視了計(jì)算過(guò)程費(fèi)時(shí)和參數(shù)難確定的復(fù)雜問(wèn)題。
2)統(tǒng)計(jì)學(xué)方法對(duì)于平穩(wěn)、線性變化的水位預(yù)測(cè)效果良好,對(duì)于非平穩(wěn)、非線性的水位預(yù)測(cè)表現(xiàn)較差。
3)機(jī)器學(xué)習(xí)方法在大數(shù)據(jù)處理和仿真方面具有優(yōu)勢(shì),但在計(jì)算復(fù)雜性和魯棒性方面存在不足。
4)深度學(xué)習(xí)方法是機(jī)器學(xué)習(xí)的延伸,在解決非線性模擬、預(yù)測(cè)問(wèn)題方面具有良好的靈活性。
5)組合模型方法是將不同模型組合成一個(gè)整體,相互聯(lián)系、補(bǔ)充,有效地提高預(yù)測(cè)精確度。
本文中的組合模型方法主要包括2部分:CNN用于提取水文序列的局部特征;LSTM用于提取水文序列的時(shí)序特征。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種包含卷積計(jì)算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò),其靈感來(lái)自生物的自然視覺(jué)感知機(jī)制[15]。如圖1所示,CNN網(wǎng)絡(luò)結(jié)構(gòu)主要由輸入層、卷積層、池化層、全連接層以及輸出層構(gòu)成。
圖1 CNN網(wǎng)絡(luò)結(jié)構(gòu)圖
卷積層主要用于提取原始的各種特征,卷積操作具體過(guò)程可以用公式(1)來(lái)表示,其中xi,j表示第i行第j列元素,wm,n表示第m行第n列的權(quán)重,wb表示濾波器的偏置項(xiàng),f表示激活函數(shù)。
(1)
激活層是對(duì)卷積層的輸出結(jié)果作非線性變換,對(duì)權(quán)重進(jìn)行適度地調(diào)整。池化層是在卷積操作輸出結(jié)果之后,對(duì)數(shù)據(jù)以及參數(shù)進(jìn)行壓縮以達(dá)到降低維度的效果,可以有效解決過(guò)擬合的問(wèn)題[16]。
時(shí)間序列預(yù)測(cè)經(jīng)常會(huì)面臨歷史信息的丟失問(wèn)題,為了解決長(zhǎng)期信息保留的問(wèn)題,Graves提出了長(zhǎng)短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)[17]。LSTM通過(guò)各種設(shè)計(jì)良好的門(mén)來(lái)更新、存儲(chǔ)單元的信息,同時(shí)處理梯度消失和梯度爆炸問(wèn)題,實(shí)現(xiàn)對(duì)時(shí)間序列更好的建模預(yù)測(cè)[18]。LSTM神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,由遺忘門(mén)、輸入門(mén)和輸出門(mén)3個(gè)門(mén)控系統(tǒng)構(gòu)成。各個(gè)門(mén)的計(jì)算公式如下。
圖2 LSTM神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
1)遺忘門(mén)。幫助LSTM決定哪些信息將從記憶單元狀態(tài)刪除。
ft=σ(Wfxxt+Wfhht-1+bf)
(2)
2)輸入門(mén)。使用輸入門(mén)it來(lái)決定將要存儲(chǔ)到新單元狀態(tài)Ct的信息。
it=σ(Wixxt+Wihht-1+bi)
(3)
gt=tanh(Wgxxt+Wghht-1+bg)
(4)
Ct=Ct-1ft+gtit
(5)
3)輸出門(mén)。確定最終的輸出值。
ot=σ(Woxxt+Wohht-1+bo)
(6)
ht=ottanh(Ct)
(7)
其中:σ、tanh為Sigmoid激活函數(shù)和雙曲正切激活函數(shù);W為權(quán)值矩陣,b為偏置項(xiàng)。
基于SFLA-CNN和LSTM的水位預(yù)測(cè)組合模型的整體流程如圖3所示。該模型主要由數(shù)據(jù)預(yù)處理、基于SFLA的CNN網(wǎng)絡(luò)單元、LSTM網(wǎng)絡(luò)單元以及BP神經(jīng)網(wǎng)絡(luò)構(gòu)成。
圖3 模型整體流程圖
首先,對(duì)于給定的水文數(shù)據(jù),需要進(jìn)行數(shù)據(jù)預(yù)處理,使其成為規(guī)范統(tǒng)一的格式,以便于后續(xù)的數(shù)據(jù)分析。本文的預(yù)處理主要有空值替換、歸一化以及反歸一化。其中水位序列L=(l1,l2,…,lt),降雨量序列R=(r1,r2,…,rt)。
輸入:水位和降雨量值經(jīng)過(guò)預(yù)處理后的訓(xùn)練集為trainX,形式如下:
分別構(gòu)建CNN單元和LSTM單元。其中CNN單元需要利用SFLA算法進(jìn)行參數(shù)尋優(yōu),得到最優(yōu)的一組CNN參數(shù)向量,便于準(zhǔn)確地提取水文數(shù)據(jù)的局部特征。LSTM單元用于提取水文數(shù)據(jù)的時(shí)序特征。最后利用BP神經(jīng)網(wǎng)絡(luò)對(duì)SFLA-CNN和LSTM進(jìn)行擬合,從而得到最終的組合預(yù)測(cè)模型。
輸出:水位的預(yù)測(cè)值序列為trainY,pt表示t時(shí)刻水位的預(yù)測(cè)值,形式如下:
CNN具有強(qiáng)大的特征學(xué)習(xí)以及局部感知的能力,能夠有效地捕獲水位時(shí)間序列局部特征并提高算法運(yùn)行的效率。但是,在使用CNN進(jìn)行建模時(shí)需要花費(fèi)大量的時(shí)間來(lái)進(jìn)行調(diào)參,而且很難通過(guò)人為的方式為CNN設(shè)定一組較優(yōu)的參數(shù)值。針對(duì)此問(wèn)題,選用搜索速度更快、穩(wěn)定性更好的隨機(jī)蛙跳算法[19-20](Shuffled Frog Leaping Algorithm, SFLA)來(lái)對(duì)CNN的參數(shù)進(jìn)行調(diào)優(yōu),建立SFLA-CNN模型。該模型利用SFLA較強(qiáng)的搜索能力對(duì)CNN手動(dòng)調(diào)參所帶來(lái)的問(wèn)題進(jìn)行優(yōu)化,能夠在較短時(shí)間內(nèi)為CNN搜索到一組較優(yōu)的參數(shù),有效提高算法實(shí)驗(yàn)結(jié)果的準(zhǔn)確性,具體實(shí)現(xiàn)見(jiàn)算法1。SFLA-CNN模型建立步驟如下。
步驟1建立CNN模型。CNN網(wǎng)絡(luò)結(jié)構(gòu)依次為:輸入層、卷積層、BN層、激活層、Flatten層、Dropout層和全連接層,其參數(shù)信息如表1所示。
表1 CNN參數(shù)信息
步驟2初始化基本參數(shù)并隨機(jī)生成初始蛙群,蛙群是CNN需要尋優(yōu)的參數(shù)組成的向量Q=[Dropout, epoch, batch_size],每一個(gè)向量Q代表一個(gè)青蛙個(gè)體。
步驟3對(duì)青蛙個(gè)體進(jìn)行排序并進(jìn)行分組。生成數(shù)組并劃分成多個(gè)社區(qū),將青蛙按照適應(yīng)度的好壞進(jìn)行排序并劃分到不同的社區(qū)。
步驟4組內(nèi)進(jìn)化,即進(jìn)行局部搜索。首先根據(jù)公式(8)計(jì)算得到青蛙跳躍的距離Di,并對(duì)每個(gè)社區(qū)中適應(yīng)度最差的青蛙位置進(jìn)行調(diào)整。其中rand()為隨機(jī)數(shù),限定范圍0到1,Pb為每個(gè)社區(qū)中性能最好的青蛙,Pw為性能最壞的青蛙。
Di=rand()·(Pb-Pw)
(8)
在計(jì)算得到青蛙跳躍的距離之后,根據(jù)青蛙當(dāng)前位置,由公式(9)計(jì)算得到青蛙新的位置,公式中Dmax為青蛙跳躍的最大距離。
Pw=Pw(當(dāng)前位置)+Di, -Dmax≤Di≤Dmax
(9)
步驟5青蛙經(jīng)過(guò)跳躍若能找到更好的解,則原來(lái)解被替代;否則,用整個(gè)蛙群最優(yōu)的解Pg替代每個(gè)子群體最優(yōu)的解Pb并重復(fù)上述過(guò)程。若不能跳躍到更好的位置,則隨機(jī)產(chǎn)生一個(gè)解,替代原來(lái)最壞的青蛙Pw。
步驟6進(jìn)行種群迭代。蛙群中的青蛙個(gè)體在子群社區(qū)之間跳躍。在每個(gè)社區(qū)中執(zhí)行一定的模因進(jìn)化之后,將每個(gè)子群合并為一個(gè)整體并重新排序,更新整個(gè)蛙群中最好的青蛙Pg。若滿足迭代終止條件,則算法停止;否則,繼續(xù)迭代。
步驟7最終SFLA算法為CNN搜索到一組最優(yōu)參數(shù)輸入CNN模型并訓(xùn)練數(shù)據(jù),得到水位預(yù)測(cè)值序列P。
算法1SFLA-CNN模型優(yōu)化算法。
輸入:水位值序列L,降雨量序列R,青蛙個(gè)體總數(shù)N,子種群數(shù)量n,種群迭代次數(shù)g,CNN參數(shù)向量Q。
輸出:水位預(yù)測(cè)值序列P。
1. 建立CNN模型,初始化參數(shù)向量Q
2. 初始化蛙群,計(jì)算每只青蛙的適應(yīng)度并降序排列,得到Pg
4. whilei≤g
5. fromj=1 tondo
6. froms=1 tokdo
7. 計(jì)算子種群Pb、Pw并更新
8. end for
9.計(jì)算全局Pg并更新
10. end for
11. end while
12. returnPg
13. 將得到的最優(yōu)參數(shù)Q=Pg輸入CNN,由CNN(Q,L,R)得到水位預(yù)測(cè)值序列P
采用3層LSTM網(wǎng)絡(luò)和一個(gè)全連接層構(gòu)造LSTM預(yù)測(cè)模型,其參數(shù)信息如表2所示。使用通用的Adam動(dòng)量估計(jì)算法作為梯度優(yōu)化算法[21],并且對(duì)模型的每一個(gè)參數(shù)計(jì)算一個(gè)自適應(yīng)的學(xué)習(xí)率,動(dòng)態(tài)更新所有的學(xué)習(xí)參數(shù),從而獲得更優(yōu)良的效果。使用Softsign函數(shù)作為激活函數(shù)輸出其模型的水位預(yù)測(cè)值,使用平均絕對(duì)誤差MAE(Mean Absolute Error)和均方根誤差RMSE(Root Mean Square Error)作為損失函數(shù)對(duì)LSTM模型的預(yù)測(cè)準(zhǔn)確度進(jìn)行評(píng)估。
表2 LSTM參數(shù)信息
利用BP神經(jīng)網(wǎng)絡(luò)對(duì)SFLA-CNN和LSTM模型的預(yù)測(cè)值進(jìn)行非線性組合,確定2個(gè)模型的預(yù)測(cè)值在非線性組合中的權(quán)重,從而得到最終的組合預(yù)測(cè)模型。將訓(xùn)練集的SFLA-CNN和LSTM預(yù)測(cè)模型的輸出、訓(xùn)練集的真實(shí)值作為BP神經(jīng)網(wǎng)絡(luò)模型的輸入數(shù)據(jù),通過(guò)BP神經(jīng)網(wǎng)絡(luò)模型對(duì)輸入的數(shù)據(jù)進(jìn)行訓(xùn)練、擬合。BP神經(jīng)網(wǎng)絡(luò)的隱含神經(jīng)元個(gè)數(shù)設(shè)置為12,網(wǎng)絡(luò)層數(shù)設(shè)置為5,選用ReLU函數(shù)作為激活函數(shù)輸出組合模型的水位預(yù)測(cè)值,使用平均絕對(duì)誤差MAE和均方根誤差RMSE作為損失函數(shù)對(duì)組合模型的預(yù)測(cè)準(zhǔn)確度進(jìn)行評(píng)估。
本文實(shí)驗(yàn)的預(yù)測(cè)模型均采用Python編程,使用基于TensorFlow框架搭建卷積神經(jīng)網(wǎng)絡(luò)、長(zhǎng)短期記憶網(wǎng)絡(luò)。實(shí)驗(yàn)配置環(huán)境如表3所示。
表3 實(shí)驗(yàn)配置環(huán)境
實(shí)驗(yàn)訓(xùn)練和測(cè)試數(shù)據(jù)來(lái)源于江蘇省太湖區(qū)域大浦口站點(diǎn)的河道水情表和附近站點(diǎn)實(shí)時(shí)雨情表,數(shù)據(jù)記錄是從2015年5月1日至2018年5月31日每個(gè)時(shí)間對(duì)應(yīng)的值,時(shí)間間隔為1 h,均為標(biāo)準(zhǔn)的csv文件,每個(gè)文件存儲(chǔ)242830條數(shù)據(jù)。河道水情表包括測(cè)站編碼、時(shí)間、水位、流量、斷面過(guò)水面積和斷面平均流速等維度;實(shí)時(shí)雨情表包括測(cè)站編碼、時(shí)間、時(shí)段降雨量、時(shí)段長(zhǎng)、降雨歷時(shí)、天氣狀況等維度。
本文采用上一時(shí)刻與下一時(shí)刻數(shù)據(jù)的平均值填充缺失的某個(gè)時(shí)刻的數(shù)據(jù)[22]。為了提高組合模型的預(yù)測(cè)準(zhǔn)確度和加速算法的效率,對(duì)水文時(shí)間序列數(shù)據(jù)進(jìn)行歸一化處理[23],將水文時(shí)間序列的水位值和降雨量統(tǒng)一量化在[0,1]區(qū)間內(nèi),具體使用的歸一化方法如公式(10)所示:
(10)
其中,x為實(shí)際值,x′為歸一化后的值,max(x)和min(x)為數(shù)據(jù)集中的最大值和最小值。
為了綜合衡量和檢驗(yàn)實(shí)驗(yàn)?zāi)P蛿M合和預(yù)測(cè)的效果,本文采用3個(gè)常見(jiàn)的評(píng)價(jià)指標(biāo):平均絕對(duì)誤差MAE、均方根誤差RMSE和預(yù)測(cè)準(zhǔn)確率FA(Forecast Accuracy)[24]。MAE、RMSE和FA的計(jì)算公式如下:
(11)
(12)
(13)
為了保證實(shí)驗(yàn)的客觀性和降低數(shù)據(jù)選取的隨機(jī)性,實(shí)驗(yàn)中對(duì)水文時(shí)間序列數(shù)據(jù)集使用交叉驗(yàn)證法,將數(shù)據(jù)集均勻劃分為10個(gè)互斥子集,其中90%為訓(xùn)練集,10%為測(cè)試集,重復(fù)進(jìn)行10次試驗(yàn),并取實(shí)驗(yàn)結(jié)果的平均值作為最終的實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)由2個(gè)部分構(gòu)成,分別為CNN參數(shù)調(diào)優(yōu)對(duì)比和不同預(yù)測(cè)模型的結(jié)果對(duì)比。
1)實(shí)驗(yàn)1:CNN參數(shù)調(diào)優(yōu)對(duì)比。在CNN預(yù)測(cè)過(guò)程中,棄權(quán)率、訓(xùn)練批次以及批次大小3個(gè)參數(shù)對(duì)于網(wǎng)絡(luò)的訓(xùn)練結(jié)果影響較大。為了驗(yàn)證SFLA-CNN模型的有效性,本文使用手動(dòng)調(diào)參、PSO與SFLA進(jìn)行實(shí)驗(yàn)對(duì)比,結(jié)果如表4所示。手動(dòng)調(diào)參即手動(dòng)初始化棄權(quán)率、訓(xùn)練批次和批次大小,例如可以將(0.35,50,200)作為一個(gè)提前設(shè)定好的參數(shù)元組,在訓(xùn)練開(kāi)始前進(jìn)行手動(dòng)輸入和初始化操作。
表4 CNN參數(shù)調(diào)優(yōu)對(duì)比
通過(guò)表4中的數(shù)據(jù)對(duì)比發(fā)現(xiàn),當(dāng)CNN的參數(shù)設(shè)置為棄權(quán)率等于0.05,訓(xùn)練批次等于80,批次大小等于200的時(shí)候,算法在各項(xiàng)指標(biāo)均能達(dá)到較優(yōu)的水平。在所有參數(shù)中,棄權(quán)率的值對(duì)預(yù)測(cè)結(jié)果的影響最大,批次大小其次,而訓(xùn)練的批次值的變化對(duì)于結(jié)果影響相對(duì)較小。另外,對(duì)比表4中PSO和SFLA算法搜索的結(jié)果發(fā)現(xiàn),2種算法在RMSE、MAE以及FA上均表現(xiàn)較優(yōu)。但是,在實(shí)驗(yàn)過(guò)程中PSO算法的性能相比于SFLA來(lái)說(shuō)是極其不穩(wěn)定的。
2)實(shí)驗(yàn)2:不同模型預(yù)測(cè)結(jié)果對(duì)比。通過(guò)對(duì)未來(lái)24小時(shí)水位數(shù)據(jù)的擬合、預(yù)測(cè)來(lái)評(píng)估組合預(yù)測(cè)模型的準(zhǔn)確度和效果。分別采用CNN預(yù)測(cè)模型、LSTM預(yù)測(cè)模型、CNN-LSTM預(yù)測(cè)模型以及基于SFLA-CNN和LSTM組合預(yù)測(cè)模型對(duì)江蘇省太湖區(qū)域大浦口站點(diǎn)的水位進(jìn)行實(shí)驗(yàn)預(yù)測(cè),獲得的預(yù)測(cè)結(jié)果如圖4~圖7所示。其中橫坐標(biāo)表示未來(lái)24小時(shí)的時(shí)刻,縱坐標(biāo)表示不同時(shí)刻相對(duì)應(yīng)的水位值。
圖4 CNN預(yù)測(cè)結(jié)果與真實(shí)值對(duì)比
圖5 LSTM預(yù)測(cè)結(jié)果與真實(shí)值對(duì)比
圖6 CNN-LSTM預(yù)測(cè)結(jié)果與真實(shí)值對(duì)比
圖7 SFLA-CNN-LSTM預(yù)測(cè)結(jié)果與真實(shí)值對(duì)比
由實(shí)驗(yàn)結(jié)果可知,對(duì)于未來(lái)的24小時(shí)水位值的預(yù)測(cè),以上4種預(yù)測(cè)模型均能大致描述出其基本水位變化情況,預(yù)測(cè)結(jié)果的趨勢(shì)與水位真實(shí)值基本一致。CNN和LSTM這2種預(yù)測(cè)模型效果相對(duì)接近,比傳統(tǒng)算法均有較大的提升。其中CNN預(yù)測(cè)在考慮水位各個(gè)時(shí)刻的局部特征效果時(shí)比較良好,LSTM預(yù)測(cè)模型在考慮水位各個(gè)時(shí)刻的時(shí)序特征時(shí)表現(xiàn)更好。不過(guò)2個(gè)模型在部分時(shí)間段的預(yù)測(cè)都呈現(xiàn)一定的滯后現(xiàn)象,而且2個(gè)模型在全局峰值的預(yù)測(cè)與真實(shí)值有一定的偏差。CNN-LSTM預(yù)測(cè)模型結(jié)合了2個(gè)模型的優(yōu)點(diǎn),捕捉了局部特征和時(shí)序特征,其預(yù)測(cè)結(jié)果曲線與真實(shí)值相比,滯后現(xiàn)象稍微減少,且對(duì)全局預(yù)測(cè)峰值處的偏差稍微減小,但是整體上與真實(shí)值還是有一定的偏差?;赟FLA-CNN和LSTM組合預(yù)測(cè)模型在CNN-LSTM預(yù)測(cè)模型加入SFLA算法進(jìn)行參數(shù)選優(yōu),使得CNN模型能夠準(zhǔn)確地提取顯著性局部特征,避免了重要特征的丟失;同時(shí)LSTM可以提取更加準(zhǔn)確的時(shí)序特征,在整體上和峰值的預(yù)測(cè)結(jié)果更加準(zhǔn)確。
實(shí)驗(yàn)中,各個(gè)模型的評(píng)估指標(biāo)對(duì)比如表5所示。由結(jié)果可知,本文所提出的基于SFLA-CNN和LSTM組合預(yù)測(cè)模型在平均絕對(duì)誤差MAE、均方根誤差RMSE以及預(yù)報(bào)準(zhǔn)確率FA的各項(xiàng)評(píng)價(jià)指標(biāo)均為最優(yōu)。
表5 各模型評(píng)估指標(biāo)對(duì)比
本文針對(duì)單一模型對(duì)非線性水文時(shí)間序列預(yù)測(cè)精度低以及組合模型手動(dòng)調(diào)參效率低下、不準(zhǔn)確的問(wèn)題,提出了一種基于SFLA-CNN和LSTM的組合預(yù)測(cè)模型。該模型利用隨機(jī)蛙跳算法SFLA對(duì)CNN參數(shù)選擇過(guò)程進(jìn)行優(yōu)化以提高參數(shù)選擇精度,構(gòu)造出SFLA-CNN模型;并通過(guò)BP神經(jīng)網(wǎng)絡(luò)對(duì)SFLA-CNN和LSTM模型進(jìn)行非線性組合,從而得到最終的模型預(yù)測(cè)結(jié)果。本文基于江蘇省太湖區(qū)域大浦口站點(diǎn)不同時(shí)間段的水位和降雨量的水文序列數(shù)據(jù)進(jìn)行了相關(guān)實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,基于SFLA-CNN和LSTM的組合預(yù)測(cè)模型相對(duì)于其他單一模型、傳統(tǒng)CNN-LSTM組合模型,表現(xiàn)出了較高的預(yù)測(cè)準(zhǔn)確度和泛化能力,具備良好的通用性和應(yīng)用前景。未來(lái)將在此基礎(chǔ)上繼續(xù)開(kāi)展相關(guān)研究,制定有效的水位預(yù)測(cè)方案,為水利信息領(lǐng)域提供合理的科學(xué)決策。