游文霞,申 坤,楊 楠,李清清,吳永華,李文武
(1. 三峽大學電氣與新能源學院,湖北省宜昌市443002;2. 國網湖北省電力有限公司孝感供電公司,湖北省孝感市432000)
電力系統在電能傳輸中存在能量損失,電力用戶的竊電等欺騙性用電行為是原因之一[1]。竊電會造成大量經濟損失,因此一直受到供電企業和研究者的關注。隨著智能電表的不斷普及,過去依靠破壞傳統電表等竊電手段已轉變為通過信息技術攻擊智能電表,通過數據篡改等手段實現竊電[2]。傳統人工篩查進行竊電檢測效率低下,已無法滿足竊電檢測需求。充分利用海量數據對竊電用戶進行篩查并開展竊電檢測成為國內外研究的熱點。
竊電檢測主要有3 類方法:基于系統狀態、基于博弈論和基于數據挖掘技術[3]。基于系統狀態的方法通過比較智能電表數據與其他儀器測量數據是否一致[4-5],從而識別是否發生竊電,但需要額外投資?;诓┺恼摰姆椒▽⒏`電檢測問題描述為竊電者與電力公司之間的博弈[6-7],但參與者的效用函數以及策略不易確定?;跀祿诰蚣夹g的方法則只需要通過挖掘數據中潛在的規律識別竊電[8-17],目前已開展了廣泛研究。
文獻[10]提出基于誤差反向傳播(back propagation,BP)神經網絡的反竊電方法,通過歷史數據和當前數據構建評價模型,采用遺傳算法加快收斂速度,并在國網某省公司提供的數據集上得到了驗證。文獻[11]結合決策樹(decision tree,DT)與支持向量機(support vector machine,SVM),將DT 的計算結果輸入到SVM 中,從而判斷用戶屬于竊電用戶還是正常用戶;該算法在愛爾蘭智能電表數據集上進行測試,準確率達到了92.5%。此外,以樹集成為代表的集成學習(ensemble learning)算法在竊電檢測中也取得了良好的應用效果。文獻[16]對比極限梯度提升樹(eXtreme gradient boosting,XGBoost)和 類 別 提 升 樹(categorical boosting,CatBoost)、輕量梯度提升機(light gradient boosting machine,LightGBM),利用梯度提升竊電檢測器(gradient boosting theft detector,GBTD)判斷是否發生竊電。文獻[17]在隨機權網絡的基礎上構建隨機森林(random forest,RF)模型來進行竊電檢測。
但是上述研究只是采用單一學習器或單一學習器的集合(即同質集成學習)來進行電力用戶行為模式辨識,由于不同學習器的預測結果可能存在差異,因此單一學習器可能無法通過取長補短的方式訓練出更優異的模型。文獻[18]利用多模型融合Stacking 集成學習的方法對瑞士部分用電負荷情況進行預測,其結果表明,基于多學習器融合方法的預測效果與各個體學習器的學習能力以及各學習器間的關聯程度有關,且基于多學習器融合的方法相較于傳統單學習器有著更高的預測精度。基于此,本文提出基于Bagging 異質集成學習方式對竊電行為進行檢測。其中,學習器的選擇和各學習器間的集成策略是異質集成的2 個重要研究點。首先,說明Bagging 集成學習方式的訓練機理,以及多種學習器結合的多樣性度量;然后,在Bagging 集成框架下考慮多種學習器的性能指標以及各學習器之間的多樣性,建立基于Bagging 異質集成學習方式的竊電檢測模型;最后,在愛爾蘭智能電表數據集的居民用電數據上驗證算法的有效性。
集成學習通過結合多個學習器完成學習任務。集成學習的總體結構為:先通過訓練確定多個個體學習器,再用某種策略將這些個體學習器結合。集成學習通過集成多個學習器,??色@得比單一學習器更優越的性能[19]。
根據個體學習器的生成方式,集成學習方法大致分為2 類:一是以Boosting 為代表的、各個體學習器間存在強依賴關系,且必須串行生成的集成學習算法;二是以Bagging 為代表的、各個體學習器間不存在強依賴關系,可以并行生成的集成學習算法。
Bagging 算法是并行集成學習方法最著名的代表。為了使集成的個體學習器盡可能獨立,傳統的Bagging 算法通過自助采樣法(bootstrap sampling)隨機產生多個訓練子集,然后基于每個訓練子集訓練出多個個體學習器,最后將這些個體學習器進行結合,集成為整體。
自助采樣法在數據集較小時,通過重采樣可以有效劃分出訓練集和測試集。而竊電檢測需要對大量用電客戶的長期用電記錄進行識別,所用樣本集較大。使用自助采樣法不僅會使訓練集的數據分布和原始數據集不同,還會大大降低計算效率。故與傳統Bagging 不同,本文采用相同的訓練集分別訓練出多個個體學習器,再將其輸出進行結合。對于竊電檢測這種分類任務,Bagging 在對預測輸出進行結合時,通常采用投票法。集成分類器構建完畢后,用測試集中的樣本對其性能進行測試。將用電客戶的日常用電記錄輸入到集成分類器中,通過比較預測與實際竊電情況是否一致,對集成分類器進行評價。本文所用Bagging 異質集成學習的結構如圖1所示。
用戶竊電的目的是通過減少支付電費從而獲得非法收益[2]。竊電用戶可通過修改用電數據,根據電量和電價的差異來實現少交電費的目的,即達到式(1)的效果。

圖1 Bagging 異質集成學習結構Fig.1 Structure of Bagging heterogeneous ensemble learning

對于日用電數據而言,可通過削減、置零和移峰這3 類方式篡改數據達到竊電的目的。具體方式如下[3,8,16]。
1)將智能電表的用電數據按一定比例削減,可有以下2 種方法:

式中:h1(?)表示將t時段的用電記錄乘以0.2~0.8 之間相同的隨機數,可以模擬按相同比例削減用電量的 情 況;h2(?) 表 示 隨 機 選 擇 閾 值γ(0 <γ<max(xt)),如果實際用電量大于γ,則將用電量替換為γ,否則保持不變,可以模擬按不同比例削減用電量的情況。
2)將某些時段的用電數據直接篡改為零,可有以下2 種方法:

式中:h3(?)定義當用電記錄位于時間段(t1,t2)內,其值記為0,且t2≥t1+4,可以模擬將連續用電量置零的情況;h4(?)表示將用電記錄減去閾值γ,并取其差值與0 之間的最大值,可以模擬將不連續用電量置零的情況。
3)在不改變用電量的同時將用電曲線移峰,可有以下2 種方法:

式中:h5(?)表示將用電記錄倒序排列,可以模擬將用電曲線移峰;h6(?)表示取一天用電記錄的平均值,可以模擬與用電曲線移峰類似的情況,通過電價差別實現竊電;mean(?) 為求平均值函數;x={x1,x2,…,xT}。
供電公司搜集的用電數據,由于包含了為實現竊電而篡改的數據,使得供電公司的電費收益和應得收益不一致,因此需要分析海量用電數據,開展竊電檢測,找出竊電用戶。從理論上而言,竊電檢測是機器學習中的一個分類問題,判別用戶是正常用電還是竊電。
用戶的用電行為可能受季節、家庭電器、人口變化以及節假日等因素的影響,使得用戶用電曲線有不同的分布,呈現出不同用電行為。竊電檢測的目標即根據用戶用電行為數據,找出與正常用電行為不符的模式。開展竊電檢測,首先需要確定判別用戶行為異常的特征指標項。
用戶一天的用電記錄(x1,x2,…,xT)(T一般為24 的倍數)直接反映用戶用電行為,是用戶用電的一般特征。但僅僅根據用電記錄的一般特征指標項,在進行竊電檢測時容易導致較高的誤檢率和較低的命中率。因此,還需考慮其他特征指標,以提高檢測性能[20]。竊電檢測常用的愛爾蘭智能電表數據集上的試驗表明,通過增加最大值、最小值、平均值和標準差幾個特征,可改善其所提算法的性能[14]。因此,本文竊電檢測的特征指標包括用電記錄的一般特征指標項,以及最大值、最小值、平均值和標準差的綜合特征指標項。
基于Bagging 異質集成學習的竊電檢測流程具體步驟如下。
步驟1:用生成的訓練集對常用的竊電檢測學習器進行訓練對比。單一學習器包括DT,BP,SVM 和k 最近鄰(k-nearest neighbor,KNN),其中DT,BP 和SVM 分別為機器學習中符號主義學習、連接主義學習和統計學習的代表。而同質集成學習器包括以樹集成為代表的梯度提升決策樹(gradient boosting decision tree,GBDT)、RF 和自適應提升器(adaptive boosting,AdaBoost)。綜合各個體學習器在訓練集上的表現與各個體學習器間的多樣性,確定使模型獲得最佳預測效果的學習器組合。
步驟2:對比步驟1 得到的最佳學習器組合在不同結合策略下的表現,確定模型中各個體學習間的結合策略。
步驟3:根據步驟1 和2 確定的基于Bagging 異質集成學習的結合策略及個體學習器類型,對模型進行訓練。
步驟4:將測試集輸入到步驟3 訓練好的Bagging 分類模型中,驗證基于Bagging 異質集成學習分類器并對分類器進行評估。
多樣性度量(diversity measure)用于量度集成學習中個體學習器的多樣化程度。在選擇多樣性度量方法時,需要根據具體問題的側重、每種度量方法實現的難易程度進行選擇[21]。針對本文的選擇性集成,需要計算每對分類器間的多樣性,采用雙次失?。╠ouble failure,DF)度量和Q 統計指標進行多樣性度量[22]。其中DF 值和Q 統計量的取值分別為[0,1]和[-1,1]。二者值越小,代表每對分類器之間的多樣性程度越大。系統整體的DF 值和Q 統計值可以通過計算每對分類器之間DF 值和Q 統計值的平均值得到。
為了衡量學習器的好壞,在分類問題中常用表1 所示的混淆矩陣。

表1 混淆矩陣Table 1 Confusion matrix
混淆矩陣將所有用戶按照真實類別與學習器預測類別的組合劃分為TP,FP,TN,FN 這4 類,相應的數量分別為MTP,MFP,MTN,MFP。本文采用準確率(accuracy,ACC)iC、命 中 率(true positive rate,TPR)iT、誤檢率(false positive rate,FPR)iF、受試者工作特征曲線下面積(area under receiver operating characteristic curve,AUC)iU這4 個分類檢測評價指標,定義分別如下:

式中:iC表示總樣本中有多少被正確預測。但在正、負樣本數量嚴重失衡的情況下,僅使用準確率對模型進行評價缺乏可信度[23]。因此,還需綜合其他指標來評價。
iT和iF的值表示為:

式中:iT和iF的取值范圍均為[0,1],iT越高,iF越低,則檢測效果越好。
采用受試者工作特征(receiver operating characteristic,ROC)曲線描述iT和iF這2 個指標變化的相對關系[19]。進行學習器比較時,較為合理的是比較iU。iU為1 對應理想分類器。
本章進行算例對比分析。試驗使用Core-TM i5-3470@3.20 GHz 處 理 器 在 Anaconda( 基 于Python 3.6)環境下進行。
本試驗選用愛爾蘭智能電表數據集,該數據集含有愛爾蘭6 000 多戶家庭和商業用戶連續535 天的用電記錄(每30 min 采集一次數據)[24]。選用其中1 000 戶居民用戶進行實驗。由于數據集中用戶均同意將其用電記錄用于研究目的,因此假設所有用戶均屬于正常用電用戶。隨機選擇10%的用電記錄修改后作為竊電樣本,竊電樣本生成方法按照2.1 節所述式(2)—式(7)進行。

3.2.1 選擇性集成
試驗研究表明,在已構建的個體學習器中,只挑選一些性能較好的學習器,會得到更好的預測效果[25]。在構建集成學習器時,有效地產生預測能力強、差異大的學習器是關鍵,即要獲得良好的集成,個體學習器應“好而不同”,即個體學習器既要有一定的準確性,各學習器間又要具有一定的差異。以表2 所示3 個個體學習器集成為例,其中“√”表示分類正確,“×”表示分類錯誤,表中的每個基學習器都只有66.7%的精度,但集成起來卻達到了100%。

表2 “好而不同”的學習器Table 2 Good and different learners
為了優化異質集成學習模型的性能,有必要分析每個個體學習器的單獨預測能力,并全面比較各個體學習器的組合效果。選擇性集成的目的是在減少集成系統中分類器數量的同時保持甚至提高系統的預測性能,從而減小存儲和計算開銷,提高預測速度和精度。
立足于個體學習器的預測能力,設計試驗將各個體學習器在6 個只含單一竊電樣本數據集上的預測結果進行比較分析,并依據經驗選取部分模型參數。得到各個體學習器iC和iU的平均值,如表3所示。

表3 各個體學習器的超參數以及在6 個只含單一竊電樣本數據集上的表現Table 3 Hyper-parameters and performance of individual learners on six data sets containing single electricity theft sample
由表4 可知,7 種學習器的iC和iU值皆超過了50%,符合“好而不同”中“好”學習器的特性。但SVM 的iF值達到了66.05%,即有超過65%的概率將竊電檢測為正常用電,從而造成大量經濟損失。因此,本文Bagging 集成模型中個體學習器的選擇初步排除SVM。
另一方面,為了獲得最佳預測效果,還需要選擇差異度較大的個體學習器。因為不同的學習器是從不同的數據空間角度觀測數據。因此,選擇差異度較大的算法能夠最大程度體現不同算法的優勢。表4 和表5 是除SVM 外6 種算法在6 個只含單一竊電樣本數據集上的DF 值和Q 統計值。如果選用所有個體學習器作為模型的基學習器,此時系統整體的DF 值和Q 統計值分別為0.047 和0.844。

表4 各個體學習器在6 個只含單一竊電樣本數據集上的DF 值Table 4 DF values of individual learners on six data sets containing single electricity theft sample

表5 各個體學習器在6 個只含單一竊電樣本數據集上的Q 統計值Table 5 Q statistical values of individual learners on six data sets containing single electricity theft sample
由表4 和表5 可知,在各單一學習器中,DT 與其他個體學習器相比,其平均DF 值和Q 統計值均為最高,即多樣性最低,且在檢測能力上,以DT 為基學習器的RF,GBDT 和AdaBoost 等同質集成學習器都遠高于DT。同時,BP 和KNN 的訓練機理差距較大,其DF 值和Q 統計值也相對較低。故單一學習器中選擇BP 和KNN 作為Bagging 異質集成中的個體學習器。在同質集成學習器中,RF,AdaBoost,GBDT 的DF 值和Q 統計值都較高,這是因為該3 類算法都屬于樹的集成算法,其數據觀測方式存在較強相似性。其中RF 在學習方式上和AdaBoost 和GBDT 又稍有不同,這是因為RF 采用Bagging 方式,為并行集成,而AdaBoost 和GBDT采用Boosting 方式,為串行集成。AdaBoost 和GBDT 在檢測能力相當的同時,GBDT 的DF 值和Q 統計值更低,故同質集成學習器中選擇RF 和GBDT 作為Bagging 異質集成中的個體學習器。模型最終的個體學習器包括BP,KNN,RF 和GBDT。此時模型中各個體學習器以及系統整體的DF 值和Q 統計值如表6 所示。由表6 可知,此時系統的DF值和Q 統計值分別為0.044 和0.78,較之前均出現了一定程度下降,即系統的多樣性較之前增加。

表6 模型中各個體學習器以及系統整體的DF 值 和Q 統 計 值Table 6 DF and Q statistical values of individual learners and system in the model
基于Bagging 異質集成學習的竊電檢測在對各個體學習器進行選擇性集成前后的性能如圖2 所示,此時個體學習器的結合策略為默認的多數投票法。

圖2 選擇集成前后模型的性能Fig.2 Performance of the model before and after selective ensemble
由圖2 可知,在選擇性集成后,除iF指標明顯降低外,其他指標略有提高。因此,需要對個體學習器的結合策略進一步改進。
3.2.2 集成策略
Bagging 算法在對各個體學習器的輸出進行結合時,通常使用投票法。在投票法的選擇上,應用最廣泛的是多數投票法(majority voting)和加權投票法(weighted voting)。但是多數投票法無法有效使用不同分類器提供的互補信息[26]。因此,加權投票法被廣泛應用。文獻[27]利用相對準確度作為權重對各分類器進行集成:

式中:ai為第i個個體學習器的相對準確度;ew和eb分別為所有個體學習器中的最大和最小錯誤率(錯誤率=1-準確率);ei為第i個個體學習器的錯誤率。
則每個分類器所占比重wi為:

式中:L為個體學習器總數。
但權重可來源于除準確度外的其他角度,故有效性不強。因此,在文獻[27]基礎上,本文使用準確度和AUC 值的綜合作為權重對分類器進行集成:

式中:Aaoc,i表示第i個個體學習器的ROC 曲線未覆蓋的面積(Aaoc,i=1-iU);Aaoc,w和Aaoc,b分別為所有個體學習器中ROC 曲線未覆蓋面積的最大值和最小值。
分別將本文所用投票策略和文獻[27]以準確度為基準的加權投票法以及傳統的多數投票法命名為Vote 和Vote1,Vote2。為了確定哪種投票策略表現最好,設計試驗將3 種投票策略在7 個數據集上的預測結果進行比較分析,結果如圖3 所示,各指標值均為在7 個數據集上取得的平均值。

圖3 3 種投票策略在7 個數據集上的表現Fig.3 Performance of three voting strategies on seven data sets
由圖3 可知,本文所用投票策略的4 個指標均優于另外2 種投票策略。
對比本文所提模型和上文提到的BP[10],DT[11],SVM[11],KNN[12],GBDT[16],RF[17]和AdaBoost 這7 種算法的測試結果,其中BP,DT,SVM 和KNN 屬 于 單 一 學 習 器,RF,GBDT 和AdaBoost 屬于單一學習器的集成。
3.3.1 與單一學習器的對比分析
將本文所提模型與上述BP,DT,SVM 和KNN這4 種單一算法在7 個數據集的測試集上的結果進行對比,結果如表7 所示。為方便表示,將本文的Bagging 異質集成學習用其結合策略“Vote”代替。

表7 本文所提模型與各單一學習器的對比Table 7 Comparison of the proposed model and single learners
由于部分樣本之間不存在顯著相關特性,因而SVM 的分類正確率對于不同數據集波動較大,且其iC和iU值均明顯低于其他對比算法。此外,雖然BP在每個數據集上的準確率都超過了0.8,但其AUC值波動較大。除SVM 和BP 外,其他算法在7 個數據集上的iC和iU值均大于0.8。相比于其他算法,本文所用基于Bagging 異質集成學習算法在6 個數據集上iU值均為最高的同時,iC值也達到了最大。對于數據集ET1,由于其生成方式為實際用電數據乘以0.2~0.8 之間的一個隨機數,即二者在數值之間有一定的相似性,使算法不易區分,造成所有算法在ET1 數據集上的表現較其他數據集差。
相比只含單一竊電樣本數據集,包含混合竊電樣本數據集上的檢測結果在實際應用中更具有意義。與只含單一竊電樣本數據集相比,BP 和SVM算法在MIX 上的iC和iU值幾乎不變。DT 和KNN與基于Bagging 異質集成學習算法的iC和iU值均出現了一定程度下降,但仍遠高于BP 和SVM 算法。3.3.2 與集成學習算法的對比分析
將本文所提模型與上述RF,AdaBoost 和GBDT 這3 種集成學習算法在7 個數據集的測試集上的結果進行對比,結果如表8 所示。

表8 本文所提模型與其他集成學習器的對比Table 8 Comparison of the proposed model and other ensemble learners
由于RF,AdaBoost 以及GBDT 均采用樹集成的同質集成學習方式,故相較于DT 和KNN 等單一學習算法,有更出色的學習能力。與單一學習算法相比,3 種同質集成算法有更高的iC和iU值,但同時仍稍遜于基于Bagging 異質集成學習方法。ROC 曲線可直觀反映各算法在數據集上的性能,8 種算法在7 個數據集上的ROC 曲線見附錄A 圖A1。
為了說明竊電樣本所占比例的不同對基于Bagging 異質集成學習的竊電檢測模型的影響,在不同竊電樣本占比的取值下分別針對8 種算法的iC和iU進行了試驗,結果分別如圖4(a)和(b)所示。

圖4 8 種算法在不同竊電樣本占比下的iC和iU Fig.4 iC and iU of eight algorithms with different proportions of electricity theft samples
由圖4(a)可知,隨著竊電樣本占比的減少,除SVM 外,其他7 種算法的iC值呈現明顯的上升趨勢。其中,AdaBoost,DT,KNN,RF 和GBDT 與本文所用算法的iC值較為接近,但本文所用算法的iC值始終最大。
圖4(b)顯示了8 種算法的iU值。整體上,Vote,GBDT,RF,AdaBoost,DT 和KNN 這6 種算法的iU值明顯高于BP 和SVM 算法,而隨著竊電樣本占比的減小,這6 種算法的iU值也幾乎始終在0.8~1.0 之間波動,且Bagging 異質集成學習始終最大。其中,當竊電樣本占比從5%降到1%時,Vote,GBDT,RF,AdaBoost,DT 和KNN 等6 種算法的iU值均出現了一定程度下降,這是由于此時正負樣本的數量嚴重失衡,使得算法傾向于將所有樣本判定為正樣本,導致iU值下降。
本文提出了基于Bagging 異質集成學習的竊電檢測方法,充分利用不同學習器從不同角度對數據空間與結構進行觀測,使得不同學習器能夠取長補短。利用愛爾蘭智能電表數據集進行對比,驗證了本文方法的精確性與有效性。后續將進一步針對實際用電數據,進一步分析和選擇正常用電和竊電的特征指標項,對竊電檢測開展集成學習應用的深入研究。
本文工作得到國網湖北省電力有限公司2019 年科技項目(5215K018006B)的資助,特此感謝!
附錄見本刊網絡版(http://www.aeps-info.com/aeps/ch/index.aspx),掃英文摘要后二維碼可以閱讀網絡全文。