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