陳金紅 崔東文
(1.云南省水利水電投資有限公司,昆明 650051;2.云南省文山州水務局,云南 文山 663000)
水面蒸發量是反映全球水循環變化趨勢的重要指標之一,是核定區域水資源量的重要內容.提高水面蒸發量預測精度,對于水文情報預報及分析區域水量平衡、水資源變化趨勢具有重要意義.近年來,各種機器學習模型,如隨機森林[1]、GPR、Cat Boost、XGBoost網絡[2]、BP神經網絡[3]、RBF神經網絡[4]等已在水面蒸發量預測研究中得到應用,并取得較好的預測效果.由于水面蒸發量時間序列受熱力因子、動力因子、水分因子等影響[5],常表現出非線性和多尺度等特征,傳統單一模型難以獲得滿意的水面蒸發量預測效果.當前,基于“分解算法+智能算法+預測模型+疊加重構”的預測方法已在各行業領域及水文預測預報研究中得到廣泛應用[5-7],但鮮見于水面蒸發量時間序列預測.
極端梯度提升(XGBoost)算法是在GBDT(gradient boosting decision tree,GBDT)算法的基礎上做了大量優化,提升了算法的性能和速度,是樹集成算法的典型代表,具有擬合效果好、訓練速度快等優點,已在水面蒸發量[8]、降水量[9]、電力峰值負荷預測[10]等領域得到廣泛應用.然而,XGBoost算法包含迭代次數、學習率、最大樹深、最小樣本權重和、樣本采用率等許多超參數,這些超參數對預測模型的實現效率和預測性能有著較大影響,超參數的合理選取是提升XGBoost算法預測性能的關鍵,目前,遺傳算法等[11-16]若干優化算法已在XGBoost超參數調優中得到應用,并取得較好的調優效果.
為提高水面蒸發量時間序列預測精度,改進XGBoost預測性能,拓展群體智能算法(swarm intelligence algorithms,SIA)在XGBoost超參數調優中的應用范疇,本文基于小波包變換(wavelet packet transform,WPT)和“分解算法+智能算法+預測模型+疊加重構”思想,研究提出金豺優化(golden jackal optimization,GJO)算法調優XGBoost超參數的水面蒸發量時間序列預測模型,并構建WPTPSO-XGBoost、WPT-GJO-SVM、WPT-PSO-SVM、WPT-XGBoost對比分析模型,通過云南省龍潭站、董湖站、西洋站1991年1月至2021年12月逐月水面蒸發量時序數據對各模型預測性能進行驗證,為水面蒸發量預測研究提供參考.
云南省氣候、地形類型多樣,各水文要素分布十分復雜.龍潭站始建于1952 年2 月,位于盤龍河中游,控制徑流面積3 128 km2,屬國家重要水文站和中央報汛站,觀測項目有水位、流量、蒸發等.盤龍河流域屬低緯度高原季風氣候,流域內冬無嚴寒,夏無酷暑,年溫差小,日溫差大,無霜期長,流域月平均蒸發量82.6 mm,最大月蒸發量168.4 mm,最小月蒸發量40.3 mm,蒸發量起伏波大,差異明顯.由于海拔高低懸殊,具有明顯的立體氣候特征.董湖站設立于1958年12月,位于南利河下游,控制流域面積2 369 km2,屬國家重要水文站和中央報汛站,觀測項目有水位、流量、蒸發等.南利河流域地處低緯度地區,屬南亞熱帶高原季風氣候,具有冬春干涼、夏秋濕潤,氣候垂直差異大、立體氣候明顯等特征.高海拔的山地為暖濕帶、濕帶氣候,下游河谷為熱帶氣候.流域蒸發量年內分配不均,一般最大蒸發出現在4-5月,11月至次年2月蒸發量最少.流域月平均蒸發量75.1 mm,最大月蒸發量139.8 mm,最小月蒸發量38.1 mm,月蒸發量差異明顯.西洋站設立于1958年10月,位于西洋江中游,控制流域面積2 473 km2,屬國家重要水文站和中央報汛站,觀測項目有水位、流量、降雨、蒸發.西洋江流域屬于中亞熱帶高原季風氣候,常年氣候溫和,流域內雨水充沛,雨量集中,干濕季分明,氣候總特征為“夏無酷暑,冬無嚴寒”.流域月平均蒸發量73.7 mm,最大月蒸發量144.5 mm,最小月蒸發量29.6 mm,月蒸發量差異顯著.龍潭站、董湖站、西洋站蒸發觀測均采用E601型蒸發皿.
本文以云南省龍潭站、董湖站、西洋站1991年1月至2021年12月共372組逐月水面蒸發量為研究對象,逐月蒸發量時序數據變化曲線如圖1所示.從圖1可以看出,龍潭站、董湖站、西洋站月蒸發時序數據呈現出典型的出多尺度、非線性特征.

圖1 龍潭站、董湖站、西洋站逐月水面蒸發時序數據
2.2.1 小波包變換(WPT)
WPT 能同時對信號低頻部分和高頻部分進行分解,更適用于水面蒸發量時間序列分解.WPT 對水面蒸發量原始信號進行分解的公式為[17-21]:
式中各參數意義詳見文獻[17-21].
2.2.2 金豺優化(GJO)算法
GJO 算法是Nitish Chopra等于2022年提出的一種基于種群的新型元啟發式優化算法[22].該算法靈感來自于自然界中金豺協作狩獵行為,算法通過一對雄性和雌性金豺協同搜索獵物、包圍獵物、突襲獵物建立數學模型實現待優化問題的求解.
參考文獻[22],GJO 數學描述簡述如下:
1)初始化.與其他元啟發式算法一樣,GJO 通過隨機初始化金豺種群開始,金豺個體初始化位置描述為:
式中:Y0為金豺個體初始位置;Ymax、Ymin為搜索范圍上、下限;Rand為[0,1]范圍內的隨機數.
2)探索階段(搜索獵物).GJO 中,金豺知道如何感知和跟蹤獵物,但偶爾會有獵物逃脫.狩獵由雄性金豺領導,雌性金豺跟隨雄性金豺狩獵.搜索行為描述如下:
式中:Y1(t)、Y2(t)為對應獵物的雄性和雌性金豺位置;t為當前迭代次數;Prey(t)為第t次迭代獵物位置;YM(t)、YFM(t)為雄性和雌性金豺第t次迭代位置;E為獵物逃避能量,描述為:E=c1·[1-(t/T)]·(2r-1),c1為常數,本文取1.5;T為最大迭代次數;r為介于0和1之間的隨機數;RL為基于Levy飛行的隨機數;其他參數意義同上.
3)開發階段(圍捕和突襲獵物).當獵物受到金豺攻擊時,其逃避能量逐漸降低.金豺對圍住的獵物展開突襲,并將其捕食.雄性和雌性金豺一起狩獵的行為描述如下:
式中,參數意義同上.
4)位置更新.GJO 依據式(6)更新金豺位置.
式中:Y(t+1)為第(t+1)次迭代金豺位置;其他參數意義同上.
2.2.3 XGBoost算法
XGBoost屬于Boosting 集成學習算法,具有良好的擬合和泛化能力.對于給定的數據集D={(x i,y i)},XGBoost學習k棵樹,采用以下函數對樣本進行預測[6-8]:
通過多個決策樹使預測值接近真實值,XGBoost目標函數為:
式中:l(φ)為損失函數;n為訓練樣本數量;y i為第i個樣本實測值;Ω(φ)為正則項.正則項對每顆回歸數的復雜度進行懲罰,XGboost學習出來的模型更加不容易過擬合.
樹的復雜度通常由樹的深度、內部節點個數、葉子節點個數、葉子節點分數等指標進行衡量.XGboost對葉子節點個數進行懲罰,相當于在訓練過程中做了剪枝:
式中:T為葉子結點個數;ω為葉子結點分數;γ、λ用來增強模型控過擬合能力.
XGBoost算法中,迭代次數M、學習率l、最大樹深d、最小樣本權重和w、樣本采用率u、對列采樣率s、正則系數σ是影響XGBoost預測性能的關鍵.為確定最優XGBoost超參數,本文使用GIO 對其進行調優.
2.2.4 算法驗證
本文在3維至100維條件下,選取表1中4個函數對GJO、PSO 進行仿真測試,并利用20次尋優平均值進行評估.設置GJO、PSO 最大迭代次數Tmax=200,種群規模n=50,其他參數采用各算法默認值.

表1 函數尋優結果
對于單峰函數和多峰函數,GJO 尋優精度分別較PSO 提高12個和5個數量級以上.GJO 尋優效果優于PSO,尤其是在低維(3、5、10維)情形下,GJO 具有更佳的尋優精度.
步驟1:為盡量減少模型的計算規模,本文基于dmey小波基函數,利用1 層WPT 將龍潭站、董湖站、西洋站1991年1月—2021年12月逐月水面蒸發量時序數據分解為2個子序列分量[1,1]和[1,2],如圖2所示.

圖2 龍潭站、董湖站、西洋站水面蒸發時序數據WPT 分解
從圖2可以看出,[1,1]分量頻率最小,為時間序列的低頻部分,大致反映水面蒸發量時序數據的變化趨勢;[1,2]分量波動激烈且頻率較大,為時間序列的高頻部分,大致反映水面蒸發量時序數據的隨機性特征.
步驟2:采用文獻[19-20]方法確定分量[1,1]、[1,2]的嵌入維數k,并利用前k月水面蒸發分量來預測當月水面蒸發分量.預測模型的輸入、輸出表示為:
式中:Youtput為月水面蒸發量預測輸出值;u為月水面蒸發量序列長度;k為嵌入維或滯后數.
經計算,龍潭站、董湖站、西洋站水面蒸發分量[1,1]和[1,2]的k值分別為27和11、14和18、19和22.本文選取1991年1月-2011年12月(252月)作為訓練樣本,2012年1月-2021年12月(120月)作為預測樣本.
步驟3:利用各分量訓練樣本構建GJO 優化XGBoost迭代次數、學習率、最大樹深、最小樣本權重和、樣本采用率、對列采樣率、正則系數共7個超參數的適應度函數f:
步驟4:設置GJO、PSO 最大迭代次數Tmax=100,種群規模n=30,其他參數采用各算法默認值;設置XGBoost迭代次數M、學習率l、最大樹深d、最小樣本權重和w、樣本采用率u、對列采樣率s、正則系數σ的搜索范圍分別為[5,50]、[0.01,0.5]、[1,5]、[0.5,1]、[0.5,1]、[0.1,10]、[0.1,10];SVM 超參數搜索范圍設置為[2-5,25].所有模型水面蒸發時序數據均采用[-1,1]進行歸一化處理(PSO 調優XGBoost超參數以及GJO、PSO 調優SVM 超參數可參考實現).
步驟5:利用式(3)在搜索空間中隨機初始化金豺位置Y0;同時初始化獵物矩陣Prey,其中第一和第二獵物位置對應的一對雄性和雌性金豺位置.
步驟6:計算獵物適應度值,找到并保存當前第一和第二獵物位置,即對應雄性和雌性金豺位置Y1、Y2.令當前迭代次數t=1.
步驟7:計算獵物逃避能量E.若|E|≥1,利用式(4)、式(5)和式(8)更新金豺位置;若|E|<1,利用式(6)、式(7)和式(8)更新金豺位置.
步驟8:計算位置更新后的獵物適應度值,比較并保存當前雄性金豺位置Y1.
步驟9:重復步驟7~8直至滿足算法最大迭代次數.
步驟10:輸出雄性金豺位置Y1,該位置即為XGBoost最佳超參數.利用該超參數建立WPT-GJOXGBoost模型對各實例[1,1]、[1,2]分量進行預測和加和重構.
步驟11:利用平均絕對百分比誤差、平均絕對誤差對各模型進行評估,見式(14).
構建WPT-GJO-XGBoost、WPT-PSO-XGBoost、WPT-GJO-SVM、WPT-PSO-SVM、WPT-XGBoost模型對龍潭站、董湖站、西洋站月水面蒸發量進行訓練及預測,預測結果如圖3~5所示,預測效果如圖6所示.

圖3 龍潭站水面蒸發量預測結果

圖4 董湖站水面蒸發量預測結果

圖5 西洋站水面蒸發量預測結果

圖6 水面蒸發量預測結果
由圖3~6可以得出:
1)WPT-GJO-XGBoost模型對龍潭站水面蒸發量預測的EMAP、EMA分別為5.491%、4.70 mm,預測精度分別較WPT-PSO-XGBoost、WPT-GJO-SVM、WPT-PSO-SVM、WPT-XGBoost模型提高了14.9%、10.6%、18.7%、42.8%和14.6%、8.6%、13.1%、43.5%;對董湖站水面蒸發量預測的EMAP分別為4.943%、3.37 mm,預測精度分別較WPT-PSO-XGBoost、WPT-GJO-SVM、WPT-PSO-SVM、WPTXGBoost模型提高了33.2%、14.2%、38.1%、57.8%和29.9%、12.1%、35.6%、53.6%;對西洋站水面蒸發量預測的EMAP分別為5.024%、3.39 mm,預測精度分別較 WPT-PSO-XGBoost、WPT-GJO-SVM、WPT-PSO-SVM、WPT-XGBoost模型提高了29.1%、2.1%、6.4%、52.5%和26.6%、4.2%、7.8%、52.5%.WPT-GJO-XGBoost模型預測精度優于WPT-PSOXGBoost、WPT-GJO-SVM、WPT-PSO-SVM 模型,遠優于WPT-XGBoost模型,具有較好的精度和泛化能力,將其用于水面蒸發量預測是可行的.
2)WPT-GJO-XGBoost模型對龍潭站、董湖站、西洋站水面蒸發量的預測誤差遠小于WPT-XGBoost模型,證明GJO 能有效調優XGBoost超參數,提高XGBoost 的預測性能;WPT-GJO-XGBoost、WPT-GJO-SVM 預測精度高于對應的WPT-PSOXGBoost,WPT-PSO-SVM 模型,說明GJO 對XGBoost、SVM 超參數的調優效果要優于PSO;算法尋優性能越好,超參數調優效果越佳,由此所構建的模型預測精度也越高.
3)從圖6可知,WPT-XGBoost模型預測誤差波動幅度較大,預測可靠性較低;相比之下,WPT-GJOXGBoost模型預測誤差最小、精度最高,能更好地逼近真實值,這進一步證明了WPT-GJO-XGBoost模型預測能力的準確性.
針對水面蒸發量時間序列多尺度、非線性特征和XGBoost超參數選取困難等不足,建立WPT-GJOXGBoost水面蒸發量時間序列預測模型,并構建WPT-PSO-XGBoost等4種對比預測模型,通過云南省龍潭站、董湖站、西洋站3個水面蒸發量預測實例對各模型進行驗證.結論有以下幾點:
1)GJO 具有較好的尋優性能,將GJO 用于XGBoost超參數調優是可靠的.
2)通過與 WPT-PSO-XGBoost、WPT-GJOSVM、WPT-PSO-SVM、WPT-XGBoost 模型相比,提出的WPT-GJO-XGBoost模型能顯著提高水面蒸發量預測精度,3個實例預測的EMAP均低于5.5%,充分驗證了預測模型的可靠性和準確性.模型預測精度高、泛化性能好,同時具有簡潔高效等特點,有著較好的推廣價值.
3)GJO 能有效調優XGBoost超參數,提高XGBoost的預測性能;算法尋優性能越好,XGBoost超參數調優效果越佳,由此所構建的模型預測精度也越高.