陳 莊 周 糴(重慶理工大學計算機科學與工程學院 重慶 400054)
在城市智能化的過程中,對城市居民用水量的科學合理預測是對用水資源合理管理、調(diào)度和規(guī)劃的基礎(chǔ)。由于受不同社會環(huán)境因素(如溫度、季節(jié)變化和節(jié)假日等)和客觀因素(如管道破裂、緊急停水等突發(fā)狀況)的影響,用戶用水量會在一定范圍內(nèi)波動。在市政工程中,為人民生活提供持續(xù)穩(wěn)定優(yōu)質(zhì)的供水服務是保證民生必不可少的一環(huán)。與此同時,隨著城市發(fā)展速度不斷加快,居民對水資源管理也有了更高的要求,這意味著供水企業(yè)也需要不斷地升級服務來滿足城市發(fā)展和消費者基本生活的需要。因此,考慮主要用水影響因素并利用歷史用水數(shù)據(jù)對用戶用水量進行預測就變得極為重要,具有較強的理論意義與應用價值。
由于傳統(tǒng)抄表存在工作量大、易出差錯和抄表環(huán)境復雜等客觀問題。近年來,重慶市已經(jīng)開始以電子抄表的方式代替?zhèn)鹘y(tǒng)人工的抄表方式。首先通過掃描RFID標簽獲得水表和用戶的基本信息,并錄入用戶水表的止碼;然后將用戶信息、抄表記錄等上傳到企業(yè)的數(shù)據(jù)庫中,經(jīng)企業(yè)數(shù)據(jù)管理人員審核過后,最終作為公司向用戶收費的憑證標準。雖然電子抄表的效率已經(jīng)在傳統(tǒng)抄表基礎(chǔ)上得到提升,但在實際操作過程中,大量冗雜的數(shù)據(jù)仍然會給后臺的工作人員帶來較大的數(shù)據(jù)審核壓力。據(jù)調(diào)查可知,對20萬條以上的數(shù)據(jù)進行審核時,水務企業(yè)每月需安排40人以上來完成。因此如何減少企業(yè)人員的審核數(shù)據(jù)的壓力同時保證數(shù)據(jù)的正確性,是水務企業(yè)工作中所需解決的一個重要問題。
為解決上述問題,本文使用某水務公司2017年3月—2018年9月的抄表數(shù)據(jù)作為研究數(shù)據(jù),基于用戶的用水記錄,對用戶用水規(guī)律和影響因素進行分析,最終實現(xiàn)對用戶用水情況的有效預測。預測模型通過最大信息系數(shù)檢測變量之間的相關(guān)性,根據(jù)最大信息系數(shù)得出的相關(guān)性指標來構(gòu)造XGBoost初始網(wǎng)絡(luò),經(jīng)過訓練和測試,生成最終的用戶用水量預測模型。并對居民下個用水周期的用水量進行預測和分析,逐步提升預測結(jié)果的精度,通過與實際數(shù)據(jù)對比,驗證該方法的有效性。
在以往的研究工作中,學者們基于不同的用水量預測模型,對用水預測相關(guān)問題進行了多角度研究,較典型的有區(qū)域用水量預測和城市用水量預測。如高學平等[1]基于PCA-RBF神經(jīng)網(wǎng)絡(luò)模型對城市用水量預測等;李曉英等[6]基于GRA-MEA-BP耦合模型的城市需水預測研究;楊皓翔等[7]基于加權(quán)灰色-馬爾可夫鏈模型的城市需水預測。已有研究主要聚焦于整體區(qū)域的用水量預測,而針對單一用戶的用水預測研究較少?;诖?,本文結(jié)合最大信息系數(shù)和XGBoost算法對用戶用水量進行了預測。
最大信息系數(shù)(MIC)是以互信息為基礎(chǔ)[5],用于各種不同變量之間非線性相關(guān)性進行檢測,最終得到變量之間的依賴關(guān)系強度的度量,是信息論和概率的結(jié)合[10]。最大信息系數(shù)具有普適性和均衡性,其中普適性借助MIC可以發(fā)現(xiàn)變量之間的函數(shù)關(guān)系和非函數(shù)關(guān)系;均衡性借助MIC可以用來橫向和縱向比較不同變量的關(guān)系強度。
最大信息系數(shù)的定義如下:設(shè)有序數(shù)據(jù)集D={(xi,yi),i=1,2,…,n},D?R2,將數(shù)據(jù)集D中的點落入由x軸和y軸劃分成x×y的二維網(wǎng)格G中,落入G中格子的點的概率分布為D|G。x和y均為正整數(shù),最大互信息定義為:
I*(D,x,y)=maxI(D|G)
(1)
最大互信息系數(shù)是指通過所有可能的網(wǎng)格劃分G上互信息的最大值I(D|G),表示在x×y網(wǎng)格概率分布D|G情況下的互信息[3]。其中在所有x×y的格子中,互信息的計算式表示為:
(2)
最大信息系數(shù)取M(D)x,y中最大值,計算式為:
(3)
式(2)是尋找所有x×y的格子中最大互信息,并將獲得的最大互信息進行歸一化,將計算所得的最大互信息除以二維網(wǎng)格G中的最小值,確保每個元素MIC的取值范圍在[0,1]之間[5];歸一化后通過式(3)獲得最大值作為該數(shù)據(jù)集的MIC值。設(shè)置合適的B(|D|)值,使其增長速度遠小于D增長速度。Reshef等[4]建議設(shè)置B(|D|)=D0.6。
用戶用水量情況和諸多客觀環(huán)境因素相關(guān),不同的影響因素會導致用戶用水量差異,同種因素因為不同的用戶群體也會有所差異[2]。而采用MIC可以分析出變量之間的相關(guān)性,定量表達出用戶用水量和不同影響因素之間的關(guān)聯(lián)程度。
近年來,XGBoost算法模型已經(jīng)在各類數(shù)據(jù)科學競賽以及工業(yè)界中得到廣泛應用,并取得了優(yōu)異的成績。經(jīng)過不斷優(yōu)化,XGBoost的樹模型處理表格數(shù)據(jù)的過程不僅高效且具有較好的精確性。除此以外,相比于傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),XGBoost的參數(shù)調(diào)節(jié)更簡易且支持并行計算,擁有更快的訓練速度,預測的準確率也有較大提升。鑒于此,在MIC的基礎(chǔ)上,本文使用XGBoost預測模型作為用戶用水量數(shù)據(jù)預測模型。
XGBoost是在GBDT(Gradient Boosting Decision Tree)基礎(chǔ)上發(fā)展起來。GBDT算法在2015年由Chen等[8]提出,由于該算法只針對一階的導數(shù)值展開,難以分布式實現(xiàn),模型的訓練速度低,同時對系統(tǒng)的硬件配置的要求也比較高。XGBoost則在此模型基礎(chǔ)上進行了優(yōu)化,在相同的預測效果下,XGBoost迭代的次數(shù)更少,除此以外還支持并行處理,有效降低了預測模型的復雜程度。
1.2.1XGBoost組成
XGBoost算法由模型、參數(shù)和目標函數(shù)三部分組成,對數(shù)據(jù)產(chǎn)生規(guī)律進行建模的問題通常會形式化為一個最小化目標函數(shù)的問題[8]。目標函數(shù)Obj(x)由損失函數(shù)L(x)和正則項Ω(x)組成,表示為:
Obj(x)=L(x)+Ω(x)
(4)
式中:損失函數(shù)L(x)是反映模型與實際數(shù)據(jù)差距,選擇與訓練數(shù)據(jù)擬合最優(yōu)的模型,包含回歸和分類損失函數(shù);正則項Ω(x)是為了選擇最簡單的模型,一方面通過最小化損失函數(shù)以提高預測效果,保證預測值和真實值之間的誤差最小。另一方面通過對損失函數(shù)中的相關(guān)參數(shù)進行限制,并在損失函數(shù)后面添加一個額外項,也就是正則項,使預測模型更加精簡,最終達到誤差和復雜度的綜合最優(yōu)。
1.2.2XGBoost原理
在實際的生產(chǎn)應用中,數(shù)據(jù)集往往是非標準化的,一棵CART決策樹常常無法進行有效的學習和預測,實踐中常常需要綜合多棵樹的預測結(jié)果來提升模型的準確率[9]。XGBoost的算法思想是先采用簡單的模型擬合數(shù)據(jù),在得到一個結(jié)果之后,不斷向模型中添加層數(shù)較淺的決策樹。隨著添加的樹的增加,XGBoost算法預測模型的復雜度也會逐漸升高,并不斷地對上次預測的殘差值進行二階泰勒展開,直到預測模型復雜度接近數(shù)據(jù)本身,最后將每棵樹對應的預測值加起來就是該樣本的最終預測值[11]。
假設(shè)模型中有k棵樹,F(xiàn)是決策樹空間,XGBoost的模型表示為:
(5)
XGBoost算法所對應的目標函數(shù)則為:
(6)
(7)
式中:T為樹葉子節(jié)點數(shù);ω為葉子權(quán)重值;γ為葉子樹懲罰正則項,有剪枝功能;λ為葉子權(quán)重懲罰正則項。在XGBoost算法中,新生成的樹需要擬合上次的預測的殘差值,預測函數(shù)的表達式可以轉(zhuǎn)換為:
(8)
同時目標函數(shù)可以改寫成:
(9)
下一步工作是找到一個最小化的目標函數(shù)f(t),利用二階可導f(t)=0,函數(shù)取得極值,故對目標函數(shù)Obj(φ)中損失函數(shù)泰勒二階展開式表示為:
(10)
(11)
Ij={i|q(xi)=j}
(12)
式(12)也可以作為一個評分函數(shù)來衡量結(jié)構(gòu)樹q的質(zhì)量優(yōu)劣。XGBoost預測算法在生成CART樹時考慮了樹的復雜度,因此能有效減小模型文件大小。同時XGBoost通過擬合上一輪損失函數(shù)的二階導展開,使得預測模型的迭代次數(shù)更少,準確性也更高。在系統(tǒng)資源占用方面,XGBoost在選擇最佳切分點時進行并行實現(xiàn),極大提高了運行速度。
本文實驗數(shù)據(jù)來源于重慶市中陸承大科技有限公司,包含重慶市銅梁區(qū)在2016年3月—2018年9月間約15萬塊水表的230萬條用戶用水記錄。本文實驗分為數(shù)據(jù)預處理、學習預測和結(jié)果分析三個階段,實驗環(huán)境為PC,CPU Intel 2.3 GHz,RAM為12 GB,使用Windows 10操作系統(tǒng),預測模型均使用Python實現(xiàn)。
在擾動方面,使用最近半年用戶用水量的平均值作為部分缺失值數(shù)據(jù)的補充,同時考慮用水量數(shù)據(jù)的統(tǒng)計學特征,對訓練數(shù)據(jù)的進行異常值判定和剔除操作,從而保證數(shù)據(jù)的有效性。數(shù)據(jù)集的劃分采用常用的數(shù)據(jù)留出法,將數(shù)據(jù)集按照訓練集和測試集7 ∶3的比例劃分,訓練集訓練對應的模型,測試集評估測試誤差,作為對泛化誤差的估計。
數(shù)據(jù)預處理階段,需要對用戶用水記錄進行統(tǒng)計,按照用水區(qū)域和每月用水量等得到有價值的特征,在模型特征提取層面,采用MIC分析了各種因素和用戶用水量的相關(guān)性,衡量相關(guān)因素對用戶用水量影響大小,預測方法流程如圖1所示。
基于MIC-XGBoost的用戶用水量預測模型的主要有以下3個步驟:
(1) 通過已有或政府公開的信息,收集多方面用戶用水量影響因素的數(shù)據(jù),將數(shù)據(jù)預處理,對缺失值數(shù)據(jù)填充并進行平滑化處理;
(2) 運用MIC計算各影響因素與用戶用水量之間潛在的關(guān)聯(lián)程度,依據(jù)關(guān)聯(lián)程度值大小對不同影響因素排序,獲得關(guān)鍵關(guān)聯(lián)因素;
(3) 分別建立面向不同影響因素的MIC-XGBoost預測模型,選擇合適的參數(shù),對預處理好的數(shù)據(jù)樣本進行訓練,做出對應影響因素下的用戶用水量預測,得到最終的用戶用水量預測結(jié)果。
在訓練和測試階段,由于數(shù)據(jù)的隨機性,通過Boost構(gòu)建多個若分類器,增強模型的健壯性,同時將超出預期值的數(shù)據(jù)拉到正常范圍,解決超出理想數(shù)據(jù)的正常樣本,提高了模型的復雜度和和兼容性。
為了驗證基于MIC和XGBoost預測方法的有效性和合理性,將數(shù)據(jù)集分為標準的訓練集、驗證集和測試集。算法是以MIC檢測變量之間的相關(guān)性為基礎(chǔ),根據(jù)MIC的相關(guān)性關(guān)系構(gòu)造出新的XGBoost的預測網(wǎng)絡(luò)結(jié)構(gòu),通過參數(shù)調(diào)節(jié)來不斷優(yōu)化用戶用水量預測模型,最終生成預測效果良好的網(wǎng)絡(luò)預測模型,實現(xiàn)預測目的。預測模型采用四個指標作為預測算法的性能評價標準,包括均方根誤差(Root mean square error,RMSE)、擬合優(yōu)度R2、相對誤差和平均絕對百分比誤差(Mean absolute percent error,MAPE)。
(13)
(14)
(15)
式中:xobs,i表示真實值;xpred,i表示預測值;xavg,i表示真實值的均值。RMSE可以很好地反映出預測模型的誤差大??;擬合優(yōu)度R2能反映預測模型對數(shù)據(jù)擬合的好壞程度。
MIC-XGBoost混合算法預測模型主要分為兩個階段,首先用MIC得到兩個變量之間相互關(guān)聯(lián)度,發(fā)現(xiàn)數(shù)據(jù)之間被抑制的關(guān)系(線性關(guān)系或非線性關(guān)系),用以提高數(shù)據(jù)利用率;然后通過得到MIC處理后的模型特征,作為XGBoost算法預測模型的輸入,直到訓練結(jié)束?;诖耍岢隽嘶贛IC-XGBoost算法用戶用水量數(shù)據(jù)預測方法。
2.3.1用戶用水影響因素分析
對于一個固定的用水用戶,有諸多因素影響用戶用水量變化,可根據(jù)MIC值確定變量之間的相關(guān)性。具體地,某一因素與固定因素之間的最大信息系數(shù)MIC值越大,該因素的重要性越高。
本文實驗考察了用水量和其他客觀因素之間的關(guān)系。影響用戶用水的因素有溫度、季節(jié)、節(jié)假日及一些供水系統(tǒng)特殊的突發(fā)事件,通過使用最大信息系數(shù)檢驗與用水量之間的關(guān)系,得到用戶用水及其影響因素之間的最大信息系數(shù)值,如圖2所示。隨著數(shù)據(jù)規(guī)模的增大MIC值都隨著增大而增大;在同等數(shù)據(jù)規(guī)模下,MIC的值大小與影響因素有關(guān),其中影響用戶用水量最重要的因素是溫度,其次是季節(jié)和節(jié)假日。
圖2 用水量與各影響因素的MIC值
2.3.2用戶用水量預測效果分析
在各種影響用戶用水量的因素當中,如何找到其中最重要的影響因素是本文研究的一項比較重要的工作。利用MIC發(fā)掘變量之間的相關(guān)關(guān)系,是將變量之間的關(guān)系量化成指標的一個有效手段,再與XGBoost算法相結(jié)合得到用戶用水預測模型。
為了對比得到的數(shù)據(jù)預測模型,本文采用不同影響因素MIC值結(jié)合XGBoost預測算法得到不同的預測曲線,不同的影響因素下預測用水曲線及實際用水曲線如圖3-圖7所示。
圖3 溫度MIC-XGBoost預測圖
圖5 節(jié)假日MIC-XGBoost預測圖
圖7 XGBoost預測圖
由圖3-圖7可知,模型擬合效果最佳的是溫度MIC-XGBoost預測算法。表1為測試集的預測性能指標結(jié)果,明顯可見基于MIC的XGBoost預測算法的用戶用水量預測的預測效果,均優(yōu)于使用單一XGBoost算法進行預測,其中采用最大相關(guān)系數(shù)中相關(guān)系數(shù)較大的值,預測效果更佳。
由于XGBoost自身支持并行化,都有較好的擬合度,另外基于MIC的XGBoost預測算法在擬合度、RMSE、MAPE、相對誤差,這些預測性能都要優(yōu)于單一的XGBoost預測模型,同時隨著MIC系數(shù)增大,用戶用水量預測性能指標都呈現(xiàn)出更優(yōu)的指數(shù)。在影響用戶用水量的因素中,溫度與用戶用水量的MIC值最大,即溫度與用戶用水量相關(guān)性最高。基于溫度MIC-XGBoost的預測算法在擬合度比直接使用XGBoost算法預測高出21%,RMSE值也更低。由此可知,基于MIC-XGBoost預測算法對用戶用水量有較高的預測精度,是一種比較有效的用戶用水量預測方法。
本文提出了基于MIC-XGBoost預測算法模型實現(xiàn)單一用戶用水量的預測,以重慶市銅梁區(qū)用戶實際用水量為預測基礎(chǔ),檢驗其效果并得到以下結(jié)論:
(1) 通過最大信息系數(shù)量化影響用戶用水量的因素,結(jié)合XGBoost算法,其學習能力和預測精度均優(yōu)于單一的XGBoost預測模型,解決了XGBoost在處理模型訓練時存在的訓練復雜化問題,有利于防止過擬合,從而提高模型的泛化能力,獲得了良好的預測效果。
(2) 用戶用水量因素的選取在一定程度上影響著MIC-XGBoost預測模型的預測效果,當MIC值越大,變量之間相關(guān)性越高,結(jié)合XGBoost算法,使得預測精度有所提高,在水表用水數(shù)據(jù)審核和數(shù)據(jù)準確性具有可靠的參考價值。
(3) 在抄表數(shù)據(jù)預測應用中,選擇準確率最高的基于溫度的MIC-XGBoost預測算法作為抄表數(shù)據(jù)過濾的依據(jù),預測值和真實值誤差在±2之見,則自動過濾,不需要人工審核,將原來20萬條以上的審核數(shù)據(jù)降低到3萬~5萬條,在保證數(shù)據(jù)準確性同時極大減輕了公司的審核壓力。
但本文是針對單一影響因素對用戶用水量的MIC-XGBoost預測模型,綜合因素下對于用戶用水量影響還有待進一步研究。