牛曼麗,李紅岺,李新旭
(北京市農業技術推廣站,北京100029)
參考作物蒸發蒸騰量(Reference Evapotranspiration,ET0)是計算作物需水量的一個基礎要素,是灌溉制度制定、灌溉系統設計等方面的重要參數[1,2],作物蒸發蒸騰量的準確估算對提高農業用水效率、發展節水農業具有重要意義。ET0計算的標準方法是采用世界糧農組織推薦的FAO 56 Penman-Monteith 模型,該模型已經在世界各地、各種氣候類型下通過蒸散儀進行了驗證,但是這種方法需要較為完備的氣象數據,計算過程復雜[3]。
近年來,隨著機器學習的快速發展及其在解決非線性復雜問題上的獨特優勢,多種機器學習方法如人工神經網絡[4]、隨機森林[5]、支持向量機[6]開始應用于蒸發蒸騰量的估算和模擬。CatBoost(Category Boosting)以其減少過擬合、泛化能力較強等特點受到廣泛關注,基于樹結構的集成學習模型尤其是CatBoost 算法在蒸發量估算模擬方面有了一些應用,董力銘等[7]應用蝙蝠優化分類梯度提升算法構建了干旱半干旱地區的水面蒸發量預測模型,模型具有較好準確性。Huang[8]將CatBoost 模型與SVM 模型、RF 模型在估算中國亞熱帶濕潤地區12 個站點的ET0進行了對比,發現CatBoost 模型在精度和穩定性方面具有顯著優勢。目前已有的CatBoost應用主要是大田環境下的ET0估算,在設施農業領域的ET0估算未見報道。在設施農業中,ET0的估算更加復雜,為了提高ET0估算精度,本研究提出采用具有極佳性能的Catboost 方法構建ET0估算模型。本文主要研究內容分為3 個部分:①構建基于CatBoost 的ET0估算模型,研究了各變量與ET0之間的相互關系;②評價不同數量的輸入參數對模型估算精確度的影響;③對比其他6種機器學習模型:XGBoost、AdaBoost、隨機森林(RF)、決策樹、最鄰近節點算法(KNN)、支持向量機(SVM)。
試驗地點位于北京,地處海河中下游,經緯度:115.7°~117.4°E,北緯39.4°~41.6°N,屬溫帶大陸性季風氣候區,降水年際、年內分配極不均衡,經常伴隨著高溫天氣。
試驗數據樣本采集于北京市農業技術推廣站小湯山農業科技展示基地,該基地位于北京市昌平區小湯山鎮立湯路,占地面積約23 萬hm2,具有現代化連棟溫室4.5 hm2,日光溫室65 棟,是北京都市現代農業的展示基地。選取西區連棟溫室作為試驗區域,主要種植作物為番茄,采用基質栽培模式。該區域面積1 萬m2,東西長70 m,南北長145 m,肩高6 m,脊高7.5 m。溫室屋面為5 mm浮法玻璃,外墻為中空玻璃。溫室內有三維立體加溫管道、內保溫幕加溫設備,高壓噴霧、內遮陽降溫設備。
溫室內部采用“Priva Connext”環境自動監測記錄系統,包括溫室內傳感器和室外氣象站,具體布置位置如圖1 所示。溫室內傳感器監測記錄項目為溫度、相對濕度,每15 min 記錄一次數據。溫室外部的氣象站監測系統采集指標為太陽輻射。采集周期為2016年12月至2020年6月30日。

圖1 信息采集設備位置示意圖
1.3.1 溫室修正型Penman-Monteith 模型
FAO-56 Penman-Monteith 模型是聯合國糧農組織推薦的用來計算參考作物蒸發蒸騰量的方法,但由于溫室內風速為0,該方法不適用于溫室作物蒸發蒸騰量計算,需要進行修正,采用修正型Penman-Monteith 模型[9,10]進行計算,其公式如下:

式中:ET0為參考作物蒸發蒸騰量,mm/d;Rn為作物表面凈輻射,MJ/(m2·d);G為土壤熱通量,MJ/(m2·d);T為2 m 處的日平均氣溫,℃;e0為氣溫T下的飽和水汽壓,kPa;es為日平均飽和水汽壓,kPa;ea為日平均實際水汽壓,kPa;Tmax、Tmin分別為地面2 m 高度的日最高、最低溫度;Tm為日平均溫度,℃;△為水汽壓曲線斜率,kPa/℃;γ為濕度計常數,kPa/℃;P為大氣壓,kPa;λ為汽化潛熱,MJ/kg;Rn=Rns-Rnl,Rns=0.77RS,Rs采用實測結果,MJ/(m2·d)。

凈輻射Rn是通過凈短波輻射與凈長波輻射之差來計算。在計算過程中,由于日土壤熱通量的影響相對來說很小,所以可以忽略不計。
本研究將采用修正型Penman-Monteith 公式計算溫室參考作物蒸發蒸騰量,并作為其他模型估算的標準值。
1.3.2 分類梯度提升模型(CatBoost)
CatBoost 是一種新的梯度增強決策樹(GBDT)算法,是以對稱樹為弱學習器,使用GBDT進行分類。梯度提升本質上是通過在特征空間中執行梯度下降來構建弱學習器,通過局部最優方式迭代加權組合弱學習器來構建強學習器[11-13]。
在決策樹中,標簽平均值將作為節點分裂的標準,這種方法稱為Greedy Target-based Statistics,簡稱Greedy TS,用公式(8)表示。該方法的缺點是用標簽的平均值表示特征,當訓練數據集和測試數據集結構和分布不一樣的情況下會出現條件偏移問題。

針對上述問題,CatBoost 中一個標準的改進Greedy TS 的方式是通過添加先驗分布項來減少噪聲和低頻率類別型數據對于數據分布的影響[12]。令σ=[σ1,σ2,…,σn]Tn為置換,然后用公式(9)替代。

式中:P為添加的先驗項;a為大于0 的先驗的權重,針對類別數較少的特征,可以減少噪聲數據。
它能夠高效合理地處理類別型特征,并利用訓練過程中對類別型特征處理,使用了組合類別特征,極大豐富了特征維度。該算法的另一個優點是它在選擇樹結構時采用對稱樹計算葉值,解決了梯度偏差以及預測偏移的問題,能夠防止過度擬合并允許使用整個訓練數據集,即對輸入樣本集進行隨機排列并進行計算。該方法對于回歸任務,先驗項取數據集對應標簽的均值。CatBoost算法結構圖見圖2。

圖2 CatBoost 算法結構圖
通過平均絕對誤差(MAE)、均方根誤差(RMSE)、決定系數(R2)3個統計指標對模型估算性能進行評估。


式中:Yi,e和Yi,m分別為Penman-Monteith 公式計算值和模型預測值,mm/d;和分別為參考作物蒸散量彭曼公式計算值的平均值和模型預測值的平均值,mm/d。RMSE和MAE越小,R2越大,則說明模型擬合的效果越好,精度越高。
本研究試驗的訓練環境為一臺圖形工作站,CPU 主要配置為:Intel(R)Xeon(R)E5-1620 v4主頻3.50 GHz,GPU 的配置為:NVIDIA Quadro K2200。模型訓練采用Anaconda 平臺作為深度學習訓練基礎平臺,底層Python版本為3.7。
在數據集劃分中,利用該試驗點的940個數據集進行模型訓練、測試和評價,80%的數據用于模型訓練,20%用于模型測試。在用于模型訓練的數據中,隨機選取20%作為驗證數據集,以判斷模型擬合情況。訓練集主要用于參數調整,按照模型評價指標確認最佳的模型參數,測試集主要作用是測試模型泛化性能,確保訓練集得到的訓練參數與測試集無關,模型魯棒性更高。CatBoost 使用默認參數可以提供很好的結果,能夠減少參數調整所需的時間。因此,在本模型構建中相關參數采用默認參數。
將系統監測的數據通過計算獲得每日最大值、最小值及平均值,主要是以下7 個指標:累積太陽輻射(Rs,MJ/m2)、室內最高溫度(Tmax,℃)、室內最低溫度(Tmin,℃)、室內平均溫度(Tm,℃)、室內最大相對濕度(RHmax,%)、室內最低相對濕度(RHmin,%)、室內平均相對濕度(RHm,%),通過溫室修正型P-M 公式計算出參考作物蒸發蒸騰量(ET0,mm/d)。數據集共計1 124 個,剔除番茄拉秧停產日期的數據,共計940個數據集。
本次用于模型構建的數據集包括平均室內溫度Tm、平均相對濕度RHm、累積太陽輻射Rs、ET0共4個指標。表1顯示了不同時期各指標平均值、標準差、最大值、最小值和中值等。

表1 數據集數據特征統計
目標值ET0處于[0.54,7.9]之間,中位數為3.32 mm/d,標準差為1.59 mm/d,波動較為劇烈,如圖3所示。

圖3 番茄一個生長周期ET0變化圖
另外,數據歸一化可以提高模型的預測精度和擬合速度。據此,采用最大最小歸一化方法對每個特征變量進行處理,如下式所示。

本文采用Pearson’s 相關系數[14]Pc計算出各個指標之間的一一對應相關程度。Pc主要用來衡量兩組分析對象線性關系的強弱,其取值范圍為[-1,1],數學表達式為:

式中:x和y分別對應兩組分析對象的數據序列;N為樣本個數;Pc絕對值越大,相關性越強。
通過Origin 軟件對數據進行相關性分析,3 個特征向量與參考作物蒸發蒸騰量ET0的相關系數及相關性分析如表2 和圖4所示。

表2 3個特征向量與ET0的相關系數
從圖4 可以看出,除平均相對濕度外,其余環境因子與ET0之間的相關系數均為正值,即環境因子增加會導致ET0的升高,其中累積太陽輻射Rs與ET0相關性最顯著,相關系數0.923,決定系數R2為0.852;其次Tm>RHm。而平均相對濕度與ET0呈負相關,相關系數為-0.552,R2為0.304。太陽輻射和溫度是影響ET0變化的主要影響因子。

圖4 ET0與輸入特征向量之間相關性分析
表3 顯示了CatBoost 模型在不同的7 個輸入參數組合下日參考作物蒸發蒸騰量模型估算精度。結果顯示,當輸入參數僅為1 種環境數據時,累積太陽輻射Rs表現最好,RMSE為0.677 mm/d。由于溫室內部風速為0 m/s,作物蒸騰的能量來源是太陽輻射,因此太陽輻射與作物蒸騰量的相關性最大,是主要影響因子。在Rs的基礎上,分別引入Tm、RHm,其精度均有所提高,其中引入RHm的CB5組合提高最顯著,測試集決定 系 數R2由0.818 提 高 到0.892,RMSE由0.677 mm/d 降 到0.522 mm/d。在輸入3 個特征向量時,精度最高,R2達到0.962。

表3 測試集不同輸入參數組合CatBoost模型的性能評估
在監測氣象數據比較充足條件下,采用3個參數作為輸入特征向量進行訓練學習,通過模型對測試集的預報誤差進行精度檢驗,將CatBoost 模型的估算結果與其他6 個模型[XGBoost[15-17]、AdaBoost[18]、隨機森林[19](RF)、決策樹[20](Tree)、KNN[21]、SVM[22]]的精度進行對比,結果如表4 所示,驗證集預測精度從高到低為CatBoost>XGBoost>RF>KNN>Tree>AdaBoost>SVM;測試集CatBoost 的模型測試集的R2最大,為0.962,MAE為0.220 mm/d、RMSE為0.310 mm/d,預測精度優于其他6 個模型,其他模型的預測精度從高到低依次為XGBoost>KNN>RF>Tree>AdaBoost>SVM。在穩定性方面,將7個模型運行3次,擬合精度不再改變,都具有較高穩定性。

表4 7種模型性能對比
圖5 為7 種機器學習模型測試集估算值和計算值之間的散點圖,從圖5 可以明顯看出,CatBoost 模型的散點圖最接近1:1的關系,表明其擬合程度最高。

圖5 7個機器學習模型ET0估算精度對比
在輸入項選擇方面,本研究得出可在實際生產配置傳感器不足時,首選累積太陽輻射和濕度傳感器,進行ET0的估算模擬。當配置溫度、濕度、光輻射傳感器時,通過獲取的平均室內溫度、平均濕度、累積太陽輻射進行模擬,估算精度最高。在模型選擇方面,本研究表明CatBoost模型具有最佳的估算精度,與本研究結果類似,陳志月等在預測江西地區水面蒸發量的研究中也得出了CatBoost 相比XGBoost、GPR 模型預測效果最佳的結論[11],HANG 在亞熱帶地區ET0估算方面也得出了CatBoost在完整的參數組合下表現優于隨機森林和支持向量機的結論[8]。在未來的研究中,還將從以下幾個方面入手,進一步改進溫室蒸發蒸騰量估算模型:①參考作物蒸發蒸騰量受氣象因素的影響較大,北京市不同地區間氣象差異較大,本次試驗只選用了昌平區一個地點作為試驗,下一步將在北京多選擇幾個具有代表性的生產溫室,開展相關試驗,構建完善的數據集,增強模型的泛化能力。②本次研究主要是對日均數據進行模擬,未來將對每小時作物蒸發蒸騰量模型進行模擬和預測。③本次研究模型是基于連棟溫室數據,未來計劃在日光溫室進行驗證性研究。
以上結果表明,本文構建的基于CatBoost的ET0估算模型,當輸入參數為平均室內溫度、平均濕度、累積太陽輻射3參數時,效果最佳;在傳感器獲取的氣象數據充足的條件下,輸入3個參數時,CatBoost模型相比XGBoost、AdaBoost、隨機森林(RF)、決策樹、最鄰近節點算法(KNN)、SVM 表現最佳。以上結果證明本文提出的CatBoost溫室作物日蒸騰蒸發量估算模型具有較好的擬合性能。因此,本文提出的CatBoost模型能夠較好地擬合參考作物蒸發蒸騰量的計算結果,可以作為彭曼公式的一種替代計算方法。