高赫余,王 圣,吳瀟勇
(上海城投水務〈集團〉有限公司供水分公司,上海 200444)
電磁流量計是基于電磁感應原理所制成的進行流量測量的專業儀器,可以對導電液體體積流量等進行精確測量[1],構造如圖1所示。一般電磁流量計都有一圈磁線圈,當導電流體通過流量計的腔體時,會切割磁感線產生磁感應強度,將其轉換為電流,并最終轉換為流量數字。在整個過程中,必須保證磁感應強度保持相對穩定,但是在實際應用中,電磁流量會收到外部因素和內部導電流體的干擾,導致計量失準。

圖1 電磁流量計構造Fig.1 Construction of Electromagnetic Flowmeter
本文采用XGBoost集成模型構建邊界流量計流量預測模型,旨在修正流量計非正常工作狀態下計量的水量,提高工作成效。
XGBoost的全稱是 eXtreme Gradient Boosting,是傳統boosting方法的一種極好實現,其基本原理是把數千個精度較低的樹模型組合成一個精度較高的模型。Gradient Boosting Machine算法在生成每一棵樹時采用梯度下降的思想,通過上一步生成的所有樹為基礎,向著最小化給定目標函數的方向前進。XGBoost的基學習器既有樹(gbtree)又有線性分類器(gblinear),從而得到帶L1+L2懲罰的線性回歸或邏輯回歸,其損失函數采用二階泰勒展開,具有高準確度、不易過擬合、可擴展性等特點,能分布式處理高維稀疏特征。
XGBoost算法基本原理的特性,對數據波動較大、受外界影響較大、特征因子較多的數據集有很好的適用性,能夠在水務行業邊界流量計流量預測中取得較好的應用效果。
對于流量計計量水量的預測,本文更關注預測結果和正常工作狀態下流量計計量水量之間的誤差,因此,采用平均絕對值誤差(mean absolute error)作為評價指標,如式(1)。
(1)
其中:nsamples——樣本數量;
yi——真實值;

另外一種可作為參考的指標為平均相對誤差(mean relative error),如式(2)。
(2)
在使用Python進行數據分析時,會遇到多種多樣的數據類型,如水量、氣溫等數值型的特征變量,還會遇到天氣變化、季節氣候等離散型變量。對于離散型的變量,必須進行數值化處理之后才能進行計算,因為機器學習均為數學函數方法進行模型計算。一般的離散型變量數值型轉化有2種方法。
第1種是one-hot編碼,又稱“獨熱編碼”[2],其基本原理是用N位狀態寄存器編碼N個狀態,每個狀態都有獨立的寄存器位,且這些寄存器位中只有1位有效,簡單數就是每1列特征的每1個獨立的值只能有一個狀態,如圖2所示。

圖2 處理前(a)和處理后(b)one-hot編碼Fig.2 One-Hot Encoding before Treatment (a) and after Treatment (b)
這種編碼方式的優點是:解決了分類器處理離散數據困難的問題、一定程度上起到了擴展特征的作用;缺點是:得到的特征是離散的和稀疏的、必須保證每列特征的每個值之間是相互獨立的。
第2種是label編碼,它是利用pandas計算包中的categoricals數據類型對離散新數據進行處理。Categorical 類型的數據可以具有特定的順序,如:按程度來設定,“強烈同意”與“同意”、“首次觀察”與“二次觀察”。通過label編碼,將離散型變量數值化,如圖3所示。

圖3 處理前(a)和處理后(b)label編碼Fig.3 Label Encoding before Treatment (a) and after Treatment (b)
原始的流量計水量數據只有供水日期這1個特征,單一的特征會造成預測模型欠擬合。因此,需要進一步考察挖掘影響流量計水量計量的多方面特征,同時將日期信息細化,并進一步挖掘相關流量計、相關壓力計和相關區域水量特征,衍生出一系列影響供水量的特征(星期、月、日、四季、最高氣溫、最低氣溫、平均氣溫、天氣、轉天氣、風向、風力、節假日、空氣質量指數、空氣污染程度、溫度等級、取對數、開根號、多項式、Day_of_Week、Day_of_month、Day_of_Year、溫差、相關區域、相關流量計、相關壓力計、相關水廠),結合這些特征因子和實際供水量訓練流量計流量預測模型。
擴展特征中有些是離散型變量(星期、四季、天氣、轉天氣、風向、風力、節假日、空氣污染程度、溫度等級),需要對其進行數值化處理。
這些離散型特征值之間相互關聯,因此,根據其特點選取label 編碼對其進行數值化,結果如圖4所示。

圖4 處理前(a)和處理后(b)label編碼Fig.4 Label Encoding before Treatment (a) and after Treatment (b)
通過Pearson相關系數法[3]計算得到各特征與水量之間的相關性,并通過相關較高的數值型變量進一步挖掘得到取對數、開根號、求E及多項式這4個特征值。
直接預測法是指直接以流量計正常工作狀態下的日水量數據為基礎,結合擴展特征進行預測。
以某公司某DN1000流量計2017年1月1日—2019年2月14日共775條數據為例,此流量計上游離某大型水廠的出水管較近,并受附近1個泵站的影響,干擾較大。通過Pearson相關系數法計算得到各特征的相關性,如圖5所示。其中,數字越大,表明與流量計水量的相關性越大,最終取≥0.15的特征(滬太路DN500、泰和水廠、汶水泵站<進站壓力>、總供水量、閘北所水量、Day_of_year、月份、寶山所水量、汶水泵站<出站壓力>、最低氣溫、平均氣溫、最高氣溫、溫度等級、泰和水廠二車間<出廠壓力>、節假日)進行最終運算。

圖5 Pearson相關系數Fig.5 Pearson Correlation Coefficient

選取相關性較高的滬太路DN500、泰和水廠和汶水泵站(進站壓力)3個特征,進行多項式運算得式(3)。
多項式=3×滬太路DN500+2×泰和水廠+汶水泵站(進站壓力)
(3)
深度挖掘構造的3個特征通過Pearson相關系數法計算后得到較好的相關性,如圖6所示,可以最終使用。

圖6 Pearson相關系數Fig.6 Pearson Correlation Coefficient
最終通過特征選取得到18個特征:滬太路DN500、泰和水廠、汶水泵站(進站壓力)、汶水泵站(出站壓力)、總供水量、閘北所水量、Day_of_year、月份、寶山所水量、最低氣溫、平均氣溫、多項式、溫度等級、泰和水廠二車間(出廠壓力)、節假日、開根號、取對數、最高氣溫。
將整體數據劃分為測試集和訓練集,使用XGBoost集成模型建立某DN1000流量計日水量預測模型,模型在測試集上的平均絕對誤差(MAE)為8 276 t、平均相對誤差(MRE)為2.7%。
倒推預測法是通過此流量計所在供水區域的日水量預測,倒推出此流量計的日水量。與直接預測法相比,倒推預測法的優勢在于,當無法取得流量計正常工作狀態下的日水量進行模型運算時,可以通過間接的倒推法避開直接運算流量計水量,利用總水量減去剩余水量得到目標流量計預測水量。
以上海市城投水務(集團)有限公司供水分公司某DN1200流量計為例,利用倒推法進行預測,使用此流量計所在供水區域2017年1月1日—2018年9月30日共638條日水量數據。此流量計位于青東供水管理所和長寧供水管理所之間的一級邊界上,流量計受到周邊4個大型水廠的出水影響,并受附近7個泵站的影響,計量情況較復雜。其作用是計量從青東所流向長寧所的水量,從而計算2個所的供水量,并直接影響其產銷差,作用重大。

圖7 Pearson相關系數Fig.7 Pearson Correlation Coefficient
通過Pearson相關系數法計算得到各特征的相關性,圖6(a)為區域總日供水量各特征相關性,圖6(b)為剩余日供水量各特征相關性。其中,數字越大,表明與水量的相關性越大,取≥0.15的特征進行最終運算,得到區域總日供水量的26個特征[總供水量、閔行所、閔行水廠、溫差、平均氣溫、最高氣溫、最低氣溫、泰和水廠、長橋水廠、南市水廠、溫度等級、長寧所、月份、Day_of_year、長橋水廠(出廠總瞬時流量)、徐涇水廠、徐涇水廠(新)(1#出廠管壓力)、徐涇水廠(新)(2#出廠管壓力)、徐涇水廠(新)(2#出廠管瞬時流量)、四季、閔虹(閔虹壓力)、滬青平DN1000、國展(國展壓力)、華翔水庫泵站(1#水庫水位)、長橋水廠(4#出廠管壓力)、節假日]和區域剩余日供水量的27個特征[比區域總日供水量多了星站泵站(出站壓力)]。
將整體數據劃分為測試集和訓練集,使用XGBoost集成模型建立水量預測模型,模型在測試集上:總供水量的平均絕對誤差(MAE)為3 365 t、平均相對誤差(MRE)為1.5%;剩余供水量的平均絕對誤差(MAE)為4 314 t、平均相對誤差(MRE)為2.1%。驗證結果表明,XGBoost總供水量預測模型和剩余供水量預測模型的平均相對偏差為1.8%,總日供水量和剩余日供水量預測模型的精度滿足計算要求,因此,二者相減的結果可以用于流量計日流量的預測。
XGBoost集成模型作為機器學習領域里重要的模型之一,通過集成若干個學習器,構造一個學習能力較強的學習器,不僅能很好地擬合訓練集,還能在測試集上有很好的表現。將XGBoost集成模型引入邊界流量計日流量預測中,非常符合邊界流量計數據波動較大、受外界影響較大、特征因子較多的特點。最終取得的模型精度較高,有較好的泛化能力,并通過直接預測法和倒推預測法相結合的方式,可應對多種情況;靈活性較高,可應用于實際工作中,修正流量計非正常工作狀態下計量的水量,有效解決相關供水區域之間產生的水量誤差。