陳 莊 周 糴(重慶理工大學計算機科學與工程學院 重慶 400054)
在城市智能化的過程中,對城市居民用水量的科學合理預測是對用水資源合理管理、調度和規劃的基礎。由于受不同社會環境因素(如溫度、季節變化和節假日等)和客觀因素(如管道破裂、緊急停水等突發狀況)的影響,用戶用水量會在一定范圍內波動。在市政工程中,為人民生活提供持續穩定優質的供水服務是保證民生必不可少的一環。與此同時,隨著城市發展速度不斷加快,居民對水資源管理也有了更高的要求,這意味著供水企業也需要不斷地升級服務來滿足城市發展和消費者基本生活的需要。因此,考慮主要用水影響因素并利用歷史用水數據對用戶用水量進行預測就變得極為重要,具有較強的理論意義與應用價值。
由于傳統抄表存在工作量大、易出差錯和抄表環境復雜等客觀問題。近年來,重慶市已經開始以電子抄表的方式代替傳統人工的抄表方式。首先通過掃描RFID標簽獲得水表和用戶的基本信息,并錄入用戶水表的止碼;然后將用戶信息、抄表記錄等上傳到企業的數據庫中,經企業數據管理人員審核過后,最終作為公司向用戶收費的憑證標準。雖然電子抄表的效率已經在傳統抄表基礎上得到提升,但在實際操作過程中,大量冗雜的數據仍然會給后臺的工作人員帶來較大的數據審核壓力。據調查可知,對20萬條以上的數據進行審核時,水務企業每月需安排40人以上來完成。因此如何減少企業人員的審核數據的壓力同時保證數據的正確性,是水務企業工作中所需解決的一個重要問題。
為解決上述問題,本文使用某水務公司2017年3月—2018年9月的抄表數據作為研究數據,基于用戶的用水記錄,對用戶用水規律和影響因素進行分析,最終實現對用戶用水情況的有效預測。預測模型通過最大信息系數檢測變量之間的相關性,根據最大信息系數得出的相關性指標來構造XGBoost初始網絡,經過訓練和測試,生成最終的用戶用水量預測模型。并對居民下個用水周期的用水量進行預測和分析,逐步提升預測結果的精度,通過與實際數據對比,驗證該方法的有效性。
在以往的研究工作中,學者們基于不同的用水量預測模型,對用水預測相關問題進行了多角度研究,較典型的有區域用水量預測和城市用水量預測。如高學平等[1]基于PCA-RBF神經網絡模型對城市用水量預測等;李曉英等[6]基于GRA-MEA-BP耦合模型的城市需水預測研究;楊皓翔等[7]基于加權灰色-馬爾可夫鏈模型的城市需水預測。已有研究主要聚焦于整體區域的用水量預測,而針對單一用戶的用水預測研究較少。基于此,本文結合最大信息系數和XGBoost算法對用戶用水量進行了預測。
最大信息系數(MIC)是以互信息為基礎[5],用于各種不同變量之間非線性相關性進行檢測,最終得到變量之間的依賴關系強度的度量,是信息論和概率的結合[10]。最大信息系數具有普適性和均衡性,其中普適性借助MIC可以發現變量之間的函數關系和非函數關系;均衡性借助MIC可以用來橫向和縱向比較不同變量的關系強度。
最大信息系數的定義如下:設有序數據集D={(xi,yi),i=1,2,…,n},D?R2,將數據集D中的點落入由x軸和y軸劃分成x×y的二維網格G中,落入G中格子的點的概率分布為D|G。x和y均為正整數,最大互信息定義為:
I*(D,x,y)=maxI(D|G)
(1)
最大互信息系數是指通過所有可能的網格劃分G上互信息的最大值I(D|G),表示在x×y網格概率分布D|G情況下的互信息[3]。其中在所有x×y的格子中,互信息的計算式表示為:
(2)
最大信息系數取M(D)x,y中最大值,計算式為:
(3)
式(2)是尋找所有x×y的格子中最大互信息,并將獲得的最大互信息進行歸一化,將計算所得的最大互信息除以二維網格G中的最小值,確保每個元素MIC的取值范圍在[0,1]之間[5];歸一化后通過式(3)獲得最大值作為該數據集的MIC值。設置合適的B(|D|)值,使其增長速度遠小于D增長速度。Reshef等[4]建議設置B(|D|)=D0.6。
用戶用水量情況和諸多客觀環境因素相關,不同的影響因素會導致用戶用水量差異,同種因素因為不同的用戶群體也會有所差異[2]。而采用MIC可以分析出變量之間的相關性,定量表達出用戶用水量和不同影響因素之間的關聯程度。
近年來,XGBoost算法模型已經在各類數據科學競賽以及工業界中得到廣泛應用,并取得了優異的成績。經過不斷優化,XGBoost的樹模型處理表格數據的過程不僅高效且具有較好的精確性。除此以外,相比于傳統的神經網絡,XGBoost的參數調節更簡易且支持并行計算,擁有更快的訓練速度,預測的準確率也有較大提升。鑒于此,在MIC的基礎上,本文使用XGBoost預測模型作為用戶用水量數據預測模型。
XGBoost是在GBDT(Gradient Boosting Decision Tree)基礎上發展起來。GBDT算法在2015年由Chen等[8]提出,由于該算法只針對一階的導數值展開,難以分布式實現,模型的訓練速度低,同時對系統的硬件配置的要求也比較高。XGBoost則在此模型基礎上進行了優化,在相同的預測效果下,XGBoost迭代的次數更少,除此以外還支持并行處理,有效降低了預測模型的復雜程度。
1.2.1XGBoost組成
XGBoost算法由模型、參數和目標函數三部分組成,對數據產生規律進行建模的問題通常會形式化為一個最小化目標函數的問題[8]。目標函數Obj(x)由損失函數L(x)和正則項Ω(x)組成,表示為:
Obj(x)=L(x)+Ω(x)
(4)
式中:損失函數L(x)是反映模型與實際數據差距,選擇與訓練數據擬合最優的模型,包含回歸和分類損失函數;正則項Ω(x)是為了選擇最簡單的模型,一方面通過最小化損失函數以提高預測效果,保證預測值和真實值之間的誤差最小。另一方面通過對損失函數中的相關參數進行限制,并在損失函數后面添加一個額外項,也就是正則項,使預測模型更加精簡,最終達到誤差和復雜度的綜合最優。
1.2.2XGBoost原理
在實際的生產應用中,數據集往往是非標準化的,一棵CART決策樹常常無法進行有效的學習和預測,實踐中常常需要綜合多棵樹的預測結果來提升模型的準確率[9]。XGBoost的算法思想是先采用簡單的模型擬合數據,在得到一個結果之后,不斷向模型中添加層數較淺的決策樹。隨著添加的樹的增加,XGBoost算法預測模型的復雜度也會逐漸升高,并不斷地對上次預測的殘差值進行二階泰勒展開,直到預測模型復雜度接近數據本身,最后將每棵樹對應的預測值加起來就是該樣本的最終預測值[11]。
假設模型中有k棵樹,F是決策樹空間,XGBoost的模型表示為:
(5)
XGBoost算法所對應的目標函數則為:
(6)

(7)
式中:T為樹葉子節點數;ω為葉子權重值;γ為葉子樹懲罰正則項,有剪枝功能;λ為葉子權重懲罰正則項。在XGBoost算法中,新生成的樹需要擬合上次的預測的殘差值,預測函數的表達式可以轉換為:
(8)
同時目標函數可以改寫成:
(9)
下一步工作是找到一個最小化的目標函數f(t),利用二階可導f(t)=0,函數取得極值,故對目標函數Obj(φ)中損失函數泰勒二階展開式表示為:
(10)

(11)
Ij={i|q(xi)=j}

(12)
式(12)也可以作為一個評分函數來衡量結構樹q的質量優劣。XGBoost預測算法在生成CART樹時考慮了樹的復雜度,因此能有效減小模型文件大小。同時XGBoost通過擬合上一輪損失函數的二階導展開,使得預測模型的迭代次數更少,準確性也更高。在系統資源占用方面,XGBoost在選擇最佳切分點時進行并行實現,極大提高了運行速度。
本文實驗數據來源于重慶市中陸承大科技有限公司,包含重慶市銅梁區在2016年3月—2018年9月間約15萬塊水表的230萬條用戶用水記錄。本文實驗分為數據預處理、學習預測和結果分析三個階段,實驗環境為PC,CPU Intel 2.3 GHz,RAM為12 GB,使用Windows 10操作系統,預測模型均使用Python實現。
在擾動方面,使用最近半年用戶用水量的平均值作為部分缺失值數據的補充,同時考慮用水量數據的統計學特征,對訓練數據的進行異常值判定和剔除操作,從而保證數據的有效性。數據集的劃分采用常用的數據留出法,將數據集按照訓練集和測試集7 ∶3的比例劃分,訓練集訓練對應的模型,測試集評估測試誤差,作為對泛化誤差的估計。
數據預處理階段,需要對用戶用水記錄進行統計,按照用水區域和每月用水量等得到有價值的特征,在模型特征提取層面,采用MIC分析了各種因素和用戶用水量的相關性,衡量相關因素對用戶用水量影響大小,預測方法流程如圖1所示。
基于MIC-XGBoost的用戶用水量預測模型的主要有以下3個步驟:
(1) 通過已有或政府公開的信息,收集多方面用戶用水量影響因素的數據,將數據預處理,對缺失值數據填充并進行平滑化處理;
(2) 運用MIC計算各影響因素與用戶用水量之間潛在的關聯程度,依據關聯程度值大小對不同影響因素排序,獲得關鍵關聯因素;
(3) 分別建立面向不同影響因素的MIC-XGBoost預測模型,選擇合適的參數,對預處理好的數據樣本進行訓練,做出對應影響因素下的用戶用水量預測,得到最終的用戶用水量預測結果。
在訓練和測試階段,由于數據的隨機性,通過Boost構建多個若分類器,增強模型的健壯性,同時將超出預期值的數據拉到正常范圍,解決超出理想數據的正常樣本,提高了模型的復雜度和和兼容性。
為了驗證基于MIC和XGBoost預測方法的有效性和合理性,將數據集分為標準的訓練集、驗證集和測試集。算法是以MIC檢測變量之間的相關性為基礎,根據MIC的相關性關系構造出新的XGBoost的預測網絡結構,通過參數調節來不斷優化用戶用水量預測模型,最終生成預測效果良好的網絡預測模型,實現預測目的。預測模型采用四個指標作為預測算法的性能評價標準,包括均方根誤差(Root mean square error,RMSE)、擬合優度R2、相對誤差和平均絕對百分比誤差(Mean absolute percent error,MAPE)。
(13)
(14)
(15)
式中:xobs,i表示真實值;xpred,i表示預測值;xavg,i表示真實值的均值。RMSE可以很好地反映出預測模型的誤差大小;擬合優度R2能反映預測模型對數據擬合的好壞程度。
MIC-XGBoost混合算法預測模型主要分為兩個階段,首先用MIC得到兩個變量之間相互關聯度,發現數據之間被抑制的關系(線性關系或非線性關系),用以提高數據利用率;然后通過得到MIC處理后的模型特征,作為XGBoost算法預測模型的輸入,直到訓練結束。基于此,提出了基于MIC-XGBoost算法用戶用水量數據預測方法。
2.3.1用戶用水影響因素分析
對于一個固定的用水用戶,有諸多因素影響用戶用水量變化,可根據MIC值確定變量之間的相關性。具體地,某一因素與固定因素之間的最大信息系數MIC值越大,該因素的重要性越高。
本文實驗考察了用水量和其他客觀因素之間的關系。影響用戶用水的因素有溫度、季節、節假日及一些供水系統特殊的突發事件,通過使用最大信息系數檢驗與用水量之間的關系,得到用戶用水及其影響因素之間的最大信息系數值,如圖2所示。隨著數據規模的增大MIC值都隨著增大而增大;在同等數據規模下,MIC的值大小與影響因素有關,其中影響用戶用水量最重要的因素是溫度,其次是季節和節假日。

圖2 用水量與各影響因素的MIC值
2.3.2用戶用水量預測效果分析
在各種影響用戶用水量的因素當中,如何找到其中最重要的影響因素是本文研究的一項比較重要的工作。利用MIC發掘變量之間的相關關系,是將變量之間的關系量化成指標的一個有效手段,再與XGBoost算法相結合得到用戶用水預測模型。
為了對比得到的數據預測模型,本文采用不同影響因素MIC值結合XGBoost預測算法得到不同的預測曲線,不同的影響因素下預測用水曲線及實際用水曲線如圖3-圖7所示。

圖3 溫度MIC-XGBoost預測圖

圖5 節假日MIC-XGBoost預測圖

圖7 XGBoost預測圖
由圖3-圖7可知,模型擬合效果最佳的是溫度MIC-XGBoost預測算法。表1為測試集的預測性能指標結果,明顯可見基于MIC的XGBoost預測算法的用戶用水量預測的預測效果,均優于使用單一XGBoost算法進行預測,其中采用最大相關系數中相關系數較大的值,預測效果更佳。
由于XGBoost自身支持并行化,都有較好的擬合度,另外基于MIC的XGBoost預測算法在擬合度、RMSE、MAPE、相對誤差,這些預測性能都要優于單一的XGBoost預測模型,同時隨著MIC系數增大,用戶用水量預測性能指標都呈現出更優的指數。在影響用戶用水量的因素中,溫度與用戶用水量的MIC值最大,即溫度與用戶用水量相關性最高。基于溫度MIC-XGBoost的預測算法在擬合度比直接使用XGBoost算法預測高出21%,RMSE值也更低。由此可知,基于MIC-XGBoost預測算法對用戶用水量有較高的預測精度,是一種比較有效的用戶用水量預測方法。
本文提出了基于MIC-XGBoost預測算法模型實現單一用戶用水量的預測,以重慶市銅梁區用戶實際用水量為預測基礎,檢驗其效果并得到以下結論:
(1) 通過最大信息系數量化影響用戶用水量的因素,結合XGBoost算法,其學習能力和預測精度均優于單一的XGBoost預測模型,解決了XGBoost在處理模型訓練時存在的訓練復雜化問題,有利于防止過擬合,從而提高模型的泛化能力,獲得了良好的預測效果。
(2) 用戶用水量因素的選取在一定程度上影響著MIC-XGBoost預測模型的預測效果,當MIC值越大,變量之間相關性越高,結合XGBoost算法,使得預測精度有所提高,在水表用水數據審核和數據準確性具有可靠的參考價值。
(3) 在抄表數據預測應用中,選擇準確率最高的基于溫度的MIC-XGBoost預測算法作為抄表數據過濾的依據,預測值和真實值誤差在±2之見,則自動過濾,不需要人工審核,將原來20萬條以上的審核數據降低到3萬~5萬條,在保證數據準確性同時極大減輕了公司的審核壓力。
但本文是針對單一影響因素對用戶用水量的MIC-XGBoost預測模型,綜合因素下對于用戶用水量影響還有待進一步研究。