冉 哲,李英娜*,劉愛蓮
(1.昆明理工大學 信息工程與自動化學院,云南 昆明 650500;2.云南省計算機技術應用重點實驗室,云南 昆明 650500)
隨著社會經濟的快速發展,近年來,供電企業數據平臺不斷發展,用電信息采集系統不斷完善,不斷累積大量的可供分析的信息。用電信息不僅是企業向用戶收取電費的主要依據,而且能提供大量有價值的信息,以供分析人員從中獲取信息進行分析,從而對電力系統以及用電企業進行更好的改良和指導。
對于供電企業的用電監察工作來說,利用數據挖掘技術對用電采集信息進行分析,從數據中挖掘用戶用電規律,結合機器學習[1]和深度學習等技術,構造異常用電行為識別模型,識別異常用電行為,以便稽查人員及時發現異常用電行為[2],更快地采取應對行動,對于企業降低管理運營成本、提升經濟效益、更好地指導電力消費行為以及優化電網的運行具有非常重大的意義。
目前在異常用電行為檢測與識別領域,針對電力數據的特性,對于沒有明確指明是否存在異常用電的數據,采用無監督學習的方法[3],莊池杰等人在缺乏異常用電數據樣本的情況下,分析樣本與總體之間的關系,找出離群對象,采用特征提取方法、主成分分析(PCA)、網格處理技術以及計算局部離群因子等模塊,只需檢測異常度排序靠前的少數用戶即可查出大部分異常用戶[4]。龔剛軍等人針對用電行為最佳聚類數目選擇問題,在特征優選策略基礎上提出了基于準確度和有效度的聚類優選策略,通過綜合考慮準確度評價指標和有效度評價指標確定最佳聚類數目[5],以達到更好的聚類效果[6]。對于明確標明異常用電[7]的數據,采用有監督學習或者半監督學習的方法,程超鵬等人提取用戶用電特征后,采用四種相異模型構建Stacking集成模型,提升用電異常識別的準確性,針對單一模型識別率不高的問題做出了改進和提升[8]。趙文清等人利用深度學習框架,基于長短期記憶特征提取網絡,構建異常用電識別模型[9]。徐瑤等人提出一種GNN-GSSVM的用戶異常用電識別模型,采用卷積神經網絡提取用戶特征,然后通過SVM檢測異常用電行為[10]。上述方法多沒有考慮到異常用電樣本中特征選取對模型識別準確度影響的問題,樣本差異對于最后構建的模型的識別效果有著很大的影響,大部分模型構建趨于復雜化,所提取的特征與實際用戶用電行為習慣不一定具有相關性。最后雖能達到較好的識別準確率,但在識別時間和識別難度上較為復雜。
鑒于此,本文提出一種基于遞歸特征消除(Recursive Feature Elimination,RFE)和CatBoost相結合的異常識別模型。首先根據用電采集系統采集的數據,從中提取電能特征,其次構建特征矩陣,采用遞歸特征消除方法選取有利于模型的最佳特征,利用CatBoost模型進行異常用電的識別[11],最后利用所得模型對云南某地真實用電數據集進行驗證,證明所提模型的有效性。
Boosting算法是集成算法的代表,它通過將一些基分類器組合起來得到分類性能較強、針對特定問題能夠有很好解決效果的模型。首先用初始權重訓練出一個基分類器,以基分類器的學習誤差率作為更新訓練樣本的權重的依據,調高學習誤差表現率高的訓練樣本點的權重,使這些誤差表現率高的點在之后的基分類器的學習中得到更多的重視。其次,基于調整權重后的訓練集來訓練下一個基分類器。重復進行上述步驟,直到基分類器數目達到指定的數目。最后將這些基分類器通過集合策略進行整合,得到最終的強分類器。Boosting算法的原理如圖1所示。

圖1 Boosting原理圖
在圖1中,n個訓練樣本在初始狀態下為每一個訓練樣本賦上權重ωn(i)(1≤i≤n),在訓練迭代的過程中,每次訓練得到的結果會根據上一次基學習器ym(1≤m≤M)的情況進行調整,重復訓練之后直到基學習器的數量達到M,最后每個基學習器結合之后得到Boosting的數學模型:

梯度提升算法(Gradient descend boosting)是一種基于Boosting算法的代表性算法之一,它通過對弱預測模型的集成產生預測模型,組合為一個強學習器。在梯度提升的每個階段m,(1≤m≤M),假設已經有一個不太完美的模型Fm,通過在模型Fm上增加一個新的估計量h得到一個更好的模型:

為了求得h的值,梯度提升算法基于以下作為觀察:一個完美的h可以預測當前此模型的殘差,滿足:

等效的式子有:

梯度提升通過擬合殘差y-Fm(x)得到h。與其他提升方法的改進方法一樣,Fm+1通過糾正Fm的誤差逐漸達到想要的效果。模型的殘差y-Fm(x)就是損失函數關于F(x)的負梯度。所以梯度提升思想在算法上的表現可以代入除了均方損失之外的不同的損失函數,以得到不同的梯度。在有監督學習問題中,一個輸出變量y和一個輸入變量x通過聯合概率分布P(x, y)描述。給定訓練集{(x1, y1),(x2, y2),…,(xn, yn)},旨在在所有具有給定形式的函數F(x)中找到一個F^(x)使得損失函數L[y,F(x)]的期望值最小:

梯度提升方法通過某一類H中基學習器hi(x)帶權重和的形式來表示對實值變量y做出估計的F^(x):

根據經驗風險最小化原理,此方法的目的是找到一個近似F^(x)可以最大程度減少訓練集上損失函數的平均值,從一個由常數函數組成的模型F0(x)開始,以貪心的方式逐步擴展:

式中:hm∈H是基學習器。
通常,在每個步驟中為任意的損失函數L選擇最佳函數h在計算上不可行,有以下優化方法。
對這個最小化問題,應用梯度下降步驟,如果考慮連續情況,即H是任意微分函數的集合',根據以下方程更新模型:

式中,對于i∈(1,…,m)是關于函數Fi求導,γm是步長。但是在離散情況下,即如果H是有限的,就選擇最接近L梯度的候選函數h,然后根據上述等式通過線搜索來計算系數γ。
梯度增強通常與固定大小的決策樹(一般是CART樹)一起作用于基學習器。對于這種特殊情況,Friedman提出了對梯度增強方法的改進,以提高每個基礎學習者的適應質量。
第m步的通用梯度提升將適合決策樹hm(x)擬合近似殘差,Jm是葉子節點數。則模型樹將空間分為Jm個不相交的區域R1m,…,Rjmm并預測每個區域的恒定值。利用指標函數I,對于輸入x,輸出hm(x)可以有以下和的形式:

式中:bjm是區域Rjm的預測值。
系數bjm乘上某一值γm,通過線性搜索最小化損失函數得到該值,模型更新為:

Friedman建議修改此算法,以便為每棵樹的區域選擇單獨的最優值γmj,而不是單個γm。他稱修改后的算法為“TreeBoost”。修改后,可以簡單地舍棄來自樹擬合過程的系數bjm,模型更新規則變為:

CatBoost由Categorical和Boosting組成,針對分類問題主要解決的重點是高效合理地處理類別型特征。此外,CatBoost著重解決預測偏差以及梯度偏差的問題,對減少過擬合的發生有很好的效果,準確性和泛化能力能得到較大提升[12]。傳統Boosting算法計算的是平均數,而CatBoost在這方面采用其他算法做了改進優化,這些改進能更好地防止模型過擬合。CatBoost算法的目標是在處理GBDT特征中的Categorical features[13]時能達到更好的效果。在決策樹算法中,標簽的平均值作為節點分裂的標準,此方法被稱為Greedy Target-based Statistics,用公式表達為:

在式(16)的基礎上添加先驗分布項進行改進,可以減少低頻數據以及噪聲在數據分布上面的 影響:

式中:p是添加的先驗項,a通常是大于0的權重系數。
本文數據是采集自云南某地用戶5個月用電在線監測數據集,在線監測數據每60 min采集一次,采集信息主要包括正向有功總電能、無功總電能,反向有功總電能、無功總電能,三相電壓,三相電流(電表、表前、一次),三相有功功率,三相功率因數以及總功率因數等電參量。
在實際用電和采集用電信息的過程中,由于計量系統故障、人為干擾等因素,導致采集到的數據有很多缺失值、異常值。需要對這些數據進行剔除和篩選。對于缺失值達到30%的用戶進行標記,經過篩查如果數據缺失值達到50%以上、沒有特別進行標明的數據,按照計量系統異常處理進行剔除。數據經過篩選剔除處理后,最終剩余正常數據2 593條,異常數據537條。
針對數據中所提取的特征做相關性分析,得到的矩陣如圖2所示。
由圖2可以直觀地看出所提各項特征之間存在的線性相關關系,可以得知部分特征的相關程度較高,表明這些特征包含了較多的重疊信息。通過遞歸特征消除可以進行特征篩選,消除原始變量之間的信息重疊。

圖2 特征集的相關矩陣
特征遞歸消除[14]是一種基于wrapper包裹的型模式下的后向搜索算法,常用在特征選擇[15]上面。特征遞歸消除方法使用一個機器學習模型來進行多輪訓練,每一次訓練結束后,就會消除若干權值系數所對應的特征,之后在新的特征集上面進行下一輪訓練。重復該過程直至產生最優的特征子集。基本步驟如下:
(1)使用所有特征變量訓練模型;
(2)計算每個特征變量的重要性并進行排序;
(3)對每一個變量子集s_{i},i=1,…,s,提取前 s_{i}個最重要的特征變量,基于新數據集訓練模型,重新計算每個特征變量的重要性并進行排序;
(4)計算比較每個子集獲得的模型的效果;(5)決定最優的特征變量子集;(6)選擇最優變量集合集合的模型為最終模型。經特征遞歸消除后篩選出來的特征為正向有功總電能、三相電流(電表)、三相電壓、有功功率以及總功率因數。特征指標如表1所示。這些特征從用電角度考慮也能全面反映用戶用電情況,將上述特征數據作為模型的輸入。

表1 用戶用電特征指標
將數據以7∶3的比例劃分訓練集和測試集。在本實驗中,采用CatBoost算法的優勢降低了對于超參數的依賴,無需進行過多的參數設置。為了驗證本文提出的RFE+CatBoost模型的分類性能,將模型識別結果與隨機森林(Random Forest)模型、邏輯回歸(Logistic Regression)模型、XGBoost模型、LightGBM模型、SVM模型進行對比,針對用電特征屬性,5種模型的調參結果如下:隨機森林模型設置max_depth為15,max_leaf_nodes設置為2;LightGBM模型reg_lamba設置為0.9,max_depth設置為3,max_bin設置為3;XGBoost模型設置max_depth為3,reg_lamba設置為0.9;邏輯回歸(Logic Regression)模型超參數設置max_iter為3;SVM模型則采用默認的超參數設置。
將所提取的用戶特征集作為模型的輸入,通過混淆矩陣(confusion matrix)、準確率(Accuracy)[16]、AUC(Area Under Curve)指數3個指標來評判不同檢測模型的好壞,ROC曲線下的面積占比就是AUC值。AUC值越大,說明模型檢測效果越好。AUC對比結果如圖3~圖8所示。

圖3 Random Forest模型ROC曲線圖

圖4 LightGBM模型ROC曲線圖

圖5 XGBoost模型ROC曲線圖

圖6 SVM模型ROC曲線圖

圖8 CatBoost模型ROC曲線圖
通過以上模型對比AUC值可知,識別效果最好的是CatBoost模型,AUC的值為96.3%,SVM算法、XGBoost算法、隨機森林(Random Forest)算法也有較好的識別效果,AUC的值分別為92.8%,94.0%,91.3%。各個模型對比可知,CatBoost模型的AUC值要高于其他模型。

圖7 Logistic Regression模型ROC曲線圖
6種模型在用電特征集上的實驗結果如表2 所示。

表2 各分類模型結果對比
由表2可知,相比于其他檢測模型,特征優選后的CatBoost模型對于異常用電行為的識別率高達93%,在準確率、召回率、F1值上面的效果都要優于其他模型。LightGBM在F1值上面則要比邏輯回歸模型和XGBoost模型要好。3種模型的召回率中,XGBoost最低,所以綜合F1值來看,這3種模型中XGBoost的識別效果要更好,在分類方面有較強的數據挖掘能力。SVM模型的識別效果僅次于本文所提模型,與XGBoost模型相比也能有很好的識別效果。在準確率上SVM模型效果更好。XGBoost模型在AUC值上要好于SVM模型,也有很好的識別效果。總體來說,從各項評價指標來看,RFE+CatBoost模型對于異常用電具有很好的識別效果。
針對包含復雜統計量的用戶側歷史用電數據,本文提出了一種經RFE特征優化后的CatBoost模型的異常用電識別,選取用戶5個月的用電監測數據用于異常用電行為的識別,將預測結果與其他傳統分類模型進行對比,通過實驗驗證所提方法的有效性,可得出如下結論。
將CatBoost算法應用于電力數據針對用戶側的異常檢測領域,能夠減少模型對于超參數的依賴,有效降低模型過擬合的幾率,增強了算法的魯棒性,針對于異常檢測進行合理的特征篩選再經模型識別能夠得到很好的準確率。
采用的樣本數據為異常用電的小樣本數據,所提模型能夠勝任小樣本異常用電數據,在樣本數據不夠多的情況下也能夠有很好的識別效果。所提方法適用于復雜統計量的用電數據,有助于對各種類型異常用電數據進行很好的識別,以供電力企業稽查人員或分析人員識別檢測異常用電。
在下一階段的工作中,將針對異常用電行為的檢測進行進一步的細分,通過劃定閾值或者箱型圖判定等方法,結合數據類型進一步精確識別異常用電,進而為電網電力監察工作提供更加可 靠的支持。