談叢,黃紅橋,陳石東,李愷,解玉滿,劉謀海
[1.國網(wǎng)湖南省電力有限公司供電服務(wù)中心(計量中心),湖南長沙 410004;2.智能電氣量測與應(yīng)用技術(shù)湖南省重點實驗室,湖南長沙410004]
智能電能表目前已經(jīng)在我國實現(xiàn)了大面積覆蓋,智能電能表的發(fā)展為人們生活帶來了很多便利,但受智能電能表安裝施工工藝、運行年限、運行環(huán)境以及用電負荷等因素的影響,智能電能表燒表的現(xiàn)象時有發(fā)生,由此造成的停電以及表箱或線路火災(zāi)給用電的安全以及便利帶來了諸多風(fēng)險,給供電企業(yè)造成了較大損失.以某省份數(shù)據(jù)為例,2019—2020年,每年共有數(shù)萬件的燒表事故,由此帶來的經(jīng)濟效益損失與社會效益損失巨大,建立一種能提前預(yù)測燒表的方法或者模型,成為行業(yè)內(nèi)的一種迫切的需求.
由于電能表燒損是一種偶發(fā)現(xiàn)象,且引發(fā)燒表的因素多種多樣,基層供電服務(wù)員工的運維水平、接線材料、電能表運行環(huán)境等多重因素都可能導(dǎo)致燒表,這些因素通常不可直接對其進行量化表示,基于以上困難,業(yè)界未曾對燒表建立起一種普遍可行的預(yù)測機制.
近年來,與智能電能表配套發(fā)展的用電信息采集系統(tǒng)不斷完善,積累了大量智能電能表的運行數(shù)據(jù),通過對這些數(shù)據(jù)的挖掘和分析,構(gòu)造燒表特征模型,成為破解燒表預(yù)測模型的一種可能[1-2].
目前,國內(nèi)外學(xué)者針對電能表運行中的故障提出了多種預(yù)測和分析方法,對于解決燒表問題具有一定的借鑒意義.文獻[3]提出的智能電能表故障類型分類和預(yù)測模型,主要基于Bayes Network,模型主要考慮了電能表產(chǎn)品特征數(shù)據(jù),采用了基于評分搜索的方法構(gòu)建Bayes Network 結(jié)構(gòu),構(gòu)建了電能表故障預(yù)測模型,但該模型并未使用智能電能表的運行數(shù)據(jù),評價的維度不夠全面.文獻[4]提出了智能表故障風(fēng)險預(yù)估算法,針對智能電表的首檢數(shù)據(jù)進行篩查,將篩查結(jié)果劃分為四個風(fēng)險等級,但評價模型只應(yīng)用了智能電表的首檢數(shù)據(jù),沒有全面利用智能電表的產(chǎn)品特征數(shù)據(jù)和電氣運行數(shù)據(jù),模型的評價也不夠全面.文獻[5]提出了一種多分類集成樹模型,首先利用聚類方法實現(xiàn)了數(shù)據(jù)的預(yù)處理和維度的壓縮,從數(shù)據(jù)預(yù)處理的角度克服了不平衡數(shù)據(jù)集在機器學(xué)習(xí)過程中的弊端,本模型在數(shù)據(jù)預(yù)處理方面取得了較大的進展,但由于沒有引入電氣運行數(shù)據(jù),預(yù)測精度較低.文獻[6]設(shè)計了基于梯度提升決策樹(Gradient Boosting Decision Tree,GBDT)的故障大類、故障小類以及設(shè)備壽命周期的預(yù)測,但使用的數(shù)據(jù)維度較少,僅限于部分到貨批次信息以及氣候數(shù)據(jù)信息.文獻[7]提出了一種多分類融合模型的智能電表故障預(yù)測算法,通過傳統(tǒng)的欠采樣和過采樣相結(jié)合的方式解決了數(shù)據(jù)集中類不平衡問題,但欠采樣和過采樣都引入了較大隨機因素,傳統(tǒng)的欠采樣會導(dǎo)致樣本信息的缺失,傳統(tǒng)的過采樣可能會導(dǎo)致過擬合.文獻[8]提出了一種智能電表故障多分類方法,主要針對現(xiàn)有算法無法實現(xiàn)標簽值與概率值的基類模型融合問題,但該方法選取的特征均為靜態(tài)變量,對電能表使用過程中的變化無法進行監(jiān)測,無法解釋故障的偶發(fā)性.文獻[9]設(shè)計了一種基于深度信念網(wǎng)絡(luò)對計量裝置故障溯源的方法,使用卷積神經(jīng)網(wǎng)絡(luò)對歷史電流、功率曲線序列進行了特征提取,實現(xiàn)了異常電能表的故障溯源,該方法既使用了電能表的產(chǎn)品批次信息,也利用了運行電氣數(shù)據(jù),雖然未對燒表問題進行研究,但具有較好的借鑒作用.文獻[10]提出了一種智能電能表異常數(shù)據(jù)檢測方法,能夠?qū)Ω`電用戶和異常設(shè)備進行在線監(jiān)測,能夠提升供電公司的線損指標,該方法側(cè)重于研究電能表數(shù)據(jù)異常,但對于電能表故障的研究不夠深入.文獻[11]設(shè)計了基于智能電能表運行故障數(shù)據(jù)的縱向分析模型,可以對不同廠家、不同批次的智能電能表的故障率隨時間的變化進行分析,該方法也是側(cè)重于利用電能表產(chǎn)品信息進行建模,沒能對電能表運行數(shù)據(jù)進行分析.文獻[12]提出了一種基于條件變分自編碼器-卷積神經(jīng)網(wǎng)絡(luò)模型的不平衡多分類方法,將類標簽作為約束條件,搭建由全連接層構(gòu)成的CAVE網(wǎng)絡(luò)生成少數(shù)類樣本,學(xué)習(xí)各類分布特點和數(shù)據(jù)集全局特征,提高生成數(shù)據(jù)質(zhì)量,對于解決數(shù)據(jù)不平衡問題,可以借鑒該方法.文獻[13]提出了一種基于LSTM的電力負荷預(yù)測方法,該方法能夠有效預(yù)測電力負荷數(shù)據(jù),對于電能表的運行缺失數(shù)據(jù),可以借鑒該方法,對缺失值進行填充.
GBDT 的基本算法思路是將弱分類器進行線性組合后得到強分類器[14],在訓(xùn)練的過程中,GBDT 能夠根據(jù)上一輪的結(jié)果,迭代更新梯度的方向,使得模型能夠以最大的速率向誤差不斷減小的方向進化[15-16].
XGBoost 算法在GBDT 的基礎(chǔ)上進行了優(yōu)化,能夠根據(jù)計算機CPU 的運行情況進行多線程的并行計算;同時還能在一定程度上提高泛化能力,將單決策樹模型的復(fù)雜度作為正則化的優(yōu)化目標;在公式推導(dǎo)中引入了二階導(dǎo)數(shù),準確率更高,不易過擬合[17].
為了構(gòu)建電能表燒損故障關(guān)聯(lián)分析和預(yù)測模型,本文研究思路如下:
1)結(jié)合某省供電公司部分電能表的產(chǎn)品信息等靜態(tài)數(shù)據(jù)和電能表的歷史運行數(shù)據(jù),進行燒損關(guān)聯(lián)性分析,使用XGBoost 模型對包含“燒表”和“不燒表”的二分類數(shù)據(jù)集進行訓(xùn)練,形成算法模型.
2)使用XGBoost 算法模型進行交叉驗證測試,并與KNN、SVM 和Naive Bayes 等傳統(tǒng)機器學(xué)習(xí)算法進行對比,以觀察XGBoost 算法對實驗準確度的提升是否有影響.
3)將模型進行系統(tǒng)部署,以某省供電公司所有在運的電能表為數(shù)據(jù)源,針對缺失的運行數(shù)據(jù),使用LSTM 算法對其進行預(yù)測并填充,構(gòu)建完整的測試集數(shù)據(jù),驗證模型運行的實際效果.
某省公司計量中心拆回分揀實驗室從2019 年開始對退出運行的電能表進行集中回收處置,對因燒壞而退出運行的電能表進行了逐塊記錄,形成了燒表原始數(shù)據(jù)集.數(shù)據(jù)集包括已燒壞電能表所在市州、生產(chǎn)廠家、安裝時間、運行時間、所在臺區(qū)近年歷史燒表數(shù)量以及退出運行前的每日電量、電壓和電流數(shù)據(jù),所在臺區(qū)每日線損數(shù)據(jù)共形成了22 567 條燒表信息記錄.同時,在用電信息采集系統(tǒng)選取185 710塊正常運行的電能表的同樣維度的數(shù)據(jù),形成了未燒表數(shù)據(jù)集.
1)根據(jù)歷史統(tǒng)計結(jié)果,不同市州的表計燒表率有較大的區(qū)別,全省14 個市州的年燒表率范圍大致為0.2%~0.5%,將各市州屬性按風(fēng)險程度等級進行分類,賦予不同的標簽,如表1所示.
表1 市州屬性風(fēng)險程度等級分類Tab.1 Risk degree classification of different cities
2)根據(jù)歷史統(tǒng)計結(jié)果,不同生產(chǎn)廠家的表計燒表率有較大的區(qū)別,運行在全省的電能表所屬廠家共有78 家,不同廠家2020—2021 年平均每年的燒表率范圍大致為0~1%,將各生產(chǎn)廠家屬性按風(fēng)險程度等級進行分類,賦予不同的標簽,如表2所示.
表2 生產(chǎn)廠家屬性風(fēng)險程度等級分類Tab.2 Risk degree classification of different manufacturers
3)根據(jù)統(tǒng)計結(jié)果,不同安裝年份的燒表率有著明顯差異,如圖1 所示,安裝時間在2013 年到2018年電能表燒損居多,占總燒表數(shù)量的74.16%.
圖1 不同安裝年份燒損電能表數(shù)量Fig.1 Number of burned smart meters in different installation years
4)根據(jù)統(tǒng)計結(jié)果,每年不同的月份燒表率也有著明顯的差異,以某城市為例,2019—2021年夏季月平均氣溫每升高1 ℃,月燒表數(shù)量增加約719 塊;2019—2021年冬季月相對濕度每下降1%,燒表數(shù)量增加約108塊.
5)根據(jù)統(tǒng)計結(jié)果,在燒表前一段時間內(nèi),每日電量、每日最大電壓和最大電流會有不同程度的突變的現(xiàn)象.
6)根據(jù)統(tǒng)計結(jié)果,存在一部分燒表會導(dǎo)致電能表“表碼”出現(xiàn)異常,會影響其所在臺區(qū)的線損.
7)根據(jù)統(tǒng)計結(jié)果,電能表運行終碼越大,其燒損的概率更高,終碼在一定程度上能夠表示電能表內(nèi)元器件工作運行的實際時長.
8)根據(jù)統(tǒng)計結(jié)果,臺區(qū)歷史燒表數(shù)量,表示電能表所在臺區(qū)上一自然年的總燒表數(shù)量,該數(shù)據(jù)能夠在一定程度上反映出該臺區(qū)的運維水平.
XGBoost 算法是是基于GBDT 改進而來的,它采用了GBDT 的生成算法和梯度提升思想,并進行了相應(yīng)的提升,使得算法效果進一步得到提高[18-21].
對于樣本屬性集合x={x1,x2,…,xN}和樣本標簽組合y={y1,y2,…,yN},XGBoost 算法包括K棵樹的加法模型為:
式中:fk為基類模型的目標函數(shù);F為對應(yīng)基類模型組成的函數(shù)空間.
目標函數(shù)計算公式為:
式中:l(yi,)表示真實值與預(yù)測值之間的誤差;T表示葉子節(jié)點總數(shù);ωt表示第t個葉子節(jié)點的分數(shù);γ和λ表示L1和L2正則化系數(shù).
為了極小化目標函數(shù),XGBoost直接基于目標函數(shù)進行二階泰勒展開.
繼續(xù)簡化,得目標函數(shù)為:
找到最優(yōu)分裂節(jié)點的步驟如下:
1)每個葉子節(jié)點j上包含的樣本集合Ij={i|q(xi=j)},為了進一步簡化,目標函數(shù)可以改成如下形式:
2)為使目標函數(shù)得到最優(yōu)解,對ω進行求導(dǎo),使導(dǎo)數(shù)為0,得ωj=
代入式(6)得:
3)最優(yōu)的分裂節(jié)點能夠使信息增益G最大.G的計算方式如下:
式中:HL和HR分別為目標函數(shù)在分裂后左、右節(jié)點的一階導(dǎo)數(shù)之和;GL和GR分別為目標函數(shù)在分裂后左、右節(jié)點目標函數(shù)的二階導(dǎo)數(shù)之和.
經(jīng)過分析,電能表燒損可能與多個因素存在關(guān)聯(lián)性,為了對電能表的燒損建立統(tǒng)一的分析模型,選取電能表所在市州、生產(chǎn)廠家、安裝時間、運行時間、所在臺區(qū)2020—2021 年歷史燒表數(shù)量以及退出運行前30 d 的每日電量數(shù)據(jù),每日最大電壓和最大電流數(shù)據(jù),所在臺區(qū)每日線損數(shù)據(jù)作為特征,結(jié)合XGBoost模型的特點進行實驗分析.
XGBoost模型包含多個參數(shù),按照一般的調(diào)參順序,先從框架參數(shù)開始進行調(diào)參:
1)“booster”:由于本課題涉及的特征數(shù)量較多,選擇樹模型;
2)“objective”:本課題研究屬于分類問題,選擇softmax分類器;
3)“n_estimators”:XGBoost算法是由若干個弱分類器組合而成,在一定程度上,弱分類器的數(shù)量越多,分類的準確度越高.為了找到最優(yōu)參數(shù),保持其他參數(shù)為默認參數(shù),進行實驗,結(jié)果如圖2 所示,XGBoost 算法的識別正確率在迭代700 次時達到最高點,之后逐漸降低.
圖2 不同迭代次數(shù)時模型的F1-scoreFig.2 F1-score of the algorithm at different estimators
然后,開始調(diào)節(jié)弱學(xué)習(xí)器的參數(shù):
4)“max_depth”:固定XGBoost 算法的迭代次數(shù)為700 次,嘗試采用不同樹的高度,觀察實驗結(jié)果與樹的高度關(guān)系.實驗結(jié)果如圖3 所示,當樹的高度分別為2、4、6、8、10、12 時,隨著迭代次數(shù)的增加,算法的識別正確率逐漸提高,并且很快趨于穩(wěn)定,當樹的高度為10時,算法的性能達到最優(yōu).
圖3 不同樹的高度時模型的F1-scoreFig.3 F1-score of the algorithm at different tree height
5)其他參數(shù):在確定了前面4 個參數(shù)之后,采用網(wǎng)格搜索,對學(xué)習(xí)率、gamma 參數(shù)、lambda 正則系數(shù)、alpha 正則系數(shù)等參數(shù)按給定步長在一定范圍內(nèi)依次進行調(diào)整,最終結(jié)果如表3所示.
表3 XGBoost參數(shù)調(diào)優(yōu)Tab.3 XGBoost parameters’optimization
使用XGBoost 建模過程中,可以根據(jù)模型自帶的feature_importances 排序工具,評價每個特征對模型的貢獻程度,從而對特征變量進行進一步的篩選.圖4 為重要性排在前十的特征量,可以看出,運行時長、臺區(qū)歷史燒表數(shù)量、表計止碼和燒表前1 d 的用電量為模型中比較重要的特征.
圖4 模型的特征重要性Fig.4 Feature importance of the algorithm
因為考慮到模型需要進行實際應(yīng)用,任意一個網(wǎng)省公司的用戶數(shù)量都是千萬級別,模型的計算量相當大.因此,嘗試進行降維,適當壓縮電量、電壓、電流、線損追溯的天數(shù),在固定其他參數(shù)和特征不變的情況下,追溯天數(shù)與F1指標的變化情況如圖5 所示.由圖5 可知,往前追溯15 d 左右,即可得到較好的模型效果,所以為了模型計算更加快捷,將模型需要的追溯時間調(diào)整為燒表前的15 d.
本文還采用了KNN、樸素貝葉斯、決策樹、支持向量機、隨機森林、GBDT 等進行實驗,與XGBoost 算法的比對結(jié)果如表4 所示.實驗采取了五折交叉驗證的方式,從表4 可以看出,基于支持向量機、樸素貝葉斯和KNN 的識別指標比較低,分別為27.08%、22.86%和40.92%;采用決策樹、隨機森林和GBDT的算法識別準確率分別為56.00%、56.00%和72.75%;而基于XGBoost 算法的識別準確率為76.51%,遠高于傳統(tǒng)算法.
表4 與其他機器學(xué)習(xí)模型的結(jié)果對比Tab.4 Comparison of results of different machine learning algorithm
根據(jù)電能表的實際運行數(shù)據(jù),燒表情況占比很小,以某網(wǎng)省公司為例,每年燒表的比例不足1%,但由于基數(shù)比較大,所以燒表造成的經(jīng)濟損失相當大.
從理論上說,在實現(xiàn)二分類的過程中,如果類別分布不均衡,會在一定程度上影響模型分類的準確性.而在本實例中,數(shù)據(jù)集中包含的燒表樣本僅占總數(shù)的10%.
根據(jù)以上所有模型的表現(xiàn),所有模型的精度與召回率如表5 所示.基于樸素貝葉斯的算法精度只有40%;基于KNN、樸素貝葉斯、支持向量機的算法召回率分別為28%、16%和16%;而基于GBDT 和XGBoost 的算法精度和召回率都有明顯提升,其中XGBoost 的精度達到91%,召回率也達到66%,相比傳統(tǒng)算法,已經(jīng)有了顯著的提升.
表5 精度和召回率對比Tab.5 Comparison of precision and recall
以上結(jié)果表明,本文所提出的基于XGBoost 的電能表燒表預(yù)測模型能夠提高分類的準確性,在不平衡樣本中也可以得到較為滿意的效果.
根據(jù)實驗?zāi)P徒Y(jié)果,嘗試將該模型應(yīng)用于實際生產(chǎn)數(shù)據(jù)進行驗證,圖6 為某電力公司用電信息采集系統(tǒng)的燒表預(yù)測模塊系統(tǒng)界面.
圖6 燒表預(yù)測模塊系統(tǒng)界面Fig.6 System interface of the module of burning fault prediction for smart meter
在試運行的時間段內(nèi),通過基層供電服務(wù)人員對系統(tǒng)預(yù)測情況和電能表的實際運行情況進行現(xiàn)場確認,測試該模型的綜合指標能否達到預(yù)期.
在驗證過程中,由于全省電能表數(shù)據(jù)基數(shù)大,電量、電壓、電流等電能表運行數(shù)據(jù)受到自然條件影響,每天的數(shù)據(jù)采集成功率無法達到100%,因此存在很多的缺失值,需要進行缺失值的補充.這與訓(xùn)練集數(shù)據(jù)有所區(qū)別,訓(xùn)練集數(shù)據(jù)都是歷史數(shù)據(jù),對于存在缺失數(shù)據(jù)的樣本,可以直接剔除,但驗證數(shù)據(jù)集的樣本是準實時數(shù)據(jù),不能直接剔除,如果直接剔除,會導(dǎo)致樣本越來越少.缺失值的填充有多種方法,常見的填充方法有均值填充和插值填充等,這些方法可以用于電壓數(shù)據(jù)的填充,因為電壓基本穩(wěn)定在220 V,但電流和電量數(shù)據(jù)通常情況下具有較大的波動性,均值和插值算法都會帶來一定程度的誤差.由于電流和電量的預(yù)測基本上類似于短期電力負荷的預(yù)測,可以參考文獻[13]使用LSTM 算法對缺失電量和電流數(shù)據(jù)進行預(yù)測和填充.
為了驗證LSTM 預(yù)測填充法和均值、線性插值法的差異,在訓(xùn)練集中任意選取1 000組電能表燒損數(shù)據(jù)和1 000 組未燒損數(shù)據(jù),在每組數(shù)據(jù)中,隨機剔除1 項電流數(shù)據(jù)或者電量數(shù)據(jù),之后,用不同的方法對剔除的數(shù)據(jù)進行填充.對比均值填充、線性插值填充和LSTM 算法預(yù)測填充的準確性,以平均絕對百分比誤差(MAPE)作為評價指標,結(jié)果如表6所示.
表6 不同填充方法對比Tab.6 Comparison of different data imputation methods
經(jīng)過缺失值的填充與處理,測試集數(shù)據(jù)預(yù)處理全部完成,用XGBoost 模型對試點驗證的某市公司800 余個臺區(qū),共10 萬余塊在運電能表進行了驗證,共驗證了263 塊燒表,精確率達到82.45%,召回率達到56.73%,基本上達到了預(yù)期水平.目前,該燒表預(yù)測模型已在系統(tǒng)部署并全省運行.
本文針對供電公司低壓臺區(qū)燒表率高的現(xiàn)狀,提出了一種基于XGBoost 算法的電能表燒表預(yù)測方法,通過對電能表生產(chǎn)廠家的基本信息、每日電量等運行信息和溫度等環(huán)境信息,進行單變量和多變量組合分析,實現(xiàn)了燒表現(xiàn)象的準確預(yù)測.模型應(yīng)用結(jié)果表明,所提算法有效實現(xiàn)了燒表現(xiàn)象的預(yù)測,并且具有廣泛推廣應(yīng)用的適用性.