羅上學(xué),張美玲,聶雅梅,賈曉楠,曹瑞紅,朱美婷,李曉娟
(甘肅農(nóng)業(yè)大學(xué)理學(xué)院,甘肅 蘭州 730070)
降水預(yù)測對農(nóng)業(yè)生產(chǎn)和水資源利用具有重要意義。由于氣象過程的多變性和隨機(jī)性,要準(zhǔn)確預(yù)測降水是非常困難的。近些年來,機(jī)器學(xué)習(xí)技術(shù)在復(fù)雜非線性過程建模中的應(yīng)用效果很好[1- 2]。各種機(jī)器學(xué)習(xí)模型,如支持向量機(jī)、隨機(jī)森林、BP神經(jīng)網(wǎng)絡(luò)和自適應(yīng)神經(jīng)模糊推理系統(tǒng)(ANFIS),已被用于預(yù)測降水量并取得了不錯的效果[3- 6]。雖然這些模型可以處理非線性數(shù)據(jù),但它們很難識別降水量數(shù)據(jù)之間的長期依賴關(guān)系,其預(yù)測精度有待提高。長短期記憶(long short-term memory,LSTM)模型加入單元狀態(tài)和門結(jié)構(gòu)來控制信息的傳遞,可以有效學(xué)習(xí)時間序列中的長期依賴關(guān)系。由于LSTM對時間序列問題優(yōu)秀的處理能力,被廣泛應(yīng)用于降水量預(yù)測建模。劉威等[7]使用遺傳算法優(yōu)化的LSTM模型對4個氣象站的月降水量進(jìn)行預(yù)測。劉新等[8]采用LSTM模型對青藏高原86個觀測站的月降水量進(jìn)行預(yù)測,結(jié)果表明LSTM模型整體預(yù)測精度高于傳統(tǒng)模型。陳慧等[9]通過LSTM模型對川東地區(qū)逐月降水量進(jìn)行預(yù)測,結(jié)果顯示LSTM模型與隨機(jī)森林模型相比具有普遍優(yōu)勢。然而,由于降水量呈現(xiàn)非線性,具有很強(qiáng)的復(fù)雜性,在某些月份會出現(xiàn)極端降水。但當(dāng)LSTM模型單獨(dú)用于高度非線性的降水量預(yù)測時,很難準(zhǔn)確預(yù)測到降水量序列的突變,存在較大誤差。
將數(shù)據(jù)去噪方法與數(shù)據(jù)驅(qū)動模型結(jié)合起來可以提高預(yù)測精度,經(jīng)驗(yàn)?zāi)B(tài)分解(EMD)是最常用的數(shù)據(jù)去噪方法之一。EMD是一種優(yōu)秀的非線性信號分析方法,它基于原信號局部極值點(diǎn)對信號進(jìn)行分解[10]。由于EMD方法經(jīng)常會遇到模態(tài)混疊問題,分解得到的本征模態(tài)函數(shù)(IMF)分量不能體現(xiàn)原序列的變化特征。集合經(jīng)驗(yàn)?zāi)B(tài)分解(EEMD)通過往原始序列里添加高斯白噪聲再求和平均,減輕了EMD的模態(tài)混疊程度,分解結(jié)果能更直觀地體現(xiàn)原序列的變化特征[11]。目前,基于EEMD的混合模型已經(jīng)成為水文和氣象預(yù)報的常用工具。黃春艷等[12]采用EEMD-GRNN模型對鄭州市年降水量進(jìn)行預(yù)測,結(jié)果顯示EEMD方法可以提高GRNN模型的性能。楊倩等[13]使用EEMD-LSTM預(yù)測天山北坡經(jīng)濟(jì)帶的年降水量。但在實(shí)際應(yīng)用中,EEMD方法添加白噪聲的幅度沒有確定的標(biāo)準(zhǔn),經(jīng)過集合平均后仍然會有一部分噪聲殘留下來,導(dǎo)致EEMD存在一定重構(gòu)誤差。完全集合經(jīng)驗(yàn)?zāi)B(tài)分解(CEEMDAN)對添加的白噪聲也一起分解,有效解決了EEMD分解速度慢和噪聲難以完全抵消的問題[14]。張金萍[15]等使用CEEMDAN-ARMA模型預(yù)測年徑流量,與單一ARIMA模型相比預(yù)測精度更高。本文建立了一種CEEMDAN-LSTM組合模型,對鄭州市月降水量進(jìn)行預(yù)測,并與LSTM、EEMD-LSTM和CEEMDAN-SVR模型的預(yù)測結(jié)果一起比較。
鄭州市是河南省省會,位于河南中部偏北。鄭州市屬于北溫帶大陸性季風(fēng)氣候,降水主要集中在夏季,其他季節(jié)的降水很少,因此鄭州市容易受到旱澇災(zāi)害的影響。本文選用鄭州站1951年1月—2020年12月的降水量數(shù)據(jù)進(jìn)行研究,前90%數(shù)據(jù)用于模型訓(xùn)練,后10%數(shù)據(jù)用來驗(yàn)證模型預(yù)測效果,數(shù)據(jù)來自中國氣象數(shù)據(jù)網(wǎng)(http://data.cma.cn)。鄭州市降水量序列如圖1所示,從中可以看出鄭州市降水量具有很強(qiáng)的非平穩(wěn)性和波動性。
CEEMDAN方法在分解時加入自適應(yīng)高斯白噪聲,并且對噪聲也進(jìn)行分解,有效減小了重構(gòu)誤差。CEEMDAN需要添加噪聲的次數(shù)比EEMD更少,提高了計算效率。CEEMDAN的具體分解步驟如下:
(1)在降水量P(t)中添加不同的高斯白噪聲wi(t):
Pi(t)=P(t)+ε0wi(t),i=1,2,…,N
(1)
式中,ε0—當(dāng)前分解階段的信噪比。
(2)
(3)計算第一個剩余分量r1(t):
(3)
(4)然后用EMD算法對信號r1(t)+ε1E1(wi(t))分解,可得第二個模態(tài)分量:
(4)
其中Ej(·)是經(jīng)過EMD分解后的第j個分量。
(5)對k=2,3,…,K,重復(fù)步驟(3)和(4),可得:
(5)
(6)
(6)重復(fù)計算步驟(5),直到剩余分量無法再分解(少于2個極值),最后得到k個模態(tài)分量。分解的最終殘差為:
(7)
最后降水量序列被分解為:
(8)
當(dāng)反向傳播誤差跨越多個時間步時,傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)容易發(fā)生梯度消失和爆炸問題,很難學(xué)習(xí)序列中的長期依賴關(guān)系[16]。LSTM神經(jīng)網(wǎng)絡(luò)引入了1個單元狀態(tài)和3個門(輸入門,遺忘門和輸出門)來控制信息的流動,很好地解決了這個問題[17]。LSTM的結(jié)構(gòu)如圖2所示,其中單元狀態(tài)可以儲存過去的信息,3個門用來控制信息的傳遞和更新。LSTM的具體計算步驟如下:
圖2 LSTM結(jié)構(gòu)
(9)
it=σ(Wi·[ht-1,xt]+bi)
(10)
(11)
(12)
ot=σ(Wo·[ht-1,xt]+bo)
(13)
ht=ot*tanh(ct)
(14)
式中,xt—當(dāng)前輸入;ht-1、ht—t-1時刻和t時刻隱藏層的輸出;Ct-1、Ct—t-1時刻和t時刻的單元狀態(tài);ft、it、ot—t時刻遺忘門、輸入門和輸出門的輸出;Wf、Wi、Wc、Wo—權(quán)重向量;bf、bi、bc、bo—偏置向量。
降水量數(shù)據(jù)具有很強(qiáng)的非線性和多變性,單一模型很難捕捉到降水量的變化規(guī)律。因此,本文采用CEEMDAN算法將降水量數(shù)據(jù)分解成一系列相對穩(wěn)定的分量,再分別對每一個分量構(gòu)建合適的LSTM模型,然后把所有分量的預(yù)測值求和得到降水量的預(yù)測值,具體步驟如圖3所示。
為了驗(yàn)證CEEMDAN-LSTM模型對降水量的預(yù)測結(jié)果,本文選取了3個經(jīng)典的統(tǒng)計指標(biāo)來評價,分別是均方根誤差(RMSE)、平均絕對誤差(MAE)、決定系數(shù)(R2),具體的計算公式如下:
(15)
(16)
(17)
圖3 CEEMDAN-LSTM流程圖
對鄭州市1951年1月—2020年12月的降水量序列進(jìn)行CEEMDAN分解,得到8個模態(tài)分量和一個殘差,如圖4所示。8個模態(tài)分量頻率依次遞減,殘差反映了降水量數(shù)據(jù)的總體變化趨勢。與原始降水量數(shù)據(jù)相比,各分量波動更小,建模難度更低。
圖4 鄭州市降水量CEEMDAN分解結(jié)果
表1是鄭州市月降水量序列及其分解結(jié)果的描述性統(tǒng)計。由表1可知,各分量的標(biāo)準(zhǔn)差比原始降水量序列的標(biāo)準(zhǔn)差小得多,說明各分量波動較小,離平均值更接近。此外,原始降水量序列的偏度和峰度都較大,說明原始降水量數(shù)據(jù)分布不對稱并且存在較多極端值。相比之下,各分量的偏度接近0,峰度也更小,說明各分量的分布近似對稱,極端值更少。因此,CEEMDAN是一種有效的數(shù)據(jù)分解方法,可以為LSTM模型提供更穩(wěn)定的輸入。
表1 原始降水量和分解結(jié)果統(tǒng)計
對各模態(tài)分量和殘差進(jìn)行歸一化處理,然后將前90%的數(shù)據(jù)用于訓(xùn)練LSTM模型,后10%的數(shù)據(jù)作為測試集來驗(yàn)證模型性能。采用一步預(yù)測方法對各分量預(yù)測,即用t時刻前l(fā)個數(shù)據(jù)(xt-l,xt-l+1,…,xt-1)作為模型輸入來預(yù)測t時刻的數(shù)據(jù)xt,其中l(wèi)是時間步長。LSTM網(wǎng)絡(luò)在Keras平臺上構(gòu)建,使用的激活函數(shù)為tanh,優(yōu)化器為Adam函數(shù),損失函數(shù)為均方誤差。經(jīng)過分解之后的數(shù)據(jù)隨機(jī)性大大降低,使用兩層隱藏層只會增加模型的復(fù)雜度和計算時間,對提高精度沒有明顯作用,因此所有LSTM模型都只使用一層隱藏層。為避免模型過擬合,采用Dropout方法在訓(xùn)練時隨機(jī)丟棄一些神經(jīng)元。使用指數(shù)衰減法動態(tài)調(diào)整學(xué)習(xí)率,在訓(xùn)練初期設(shè)置較大的學(xué)習(xí)率來快速接近最優(yōu)解,然后逐漸減小學(xué)習(xí)率,使模型更穩(wěn)定,計算公式如下:
(18)
式中,μ—當(dāng)前迭代次數(shù);β—衰減速度,即經(jīng)過β步迭代衰減一次,取值為200;λ—衰減系數(shù),取值為0.95;η—初始學(xué)習(xí)率,取值為0.01;η′—更新后的學(xué)習(xí)率。
在訓(xùn)練過程中高頻分量具有較高的復(fù)雜性,可以適當(dāng)增加時間步長。在模型預(yù)測完之后需要將預(yù)測值逆歸一化。由于各分量選取的時間步長不盡相同,每個分量的預(yù)測結(jié)果長度不一樣,以最短的序列長度為準(zhǔn),將其他序列多出來的值舍棄。對所有分量的預(yù)測值求和得到鄭州市月降水量的預(yù)測值。由于降水量沒有負(fù)值,預(yù)測結(jié)果里的負(fù)值用0代替。
為了驗(yàn)證混合CEEMDAN-LSTM模型的預(yù)測效果,選取了LSTM,EEMD-LSTM和CEEMDAN-SVR模型的預(yù)測結(jié)果進(jìn)行對比,如圖5所示。由圖5可知,單一LSTM只能大致預(yù)測降水量的變化趨勢,當(dāng)某些月份降水量較多時LSTM的預(yù)測誤差會迅速增大。與正常降水相比,極端降水事件更有可能對農(nóng)業(yè)生產(chǎn)和人民生活造成危害,因此有必要提高對極端降水月份的預(yù)測精度。EEMD-LSTM和CEEMDAN-SVR模型的預(yù)測結(jié)果比LSTM好,在降水量較多的月份與實(shí)測值更接近,說明對降水量序列進(jìn)行分解能提高模型的精度。CEEMDAN-LSTM模型的預(yù)測結(jié)果與實(shí)測值最接近,即使在降水量較多的月份也能準(zhǔn)確預(yù)測,這是因?yàn)镃EEMDAN將降水量序列里不同的波動特征完全分離出來,并且對加入的噪聲也進(jìn)行分解,減小了重構(gòu)誤差。經(jīng)過CEEMDAN分解后的各分量與原始降水量相比更有規(guī)律,從而讓LSTM模型能更好地捕捉到各分量的變化特征,有效提高了預(yù)測精度。
圖6是不同模型的預(yù)測結(jié)果與降水量觀測值對比的散點(diǎn)圖,其中實(shí)線是對角線,虛線是模型預(yù)測值和降水量觀測值的線性擬合。從圖6中數(shù)據(jù)點(diǎn)的分布情況可以發(fā)現(xiàn),LSTM模型的數(shù)據(jù)點(diǎn)比較分散,而且在降水量很多的月份LSTM模型的預(yù)測值遠(yuǎn)小于觀測值,說明LSTM模型不能深入挖掘出隨機(jī)性強(qiáng)的降水量序列的變化規(guī)律,其預(yù)測精度不夠。EEMD-LSTM模型對極端降水的預(yù)測精度較高,但對正常降水的預(yù)測存在一定偏差。CEEMDAN-SVR模型對降水量的總體預(yù)測精度較高,但是對極端降水的預(yù)測值略小于真實(shí)降水量。CEEMDAN-LSTM模型的數(shù)據(jù)點(diǎn)幾乎都分布在對角線上,說明CEEMDAN-LSTM模型對降水量的預(yù)測比較準(zhǔn)確。從各模型預(yù)測值與降水量觀測值的線性擬合可以看出,CEEMDAN-LSTM模型回歸方程的系數(shù)和R2接近1,說明CEEMDAN-LSTM模型的結(jié)果與降水量觀測值比較一致。
按照選取的統(tǒng)計指標(biāo)對各模型的預(yù)測性能進(jìn)行分析,結(jié)果見表2。由表2可知,單獨(dú)使用LSTM模型對降水量的預(yù)測存在較大的誤差。EEMD-LSTM、CEEMDAN-LSTM混合模型與LSTM模型相比,RMSE分別減少了36.44%和63.72%,MAE分別減少了23.29%和60.09%,R2分別提高了0.306和0.446,說明經(jīng)過分解之后再建模預(yù)測可以有效提高模型預(yù)測精度,并且CEEMDAN對模型精度提升更大。CEEMDAN-LSTM模型預(yù)測精度高于CEEMDAN-SVR模型,這是由于LSTM能夠很好地學(xué)習(xí)序列里的長期依賴關(guān)系,對時序數(shù)據(jù)的預(yù)測能力更強(qiáng)。在所有模型中,CEEMDAN-LSTM模型具有最小的RMSE、MSE和最高的R2,說明本文所使用的CEEMDAN-LSTM模型在降水量預(yù)測中具有一定優(yōu)越性。
圖6 降水量觀測值和預(yù)測值的散點(diǎn)圖
本文將CEEMDAN和LSTM的優(yōu)勢結(jié)合起來,構(gòu)建CEEMDAN-LSTM混合模型對鄭州市月降水量序列進(jìn)行預(yù)測。將降水量數(shù)據(jù)分解為一組更穩(wěn)定的分量之后,模型更容易識別各分量的變化特征,預(yù)測精度得到了明顯提升。CEEMDAN-LSTM模型的預(yù)測結(jié)果與真實(shí)降水量最接近,即使在降水量特別多的月份也有不錯的表現(xiàn)。在選用的3個評價指標(biāo)下,CEEMDAN-LSTM模型都表現(xiàn)出了最佳的性能,這表明本文提出的CEEMDAN-LSTM模型是預(yù)測鄭州市月降水量的合適工具。
在未來的研究中,可以嘗試將溫度,氣壓,相對濕度和風(fēng)速等氣象變量輸入模型來進(jìn)一步提高預(yù)測精度。