朱俊杰,葉文靜,曹萃文,顧幸生
(1. 上海南匯自來水有限公司,上海 201399;2. 華東理工大學 能源化工過程智能制造教育部重點實驗室,上海 200237)
中國淡水資源總量豐富但人均水資源不足,水質污染以及龐大人口基數等因素使得國內的水資源供需關系日益緊張,因此,做好水資源的規劃和管理勢在必行。短期供水量預測模型是指在地區歷史供水數據和發展趨勢的基礎上,根據歷史數據預測未來的供水量,短期供水量預測模型可以為供水系統制定合理的供水調度方案提供必須的理論數據基礎。傳統的供水量預測模型主要依靠經驗公式和統計方法,如回歸分析模型[1]和時間序列模型[2]等,該類方法在數據充足、變化較為平穩的情況下能夠得到較為準確的預測結果,但在供水系統變化復雜的情況下預測能力受到限制,無法進行精確預測[3-4]。近年來,研究學者開始利用人工智能和機器學習技術改進供水量預測模型,如人工神經網絡模型[5]、支持向量機模型[6]、支持向量回歸模型[7]等。目前,在供水量預測問題中基于神經網絡模型和機器學習模型的研究最多并取得了一定的成果[8-9]。
針對目前的供水量預測模型在數據波動劇烈時預測效果較差的問題,本文在已有研究基礎上,提出了基于CatBoost的城市供水量組合預測模型。該模型采用K近鄰算法(K Nearest Neighbor, KNN)[10]對供水量異常數據識別和校正后,采用先進的支持向量回歸(SVR)[11],極端梯度提升算法(XGBoost)[12],輕量級梯度提升機(LightGBM)[13]和CatBoost[14]模型預測供水量數據;為了融合各模型的優點并提高模型的預測精度,將各單一模型的預測結果作為輸入特征,采用CatBoost模型對供水量數據進行進一步預測并得到最終的供水量預測結果。與其他模型的對比仿真實驗表明,該模型可以獲得更高的預測精度和更好的預測效果。
KNN算法是一種簡單的機器學習算法,常用于分類和回歸問題中,該算法檢測異常數據的原理: 首先計算一個樣本與其他所有樣本之間的距離并找到離它最近的k個樣本,隨后計算該樣本點與k個樣本的平均距離,根據平均距離與閾值的比較結果判斷該數據是否是異常數據,如果平均距離大于閾值,則認為該樣本是異常樣本,否則為正常樣本。KNN算法不需要假設數據的分布,在低維數據的異常數據識別中效果顯著,廣泛應用在故障診斷等領域中。
2017年Yandex首次提出CatBoost模型[14]。CatBoost模型是一種基于梯度增強決策樹(GBDT)的新型改進機器學習類模型,與GBDT模型相比,CatBoost模型使用了Ordered Boosting方法并采用對稱樹作為基樹模型;與基于二叉樹作為基模型的模型相比,CatBoost可以更好地改善模型的預測性能并且在一定程度上弱化GBDT模型容易過擬合的問題。相比于傳統的GBDT模型,CatBoost模型具有更高的預測精度和更好的泛化能力,并已在諸多領域中得到了應用,但該模型還未在供水量預測問題中得到應用。
在供水系統中,供水量數據的監測和記錄過程會受到多種人為和環境因素的影響,如人為誤操作、設備故障、水源質量變化等,從而導致數據出現異常。異常數據會擾亂正常數據的分布規律,降低模型的預測精度,甚至產生不合理的預測結果。因此,在進行供水量預測前對歷史供水量數據進行異常數據識別檢測是必要的。本文基于時供水量數據的周期變化特點,將供水量數據分為24個子集,在每個子集中分別使用KNN算法檢測識別異常數據,并校正異常數據采用該時刻以往1周內的平均值。
分析和選擇模型的輸入特征并使用強相關輸入特征有利于提高模型的預測準確性并減少建模時間。以往研究表明,使用歷史供水量數據作為輸入特征可以建立準確的供水量預測模型[15],因此本文也采用歷史供水量數據作為組合模型的輸入。在{qVt-24×7-10,qVt-24×7-9, …,qVt-24×7+9,qVt-24×7+10}、 {qVt-24×1-10,qVt-24×1-9, …,qVt-24×1+9,qVt-24×1+10}、 {qVt-10,qVt-9, …,qVt-1}以及時刻t中使用隨機森林算法篩選出相關性最強的10個輸入特征,其中qVt表示時刻t的供水量。根據重要性得分最終選擇{qVt-24×7,qVt-24×7+1,qVt-24×1+10,qVt-24×1,qVt-24×1+9,qVt-24×7+10,qVt-1,qVt-24×7+2,qVt-24×7-1,qVt-6}為模型的輸入特征。
組合模型的建立主要包括異常值處理、單一模型預測和組合預測三個部分,組合模型的結構如圖1所示,主要的建模步驟如下:

圖1 組合模型結構示意
1)根據時刻特征,將供水量數據分為24個子集并分別采用KNN算法識別和校正異常數據。
2)采用隨機森林算法篩選出相關性最強的10個輸入特征,并將供水量數據劃分為訓練集和測試集。
3)利用訓練集數據分別訓練SVR,XGBoost,LightGBM和CatBoost模型并預測供水量數據。
4)為避免組合模型中各比例參數選擇的不合理,將上述4個模型的預測值和時刻t作為輸入特征,真實供水量數據作為輸出值,采用CatBoost模型進行訓練并得到最終的供水量預測結果。
超參數的選擇對模型的性能至關重要,歷史供水量數據中的異常數據量數目未知,因此KNN算法中異常數據比例需要人為設定,異常數據比例分別嘗試設置為0.01,0.02,…,0.20。SVR模型采用隨機搜索方法對超參數進行尋優調整;XGBoost,LightGBM,CatBoost模型使用Optuna優化框架對每個模型的重要超參數進行參數調整和確定。
本文使用平均絕對百分比誤差(eMAPE)、均方根誤差(eRMSE)、絕對平均誤差(eMAE)以及R2作為模型預測評價指標,4種指標的計算如式(1)~式(4)所示:
(1)
(2)
(3)
(4)

本文收集了某獨立供水區域2022-05-01—2022-09-30的歷史供水量數據,采樣間隔為1 h。以2022-05-01—2022-09-23的供水量數據作為模型的訓練集數據用于模型的訓練,2022-09-24—2022-09-30的供水量數據作為測試集數據驗證模型的性能。該時段供水量數據變化曲線如圖2所示,每個時刻的供水量數據箱型圖如圖3所示。觀察圖2和圖3可以發現,由于人為記錄錯誤、水管爆管等因素的影響,收集到的時供水量數據存在較大波動且具有較多離群值。異常數據的存在對模型的訓練會造成干擾,因此在預測供水量前進行異常數據識別和校正是必要的。

圖2 某時段供水數據變化曲線示意
采用KNN算法分別識別每個時刻的異常數據,異常數據識別結果如圖4所示。觀察圖4可以發現,KNN算法能夠較為準確地識別出供水量數據中的異常數據。在識別出異常數據后,采用該時刻以往1周內的數據平均值進行校正,從而為供水量模型提供更優的數據。

圖4 異常數據識別結果示意
為了測試分析KNN算法異常數據識別和組合預測對供水量預測的作用和效果,本文分別采用CatBoost,KNN+CatBoost,KNN+SVR,KNN+XGBoost,KNN+LightGBM以及組合模型進行仿真實驗。各模型供水量預測結果如圖5所示,根據預測結果計算得到的評價指標見表1所列。

圖5 各模型供水量預測結果示意
由表1可以發現,與CatBoost模型相比,KNN+CatBoost模型的預測結果在4個指標中結果最好,eRMSE指標從538.577 3下降到429.667 7,R2從0.601 1提高到0.722 1。實驗結果表明,經過KNN算法異常數據識別和校正后的預測結果指標比基于原始數據的預測結果指標更好,eMAPE,eMAE,eRMSE和R2都有明顯改善,驗證了采用KNN算法識別異常數據從而提高模型預測精度的有效性。在KNN+CatBoost,KNN+SVR,KNN+XGBoost和KNN+LightGBM模型中,綜合4種評價指標,KNN+CatBoost模型表現最優,其次是KNN+LightGBM和KNN+XGBoost模型,KNN+SVR預測指標結果表現最差,預測評價指標結果表明CatBoost模型在供水量預測中的突出表現。與上述5種模型相比,組合模型預測效果最好,eMAPE,eMAE,eRMSE和R2都有較為明顯的改善和提升。分析發現,在組合模型中采用了CatBoost算法將SVR,CatBoost,XGBoost和LightGBM模型的預測結果進行組合以便在不同的樣本中最大程度地發揮各模型的優點,從而進一步提高預測效果。表1的實驗結果驗證了組合模型在供水量預測中的有效性。
觀察分析表1中各模型的運行時間可以發現,未進行KNN異常值識別的CatBoost模型運行時間最短,在1 s內;加入了KNN異常數據檢測的模型運行時間為1.175 9 s,這是因為需要將數據劃分為24個子集分別訓練并采用KNN算法識別異常數據,所以加入KNN算法異常數據識別的模型,增加了算法的運行時間。而組合模型由于融合了KNN,SVR,CatBoost,XGBoost和LightGBN模型,在所有比較模型中運行時間最長,達到了2.688 9 s。所有的模型運行時間都小于3 s,在可接受范圍內。
針對目前的供水量預測模型在數據波動劇烈時預測效果較差的問題,本文在已有的研究基礎上,提出了基于CatBoost的城市供水量組合預測模型。該模型采用KNN算法對供水量數據中的異常數據進行識別和校正后,采用CatBoost模型對SVR,XGBoost,LightGBM和CatBoost模型得到的預測結果進行進一步組合并得到最終的供水量預測值,本文結論如下:
1)在對波動劇烈的數據進行分析和預測時,采用KNN算法對異常數據進行識別和校正后能夠顯著提高模型的預測精度。
2)SVR,CatBoost,LightGBM和XGBoost模型在供水量預測中,CatBoost模型的表現最好,預測精度最高。
3)提出的基于CatBoost的城市供水量組合預測模型能夠在單一預測模型的基礎上進一步提高預測精度,得到更好的供水量預測結果。