顧乾暉,胡 翌,涂振宇
(1.南昌工程學(xué)院 信息工程學(xué)院,江西 南昌,330099;2.江西省贛撫平原水利工程管理局,江西 南昌,330096)
水位預(yù)測(cè)的精確性對(duì)于防汛抗旱、航道管理和水資源調(diào)度與利用有著重大意義。河流水位具有復(fù)雜性、季節(jié)性、波動(dòng)性等特點(diǎn)[1]。并且受到降水量、支流和氣候變化等多種因素的影響,特別是近年來(lái)的異常氣候,這使得對(duì)河流水位預(yù)測(cè)變得更加復(fù)雜、更加困難。
近些年,隨著人工智能和大數(shù)據(jù)的快速發(fā)展,越來(lái)越多的學(xué)者利用機(jī)器學(xué)習(xí)和深度學(xué)習(xí)對(duì)水位進(jìn)行預(yù)測(cè)。許國(guó)艷和朱進(jìn)[2]等人利用CNN和MC組合模型對(duì)水位進(jìn)行預(yù)測(cè),并與其他模型進(jìn)行對(duì)比,實(shí)驗(yàn)結(jié)果表明取得良好的效果。郭燕和賴軍[3]把支流作為影響因子輸入LSTM神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)鄱陽(yáng)湖水位,取得不錯(cuò)的精度。商其亞和程耀東[4]等人利用混沌粒子群優(yōu)化SVM參數(shù),以此來(lái)對(duì)水位進(jìn)行預(yù)測(cè)。要震[5]等人利用遺傳算法優(yōu)化Elman模型對(duì)水位進(jìn)行預(yù)測(cè),實(shí)驗(yàn)結(jié)果表明精確度得到了提高。
在實(shí)際環(huán)境下,影響河流水位的因素眾多,河流水文數(shù)據(jù)不僅呈現(xiàn)出非線性特征也有時(shí)序性、復(fù)雜性和波動(dòng)性特征[6]。SVR雖然在捕捉非線性數(shù)據(jù)上表現(xiàn)出強(qiáng)大的能力,但無(wú)法考慮時(shí)序變化。同時(shí)影響水位數(shù)據(jù)因素眾多并且水文數(shù)據(jù)中包含許多復(fù)雜和不確定信息,運(yùn)用單一模型往往預(yù)測(cè)效果不理想。而LSTM神經(jīng)網(wǎng)絡(luò)不僅能處理多元變量之間的非線性映射關(guān)系,也能很好的處理時(shí)間序列數(shù)據(jù)[7]。
因此,為了更好的提高預(yù)測(cè)效果,本文首先利用PSO分別對(duì)SVR和LSTM這兩種模型進(jìn)行尋優(yōu),之后將優(yōu)化后的SVR和LSTM這兩種模型進(jìn)行按比例組合。本文提出的模型既可以處理水位變化的非線性特征,也能同時(shí)考慮水位變化的時(shí)序性和復(fù)雜性。利用該組合模型去預(yù)測(cè)修河水系的萬(wàn)家埠逐日水位量變化,取得很好的預(yù)測(cè)效果。
LSTM神經(jīng)網(wǎng)絡(luò)是從RNN神經(jīng)網(wǎng)絡(luò)基礎(chǔ)上改進(jìn)而來(lái),LSTM神經(jīng)網(wǎng)絡(luò)中的門控單元(輸入門、輸出門、遺忘門)使得模型具有較長(zhǎng)時(shí)間的“記憶功能”,因此LSTM神經(jīng)網(wǎng)絡(luò)適用于長(zhǎng)時(shí)間非線性序列預(yù)測(cè)問(wèn)題,LSTM神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)圖如圖1所示。
圖1 LSTM基本單元結(jié)構(gòu)
模型的輸入數(shù)據(jù)分別為t時(shí)刻的輸入數(shù)據(jù)xt,t-1時(shí)刻的記憶值ct-1和t-1時(shí)刻的LSTM的輸出值ht-1,輸出數(shù)據(jù)分別為t時(shí)刻的記憶值ct和LSTM輸出值ht。
“遺忘門”通過(guò)ft保留和丟棄上一時(shí)刻的記憶單元ct-1的信息來(lái)影響當(dāng)前時(shí)刻的細(xì)胞狀態(tài)[8]。ft公式如下:
式中,σ為 sigmoid激活函數(shù);bf為偏置頂;wht-1為輸入數(shù)據(jù)ht-1對(duì)應(yīng)的權(quán)重;wxt為輸入數(shù)據(jù)xt對(duì)應(yīng)的權(quán)重。
“輸入門”通過(guò)激活函數(shù)sigmoid將變量控制在[0,1]之間,并輸出 it。公式如下:
“遺忘門”和“輸入門”的變化決定了細(xì)胞狀態(tài)ct的變化。公式如下:
式中,bg為偏置頂;其余符號(hào)意義同前。
“輸出門”用來(lái)控制當(dāng)時(shí)時(shí)刻細(xì)胞狀態(tài)值的輸出。公式如下:
SVR(支持向量回歸機(jī))是Vapnik等人[9]在1995年提出的一種以統(tǒng)計(jì)學(xué)理論為基礎(chǔ)的回歸預(yù)測(cè)算法。SVR以結(jié)構(gòu)風(fēng)險(xiǎn)最小化的核心思想,通過(guò)構(gòu)建非線性映射,將原始數(shù)據(jù)集從低維空間映射到更高維的特征空間,然后在高維空間中通過(guò)創(chuàng)建一個(gè)線性函數(shù)得到預(yù)測(cè)值,改線性函數(shù)公式為:
式中:φ(x)為原始數(shù)據(jù)映射到高維空間的映射函數(shù);w為權(quán)值向量;b為偏置頂。
在SVR訓(xùn)練過(guò)程中可以將建模問(wèn)題轉(zhuǎn)換為二次凸規(guī)劃問(wèn)題,其形式如下:
式中:c為懲罰項(xiàng)系數(shù);ξi,ξ^i為松弛變量;ε 為不敏感損失函數(shù)。通過(guò)引入拉格朗日乘子算法將約束條件融入到公式(8)中,最終得到SVR模型如下所示:
式中:a 為大于 0 的拉格朗日乘子;K(x,xi)為滿足Mercer條件的核函數(shù)。
2.3.1 粒子群(PSO)優(yōu)化SVR和LSTM
SVR模型的預(yù)測(cè)效果受到懲罰系數(shù)c以及核參數(shù)g取值的影響,因此c和g的選擇對(duì)SVR模型的性能有著重大影響[10]。LSTM神經(jīng)網(wǎng)絡(luò)雖然在處理長(zhǎng)時(shí)間序列數(shù)據(jù)上有著很好的效果,但是LSTM計(jì)算過(guò)于復(fù)雜,并且當(dāng)輸入越長(zhǎng),數(shù)據(jù)間包含的信息量就越大,傳統(tǒng)的LSTM模型在訓(xùn)練過(guò)程中會(huì)表現(xiàn)出明顯的不穩(wěn)定性,甚至?xí)霈F(xiàn)梯度消失的現(xiàn)象[11]。
粒子群優(yōu)化算法(PSO)是一種群智能優(yōu)化算法。粒子群的優(yōu)化是將種群中的個(gè)體當(dāng)成多維搜索空間的粒子,每個(gè)粒子都有一個(gè)由目標(biāo)函數(shù)決定的適應(yīng)度值,在每一次迭代中,每一個(gè)粒子通過(guò)尋找個(gè)體最優(yōu)位置和全局最優(yōu)位置來(lái)不斷更新自己的位置和速度,直至到達(dá)尋優(yōu)條件[12]。
因此本文通過(guò)粒子群優(yōu)化(PSO)算法自動(dòng)迭代尋優(yōu)LSTM模型兩個(gè)重要參數(shù):神經(jīng)元個(gè)數(shù)(m)和學(xué)習(xí)率(lr)以及SVR模型的兩個(gè)重要參數(shù)懲罰系數(shù)c以及核參數(shù)g,并把水位預(yù)測(cè)結(jié)果的均方誤差(MSE)作為目標(biāo)函數(shù),MSE公式如下所示:
式中:yt是真實(shí)數(shù)據(jù),pt是預(yù)測(cè)值。
2.3.2 SVR-LSTM模型組合
多變量時(shí)序單元的輸入即LSTM神經(jīng)網(wǎng)絡(luò)的輸入,把前7天的日均水位、日均水流量、日降水量值作為L(zhǎng)STM模型的輸入,后1天的水位值作為輸出。輸入數(shù)據(jù)表達(dá)式見公式(11)。
式中:x、a、b分別表示日均水位、日均水流量、日降水量數(shù)據(jù)。
非線性單元的輸入即SVR模型的輸入,把前7天的水位值作為SVR模型的輸入,后1天的水位值作為輸出。輸入數(shù)據(jù)表達(dá)式見公式(12)。
式中:x表示水位數(shù)據(jù)。
2.3.3 PSO優(yōu)化SVR-LSTM組合模型
通過(guò)PSO優(yōu)化SVR-LSTM組合模型,得到PSOSVR-LSTM組合模型的輸出值為PSO-LSTM時(shí)序單元的預(yù)測(cè)值和PSO-SVR非線性單元的預(yù)測(cè)值的比例組合,組合模型的表達(dá)式如下:
式中,XT表示1日水位預(yù)測(cè)值;LT表示PSO-LSTM時(shí)序性單元輸出的1日水位預(yù)測(cè)值;ST表示PSO-SVR非線性單元輸出的1日水位預(yù)測(cè)值;a表示為(0,1)之間的數(shù)值。圖2為PSO-SVR-LSTM組合模型結(jié)構(gòu)圖。
圖2 PSO-SVR-LSTM組合模結(jié)構(gòu)圖
組合預(yù)測(cè)模型流程圖如圖3所示,其具體步驟如下。
圖3 PSO-SVR-LSTM組合模型流程圖
Step1:為了降低數(shù)據(jù)的波動(dòng)性,對(duì)日均水位、日降水量和日均水流量這三組數(shù)據(jù)進(jìn)行最大最小值歸一化。
Step2:構(gòu)建LSTM神經(jīng)網(wǎng)絡(luò)時(shí)序水位預(yù)測(cè)單元。把日均水位、日降水量、日均水流量這三組數(shù)據(jù)作為L(zhǎng)STM模型的輸入,在LSTM模型中進(jìn)行訓(xùn)練,同時(shí)把LSTM模型預(yù)測(cè)到的水位數(shù)據(jù)作為該模型的輸出。
Step3:構(gòu)建SVR非線性水位預(yù)測(cè)單元。把水位這個(gè)單獨(dú)變量作為SVR模型的輸入,同時(shí)把SVR模型預(yù)測(cè)到的水位數(shù)據(jù)作為該模型的輸出。
Step4:利用粒子群(PSO)分別優(yōu)化SVR和LSTM模型參數(shù),選取均方誤差MSE作為評(píng)價(jià)標(biāo)準(zhǔn)和各粒子的適應(yīng)度值,得到兩組模型的最優(yōu)參數(shù)。
Step5:令經(jīng)過(guò)PSO優(yōu)化后的LSTM模型的權(quán)重值為a。同時(shí)令經(jīng)過(guò)PSO優(yōu)化后的SVR模型的權(quán)重值為(1-a)。分別利用各自的權(quán)重值組合成水位組合預(yù)測(cè)模型,其表達(dá)式具體見公式(13)。
Step6:通過(guò)不斷迭代尋找最優(yōu)的權(quán)值參數(shù)a,并利用組合模型對(duì)水位進(jìn)行預(yù)測(cè),得到最終水位預(yù)測(cè)值。
實(shí)驗(yàn)所使用計(jì)算機(jī)配置如下:處理器為(英特爾)Intel(R) Core(TM) i5-8400 CPU@2.80GHz,顯卡為NVIDIA GeForce GTX 1050 Ti,內(nèi)存為 16 GB,操作系統(tǒng)為windows10;程序設(shè)計(jì)語(yǔ)言為Python3.7;集成開發(fā)環(huán)境為Anaconda和Visual Code;程序中TensorFlow由2.1.0版本實(shí)現(xiàn),scikit-learn由0.2.0版本實(shí)現(xiàn)。
本文所用的數(shù)據(jù)是江西南昌潦水水域萬(wàn)家埠水文站,選擇從2017年1月1號(hào)至2020年12月30號(hào)的逐日平均水位、日均流量、日降水量數(shù)據(jù),共1462條數(shù)據(jù),其中日降水量為整個(gè)潦水流域的日降水量的算術(shù)平均值。將前三年數(shù)據(jù)作為訓(xùn)練集,后一年數(shù)據(jù)作為測(cè)試集。訓(xùn)練集與測(cè)試集按比例分別劃分為80%與20%,數(shù)據(jù)集劃分如圖4所示。
圖4 萬(wàn)家埠水位數(shù)據(jù)集
由于水文數(shù)據(jù)類型不同,為了提高模型的收斂速度和計(jì)算精度,需要對(duì)樣本數(shù)據(jù)進(jìn)行最大最小值歸一化處理,即:
式中,ximax表示變量i的最大值;ximin表示變量i的最小值。
將收集到的在線水文數(shù)據(jù)經(jīng)過(guò)數(shù)據(jù)歸一化后作為PSO-SVR-LSTM組合模型的輸入?yún)?shù),并利用均方誤差MSE作為評(píng)價(jià)指標(biāo)。
為了驗(yàn)證本文提出的預(yù)測(cè)模型的有效性,選取BP、SVR、PSO-SVR、PSO-LSTM 和 PSO-BP-LSTM 等預(yù)測(cè)模型與PSO-SVR-LSTM模型進(jìn)行對(duì)比實(shí)驗(yàn)。這幾種預(yù)測(cè)模型均在相同的實(shí)驗(yàn)平臺(tái)和環(huán)境下進(jìn)行實(shí)驗(yàn)。
首先利用粒子群算法(PSO)分別對(duì)LSTM神經(jīng)網(wǎng)絡(luò)的神經(jīng)元個(gè)數(shù)m1、學(xué)習(xí)率lr和擁有rbf核函數(shù)SVR的懲罰因子c、核參數(shù)g以及單隱含層的BP神經(jīng)網(wǎng)絡(luò)的神經(jīng)元個(gè)數(shù)m2進(jìn)行尋優(yōu),將MSE作為目標(biāo)函數(shù),最后優(yōu)化后的各個(gè)模型的參數(shù)取值見表1。
表1 對(duì)比模型參數(shù)設(shè)置
接著對(duì)于PSO-SVR-LSTM組合模型,利用不斷迭代尋找組合的模型的最優(yōu)權(quán)重a。最終經(jīng)過(guò)PSO尋優(yōu)后,得出權(quán)重值a為0.82。
為了更加直觀的看出本文提出的PSO-SVR-LSTM模型在預(yù)測(cè)精度上的提高,分別對(duì)各個(gè)模型進(jìn)行繪圖。如圖5和圖6所示,經(jīng)過(guò)PSO優(yōu)化后的LSTM和BP模型都要比普通LSTM和BP的準(zhǔn)確度效果要好。如圖7所示,雖然PSO-SVR模型與水位真實(shí)數(shù)據(jù)偏離度較高,但是相對(duì)于其他模型,PSO-SVR在波峰點(diǎn)以及線型上與真實(shí)數(shù)據(jù)更相似。如圖8所示PSO-SVR-LSTM模型在精確度以及擬合度上都要比PSO-LSTM和PSOSVR效果好。
圖5 BP與PSO-BP模型預(yù)測(cè)值
圖6 LSTM、PSO-LSTM預(yù)測(cè)值
圖7 PSO-BP、PSO-LSTM預(yù)測(cè)值
圖8 PSO-SVR-LINEAR與PSO-SVR-RBF預(yù)測(cè)值
為了更加精確體現(xiàn)各種模型之間的性能對(duì)比,根據(jù)真實(shí)數(shù)據(jù)與預(yù)測(cè)數(shù)據(jù)繪制出這四種模型的性能對(duì)比表,如表2??梢詮谋碇锌闯觯琍SO-SVR-LSTM組合模型在MSE、MAE、R2以及RMSE四種評(píng)價(jià)指標(biāo)上都比其他模型效果要好。
表2 模型性能對(duì)比表
從以上實(shí)驗(yàn)結(jié)果可知,本文提出的PSO-SVRLSTM組合模型預(yù)測(cè)模型均方誤差(MSE)和平均絕對(duì)誤差(MAE)最小,決定系數(shù)(R2)最大。相對(duì)于其他水位模型,PSO-SVR-LSTM組合模型有著較強(qiáng)的泛化能力和預(yù)測(cè)精度。因此本文提出的PSO-SVR-LSTM模型可以有效運(yùn)用于河流的水位預(yù)測(cè)當(dāng)中。
圖9 PSO-LSTM-BP、PSO-LSTM、PSO-SVR-LSTM 預(yù)測(cè)值
本文首先將河流日均水位、日降水量、日均水流量數(shù)據(jù)通過(guò)均值平滑法填補(bǔ)缺失值。為了減少數(shù)據(jù)的波動(dòng),通過(guò)最大最小值歸一化方法對(duì)數(shù)據(jù)進(jìn)行處理。然后把處理后水位數(shù)據(jù)放入SVR非線性單元中,把日均水位、日降水量、日均水流量數(shù)據(jù)放入LSTM單元中。通過(guò)粒子群(PSO)分別優(yōu)化SVR和LSTM,再通過(guò)迭代找出最優(yōu)權(quán)值a。實(shí)驗(yàn)結(jié)果表明本文提出的PSO-SVRLSTM預(yù)測(cè)模型的誤差最小,與真實(shí)數(shù)據(jù)更加吻合,預(yù)測(cè)模型的性能比 PSO-LSTM、PSO-SVR、PSO-BP和PSO-BP-LSTM等預(yù)測(cè)模型更加準(zhǔn)確、取得更好的預(yù)測(cè)效果,為水位預(yù)報(bào)決策和防洪抗旱提供更有力的參考依據(jù)。