李 港 ,幸 興 ,黃健明 ,駱德漢
(1.廣東工業(yè)大學(xué) 信息工程學(xué)院,廣東 廣州 510006;2.廣東瑞德智能科技股份有限公司,廣東 佛山528000;3.廣州華匠科技有限公司,廣東 佛山 511457)
溶解氧(Dissolved Oxygen,DO)在水體中的含量能夠反映出水體的污染程度、生物的生長狀況,是衡量水質(zhì)優(yōu)劣的重要指標之一。而水質(zhì)的好壞直接影響水生生物的生長及其產(chǎn)品品質(zhì)。所以,對DO進行精準監(jiān)測、預(yù)測和預(yù)防是非常有必要的。水產(chǎn)養(yǎng)殖池塘中的水是一個開放、非線性、動態(tài)、復(fù)雜的系統(tǒng),水質(zhì)很容易受到物理、化學(xué)、生物和人類活動等許多因子的影響。所以,運用現(xiàn)代化信息技術(shù)尋找適合水質(zhì)監(jiān)測和預(yù)測的方法變得尤為迫切[1]。
水質(zhì)參數(shù)的預(yù)測本質(zhì)上是時間序列預(yù)測問題,目前,國內(nèi)外已有多種建模方法被用于預(yù)測時間序列,并取得了不錯的效果。文獻[2]設(shè)計了一種ARIMA與神經(jīng)網(wǎng)絡(luò)相結(jié)合的水質(zhì)參數(shù)預(yù)測混合模型。文獻[3]針對傳統(tǒng)溶解氧預(yù)測方法預(yù)測精度低和魯棒性差的問題,提出了一種基于改進粒子群算法和最小二乘支持向量回歸模型相結(jié)合的溶解氧預(yù)測模型。文獻[4]為了提高水產(chǎn)養(yǎng)殖過程中的溶解氧預(yù)測精度,提出了基于PCA和LSTM的水產(chǎn)養(yǎng)殖溶解氧預(yù)測模型。文獻[5]針對水培養(yǎng)殖系統(tǒng)的溶解氧預(yù)測問題,提出了一種基于遺傳算法和模糊神經(jīng)網(wǎng)絡(luò)的溶解氧預(yù)測模型。文獻[6]為了提高不同水質(zhì)參數(shù)預(yù)測模型的精度和穩(wěn)定性,同時處理長期依賴問題,提出了一種基于改進的Dempster/Shafer(D-S)證據(jù)理論和三種RNN的集成預(yù)測方法。
現(xiàn)代智能算法取得了良好預(yù)測效果,但溶解氧序列具有非線性和非平穩(wěn)性的特點,勢必會影響上述方法的預(yù)測性能,所以對溶解氧序列進行降噪處理十分必要。CEEMDAN分解獲得的各IMF(Intrinsic Mode Functions)相對簡單且相互獨立,為充分提取IMF子序列的波動特征提供了有利條件,進而提升預(yù)測建模精度。另一方面,LSTM通過引入門控單元系統(tǒng),解決了傳統(tǒng)RNN模型訓(xùn)練中梯度爆炸和梯度消失問題,在提取序列數(shù)據(jù)中的長期依賴關(guān)系方面極具優(yōu)勢,可利用前期“記憶”為當(dāng)前決策提供支持,是當(dāng)前復(fù)雜高維時序數(shù)據(jù)分析中最成功的非線性建模方法之一,也是近年來數(shù)據(jù)建模領(lǐng)域的研究熱點。
本文在CEEMDAN和LSTM的基礎(chǔ)上,提出了一種混合模型,該模型首先通過CEEMDAN對溶解氧時間序列進行預(yù)處理,然后通過LSTM對其分量進行預(yù)測。最后的預(yù)測是通過整合各分量預(yù)測結(jié)果得到的。用所提出的CEEMDAN-LSTM組合預(yù)測模型、LSTM模型、ARIMA模型、GRU模型以及 CEEMDAN-GRU組合預(yù)測模型在實驗數(shù)據(jù)中進行了預(yù)測,實驗結(jié)果表明,與其他模型相比,本文提出的模型在溶解氧含量預(yù)測方面具有很大的優(yōu)越性。
CEEMDAN的提出,來源于對EMD(經(jīng)驗?zāi)B(tài)分解)算法的改進。EMD是由美籍華人 Huang[7]提出的一種新型方法,用來處理具有非線性、非平穩(wěn)特征的信號。它能夠較好地對不同尺度下的特征信息進行提取,不再需要提前進行分析和研究,根據(jù)信號本身的特征就能進行自適應(yīng)分解。但EMD分解過程中,會出現(xiàn)干擾最終分解效果的模態(tài)(頻率)混疊現(xiàn)象。
而 EEMD(總體經(jīng)驗?zāi)B(tài)分解)算法的出現(xiàn),通過在分解過程中加入服從正態(tài)均勻分布的白噪聲,克服了EMD模態(tài)混疊的缺陷,保證了分解的有效性[8]。但是在這個過程中引入的噪聲在多次平均后仍可能影響到子序列,最后影響預(yù)測精度。為了平滑干擾脈沖,CEEMDAN算法引入了自適應(yīng)白噪聲,使得分解過程更加完整有效,也降低了重構(gòu)誤差[9]。具體到本文的溶解氧含量預(yù)測問題中,分解步驟如下:
(1)在原始溶解氧序列 Do(t)中添加不同幅值 ?的白噪聲wi(t),得到用來進行分解的信號,可以用式(1)表示:
(3)用式(3)求得第一個剩余分量 r1(t),對于信號r1(t)+α1EMD1(wi(t))利用 EMD算法進行進一步分解,得到第二個IMF分量,如式(4)所示。定義操作符EMDj(·)為經(jīng)過 EMD分解后的第j個 IMF分量。
(5)重復(fù)步驟(4),直到剩余分量 rk(t)滿足以下停止條件:
其中 T為溶解氧序列 Do(t)的長度,閾值 S按照經(jīng)驗設(shè)置為0.2[10]。最后得到分解完成的信號,描述為如式(8)所示:
由于傳統(tǒng)RNN存在著梯度消失和爆炸問題,Hochreiter[11]提出了一種遞歸神經(jīng)網(wǎng)絡(luò)(RNNs)的改進形式,很好地解決了這個問題,這就是LSTM(Long Short-Term Memory),非常適合處理和預(yù)測長時間序列,其結(jié)構(gòu)如圖1所示。
圖1 LSTM結(jié)構(gòu)圖
LSTM體系結(jié)構(gòu)的巧妙之處就在于通過增加遺忘門、更新門、輸入門和輸出門,使得自循環(huán)的權(quán)重是可以變化的;以及增加了一個稱為cell的存儲器單元,通過對這些門的操作,信息可以存儲在單元中、寫入單元或從單元中讀取。具體計算方程如下:
式中,Wx和 bx,x∈(f,u,i,o) 分別是各自門的權(quán)值矩陣和偏置;上一單元的輸出yt-1和當(dāng)前單元的輸入xt集中作為LSTM的輸入;Ct-1和Ct分別表示先前和當(dāng)前狀態(tài);σ表示sigmoid激活函數(shù),tanh表示hyperbolic tangent激活函數(shù)。
以往的研究發(fā)現(xiàn),CEEMDAN方法在時間序列分解方面具有優(yōu)勢,而LSTM方法在長時間序列預(yù)測方面具有優(yōu)勢[12]。因此,本文將這兩種方法結(jié)合起來,提出了一種用于溶解氧時間序列預(yù)測的CEEMDAN-LSTM組合方法,包括分解、分量預(yù)測和集成3個過程,具體流程圖如圖2所示。
圖2 CEEMDAN-LSTM流程圖
在第一階段,使用CEEMDAN方法將原始溶解氧時間序列分解為n+1個分量,包括n個IMF和一個剩余分量。
在第二階段,利用長短期記憶(LSTM)建立各分量的預(yù)測模型。然后,使用建立的模型對每個分量進行預(yù)測,最終得到不同頻率分量的預(yù)測結(jié)果。
在第三階段,將所有分量的預(yù)測結(jié)果匯總為最終結(jié)果。雖然有許多方法可以聚合所有預(yù)測結(jié)果,但在本研究中,以相等的權(quán)重將所有分量的預(yù)測結(jié)果相加。
本文所述CEEMDAN-LSTM模型的訓(xùn)練和測試,都是在經(jīng)過預(yù)處理之后的溶解氧時間序列中進行的,為了對模型進行更加清晰的評估,選取了一些指標進行評價,分別是均方根誤差(RMSE)、平均絕對誤差(MAE)、平均絕對百分誤差(MAPE)和擬合優(yōu)度(R2),計算公式如下:
3.1.1 數(shù)據(jù)集
實驗數(shù)據(jù)來源于某河流上的水質(zhì)實時監(jiān)測站,采集的數(shù)據(jù)類型包括耗氧量、氨氮化合物、PH值和溶解氧。監(jiān)測頻率為每天一次,共計3 000天的數(shù)據(jù),單位為mg/L,本文用到的只有溶解氧含量這一數(shù)據(jù)。
觀察數(shù)據(jù)集中的數(shù)據(jù)發(fā)現(xiàn)沒有缺省值和零值,所以不需要進行插值處理,在數(shù)據(jù)預(yù)處理過程中主要考慮異常值檢測。本文首先對數(shù)據(jù)進行歸一化處理,之 后采用了孤立森 林(Isolation Forest,iForest)算法進行異常值檢測[13]。iForest不再基于距離或密度來檢測異常,消除了之前的主要計算成本;具有線性時間復(fù)雜度、低常數(shù)和低內(nèi)存需求;其擴展能力也使它適用于超大數(shù)據(jù)量和高維問題。
本文設(shè)置異常比例為0.025,最后得到檢測結(jié)果如圖3所示。
從圖3中發(fā)現(xiàn)總共找出70個異常值,對于這些異常值采用剔除的方式進行處理,處理完的數(shù)據(jù)規(guī)格為 2 930×1。
圖3 異常值檢測結(jié)果圖
3.1.2 對比模型
為了驗證所提出模型的優(yōu)越性,除單個LSTM模型外,本文還與以下幾種模型及它們與CEEMDAN算法的復(fù)合模型進行了對比:
(1)ARIMA模型:ARIMA(自回歸移動平均模型)是由Box和Jenkins提出,其使用要求時間序列必須是穩(wěn)定的,如果不是,則需要將非平穩(wěn)時間序列通過差分法轉(zhuǎn)化為平穩(wěn)時間序列,然后將因變量僅對它的滯后值以及隨機誤差項的現(xiàn)值和滯后值進行回歸,建立模型[14]。
(2)GRU模型:和 LSTM 一樣,GRU(Gated Recurrent Unit)是傳統(tǒng)RNN的變體,但它具有比LSTM更簡單的結(jié)構(gòu),而且更容易計算和訓(xùn)練[15]。不過它們都能有效獲取到長序列之間的關(guān)聯(lián),并緩解傳統(tǒng)RNN存在的梯度消失或爆炸問題。
(3)CEEMDAN-GRU模型:為了驗證同為RNN變體的GRU和CEEMDAN算法組合的性能,將本文所提出的CEEMDAN-LSTM模型中用到LSTM的部分替換為GRU,就得到了CEEMDAN-GRU模型。
3.1.3 平臺和環(huán)境參數(shù)
本文所使用計算機的配置如下:處理器為Intel Core i5-8265U,CPU頻率為1.6 GHz;內(nèi)存為 8.00 GB;操作系統(tǒng)為Windows 10(64 bit);程序設(shè)計語言為Ppython 3.8;集成開發(fā)環(huán)境為PyCharm Community Edition 2020.2.3。
本文模型仿真在Keras框架的基礎(chǔ)上實現(xiàn)。模型訓(xùn)練的過程是使損失函數(shù)最小化,因此在定義損失函數(shù)后,設(shè)置合適的優(yōu)化器來解決參數(shù)優(yōu)化問題對實驗結(jié)果非常重要。目前的深度學(xué)習(xí)庫中有許多優(yōu)化算法可供選擇,如隨機梯度下降(SGD)、自適應(yīng)矩估計(Adam)和均方根傳遞(RMSProp)。理想的優(yōu)化算法不僅可以利用訓(xùn)練樣本盡快得到最優(yōu)模型,而且可以防止過度擬合。為了選擇最佳的優(yōu)化器,本文進行了對比實驗,比較了不同優(yōu)化器在訓(xùn)練LSTM模型時的均方誤差(MSE)損失。通過對比實驗發(fā)現(xiàn)Adam方法是最好的,Adam作為一種有效的隨機優(yōu)化方法得到了廣泛的應(yīng)用。因此,在訓(xùn)練模型的過程中采用Adam優(yōu)化算法,可以更快地收斂到好的結(jié)果。對于激活函數(shù),由于網(wǎng)絡(luò)結(jié)構(gòu)不是很復(fù)雜,選擇默認的tanh作為激活函數(shù)。在本研究中,LSTM的輸入是 2 484×6×1的數(shù)據(jù)。
3.2.1 仿真分析
首先,對于經(jīng)過預(yù)處理之后的原始溶解氧時間序列 Do(t),用上文所提到的CEEMDAN方法進行分解。如圖4所示,是溶解氧時間序列經(jīng)過CEEMDAN分解后的IMF和剩余分量。
圖4 CEEMDAN分解結(jié)果
圖4中第一行所示即為數(shù)據(jù)集原始溶解氧時間序列Do(t),具有高度的非線性和非平穩(wěn)性;其下方的IMF0~IMF6為7個IMF分量,波動頻率逐漸降低;最下面的r為剩余分量。
分別對所得分量建立LSTM預(yù)測模型。對于每個分量,取前85%的數(shù)據(jù)作為訓(xùn)練集,后15%的數(shù)據(jù)作為測試集,數(shù)據(jù)規(guī)格分別為2 490×1和 440×1。對于劃分好的數(shù)據(jù)集,根據(jù)所構(gòu)建的網(wǎng)絡(luò)模型結(jié)構(gòu)進行數(shù)據(jù)重構(gòu),本文設(shè)置回望窗口為6,即以前6個數(shù)據(jù)預(yù)測第6+1個數(shù)據(jù),重構(gòu)完的訓(xùn)練集輸入和輸出規(guī)格分別為2 484×6×1和 2 484×1, 測試集輸入和輸出規(guī)格分別為 434×6×1和 434×1。模型在訓(xùn)練集上進行訓(xùn)練,完成之后保存模型并在測試集上進行檢測。
由此,得到了各分量預(yù)測結(jié)果。接下來,對所有預(yù)測結(jié)果進行疊加求和,就得到原始變量的最終預(yù)測結(jié)果。
溶解氧時間序列在CEEMDAN-LSTM模型的預(yù)測下,得到的最終預(yù)測結(jié)果如圖5所示。圖中實線是真實數(shù)據(jù),虛線是模型的預(yù)測數(shù)據(jù)。
圖5 CEEMDAN-LSTM模型預(yù)測結(jié)果
根據(jù)模型評價指標,所提出的CEEMDAN-LSTM模型的均方根誤差(RMSE)為 0.024 5,平均絕對誤差(MAE)為 0.016 6,平均絕對百分誤差(MAPE)為0.065 2,擬合優(yōu)度(R2)為 0.985 6。不管是從圖像上還是從數(shù)據(jù)上,都可以看出模型很好地預(yù)測了數(shù)據(jù)的走向,使用CEEMDAN-LSTM預(yù)測模型可以很好地利用前期輸入的數(shù)據(jù)預(yù)測之后一段時間的數(shù)據(jù)。
3.2.2 模型對比分析
為了研究該方法的性能,本文和其他方法進行了對比,預(yù)測結(jié)果曲線對比如圖6所示。此外,還對各預(yù)測模型的預(yù)測值和真實值進行了嚴格的定量分析,具體統(tǒng)計結(jié)果如表1所示。
圖6 各模型預(yù)測結(jié)果對比圖
表1 各模型評價指標對比
從圖6可以看出,ARIMA模型可以預(yù)測出數(shù)據(jù)走向,但是存在很大的時差,其余模型都有較好的預(yù)測效果,但是在圖中無法肉眼辨別優(yōu)劣,所以結(jié)合表1中的模型評價參數(shù)進行比較。其中,從RMSE、MAE和MAPE這三個評價指標來看,其數(shù)值越接近于0,效果越好。另外,根據(jù)評價指標 R2來看,其數(shù)值越接近于1,則模型效果越好。綜合上述四個評價指標考慮,可以得出結(jié)論,本文提出的CEEMDAN-LSTM模型在水體溶解氧含量預(yù)測問題上具有更好的表現(xiàn)。
為了提高水體溶解氧時間序列的預(yù)測性能,提出了一種CEEMDAN和LSTM相結(jié)合的混合預(yù)測模型CEEMDAN-LSTM。該方法利用CEEMDAN將一個復(fù)雜的溶解氧時間序列分解為多個分量,然后利用基于LSTM的預(yù)測模型分別對每個分量進行預(yù)測,最終的預(yù)測結(jié)果由各分量的預(yù)測結(jié)果以相等的權(quán)值累加得到。實驗結(jié)果表明,該組合模型的預(yù)測效果優(yōu)于本文所對比的其他預(yù)測模型,“分解與集成”框架可以顯著提高溶解氧時間序列預(yù)測的性能。CEEMDAN參數(shù)的選擇對預(yù)測結(jié)果有顯著影響,因此,如何在時間序列分解過程中有效地選擇合理的參數(shù),將是今后研究的重點。