李沛智, 劉立群, 薄軼帥
(太原科技大學電子信息工程學院, 太原 030024)
隨著經濟的快速發展以及用電量的激增,對智能電網安全穩定運行的需求日益增強[1-2]。其中,嚴重的用戶異常用電行為,給電網行業帶來了巨大的經濟損失,阻礙了智能電網的發展[3]。因此,如何從海量的用戶用電數據中快速、準確地進行異常用電檢測是目前研究的熱點問題之一。
當前,中外對異常用電檢測方法的研究成果很多。文獻[4]針對用戶用電數據類別不平衡的問題以及傳統集成策略檢測方法的局限性,提出了一種基于熵權法集成異質分類器的竊電檢測模型,實驗結果表明具有一定的有效性。文獻[5]針對傳統竊電檢測研究只采用單一的基分類器或單一的集成分類器,提出了Stacking集成學習策略并構造平均準確率(mean average precision,MAP)作為評價指標,提升了模型的泛化能力與查準率。文獻[6]提出了一種將模糊C均值算法和改進的粒子群優化算法相結合的電力大數據異常檢測方法,實驗結果表明,改進后的算法能夠準確地實現數據異常值檢測,改進后誤檢率降低了0.31%。文獻[7]針對復雜用電臺區中計算模型參數增多,個別參數估計失準導致最終辨識結果不準確的問題,提出了最優變換關聯因子和優化平移分裂法,有效解決了大臺區高維參數的誤差擾動致使竊電用戶辨識準確度下降的難題,具有更強的抗擾動性。文獻[8-9]利用Bagging集成學習策略,實驗結果表明該方法的竊電檢測研究方面有更高的精確性和檢出率。文獻[10]針對如何解決特征提取和異常檢測間的解耦問題,提出基于深度自編碼器高斯混合模型檢測方法,相比于現有方法,其檢出率、誤檢率、F1測度及曲線下面積(area under curve,AUC)等評價指標均有顯著提高。
雖然上述研究方法可以檢測到異常數據,但在實際應用中面對海量高維電力數據時,未考慮到維數詛咒以及噪聲效應等問題,造成檢測效率低且無法保證檢測精度,需要進一步提高適應性。孤立森林(isolation forest, IF)算法在異常值檢測中效果突出[11],因此,現提出一種新的基于無監督密度的子空間選擇孤立森林算法用于異常檢測,然后在愛爾蘭智能電表數據集上對本文提出方法的準確性和有效性進行實驗驗證。
孤立森林可視為隨機森林的一種變體,基于二進制搜索樹構建[12],是一種用于多元數據異常檢測的無監督、非參數檢測方法。其基本思想是使用一個隨機超平面對數據空間不斷進行切割,每切割一次就會產生兩個子空間,同時子空間不斷循環切割,直到每個子空間中只包含一個數據點為止。而異常數據點往往存在于較為稀疏的子空間中,因此只需要用較少的切割次數就能找到。
首先,從整個數據集中抽取隨機樣本,并隨機選擇一個樹節點。然后,隨機選取屬性分割值將樣本分成兩個子集。屬性分割值表示為最小屬性值和最大屬性值之間的隨機值。屬性值小于分割點的元素將移動到節點的左側,其他元素將移動到右側。重復集合的分割,直到集合只有單個元素或達到樹高極限l。樹高限制的描述公式為

(1)
式(1)中:n為構建單個隔離樹的樣本數。
對于每棵隔離樹,都可以找到此樹中被檢查元素的高度,并檢查元素屬性值是低于還是高于節點分割值。如果達到了閾值,則該算法將傳遞到左節點。否則,將判定為正確節點。繼續對樹進行探索,直到算法到達一個沒有后代的葉節點。記錄得到的高度,并計算最終分數,公式[13-15]為
(2)
(3)
H(t)=lnt+0.577 215 664 9
(4)
式中:x為樣本中的節點;s(x,n)為節點x的異常分數,評價分數為0~1范圍內,數值越高,異常值可能性越大;H(t)為諧波常數;h(x)為元素x在隔離樹中獲得的高度;E[h(x)]為整個森林的平均高度值;c(n)為E[h(x)]的歸一化。
數據歸一化(或特征縮放)是異常檢測中必不可少的預處理步驟,因為在計算數據點之間的距離或識別相鄰數據時,數值較大的特征會支配其他特征。最大-最小歸一化方法,將每個特征歸一到區間[0,1],在異常檢測中經常使用。最大-最小歸一化對特征值f進行如下轉換[16],即
(5)

互信息(mutual information, MI)是一種依賴性度量,廣泛用于模式識別、特征選擇和特征排序問題[17]。它可以用來衡量每個特征的相關性和特征之間的冗余度。MI有兩個特性使其區別于其他依賴性度量:第一,可以衡量變量之間的任何類型的關系。第二,在空間轉換下是不變的。設A和B是一對具有離散值的隨機變量,A和B之間的相互信息被定義為
(6)
(7)
(8)
式中:pA,B(a,b)為A和B的聯合概率函數;pA(a)和pB(b)分別為A和B的邊際概率函數。

(9)
式(9)中:widthj為第j個特征被劃為每個線段的寬度。
每一個特征都使用等寬的分段劃分,使得不同區段的密度值具有可比性。通過將所有M個特征劃分為p個區段,生成pM個M維立方體。


為了計算立方體c中數據點的數量,需要合并具有相同idc的數據點,并計算密度,公式為
dc=具有相同idc的數據點的數量
(10)
通過合并具有相同idc的數據點獲得新的數據集DG,即
DG={(idc1,dc1),(idc2,dc2),…,(idcNE,dcNE)
(11)
式(11)中:idci≠idcj(?idci,idcj);NE=非空方塊的數量;DG中的每個數據點都被表示為(idci,idcj),即idci是一個非空的立方體(包含至少一個數據點),而dci是該立方體的密度。據此,將全維空間F中的數據集D轉換為空間G中的一個新的數據集DG。
給定數據集DG和特征集G={g1,g2,…,gM},基于互信息的子空間選擇算法的目的是選擇一個特征子集GS={gs1,gs2,…,gsm}?G,然后根據空間F與空間G中的特征索引之間的一一對應關系來獲得相關子空間。基于最小冗余-最大相關-密度準則(min-redundancy-maximum-relevance-to-density, mRMRD)的特征選擇的核心思想是最大化特征與分類變量之間的相關性,最小化特征與特征之間的冗余性[18]。
2.1.1 MRD算法
最大相關性-密度(maximum-relevance-density, MRD)方法用于選擇對目標變量密度的依賴性最大的特征。利用互信息準則I(gj,dc)測量特征gj與目標變量dc之間的依賴性,其之間的MRD準則可以表示為
(12)
式(12)中:|GS|為子集GS中被選特征的數量;dc_val為dc中的一個變量的值;gj_val為gj中的一個變量的值。
2.1.2 mRMRD準則
由于MRD準則選擇的是可能在空間G中具有高冗余度的特征,這些特征在原始空間F中分布的依賴性很大。因此,通過mRMRD準則選擇一個具有與密度目標變量高相關性,且最小冗余性的特征子集。mRMRD準則結合了最小冗余度mR與MRD準則,mR公式為
(13)
mRMRD準則為式(12)和式(13)的組合,定義為
maxΦ(D,R),Φ=D-R=
(14)
mRMRD準則除了最大化相關性外,還考慮了特征之間的關系,因此,與已經選擇的特性具有相似分布性的特征不太可能被選擇。mRMRD準則的目的不是選擇獨立的特征,而是在每一步中,試圖選擇一個最小化冗余和最大化相關性的特征。由于候選子空間的數量(2M-1)隨著維數M的增加而呈指數增長。因此,mRMRD算法使用一階增量搜索方法來尋找由Φ定義的最優的特征。假設GS是在前t-1步中被選中的一組特征,則第t個特征是根據公式(15)從G-GS集合中選擇。
(15)
在該方法中,相關子空間中的第一個特征是利用相互信息來選擇的,從而使其對目標變量dc具有最高的依賴性。
在構建孤立森林的過程中,算法會隨機選擇特征,然后,隨機選擇該特征的分割值遞歸地生成分區,直到將所有數據點與其余樣本分開。這種隨機性會導致在生成隔離樹時產生大量的無關屬性,且隨著維數的增加,數據變得稀疏,高維空間產生的噪聲效應會掩蓋真實的異常值[19],并對算法的可靠性產生負面影響。所以,當面對海量高維的數據時,由于IF算法的隨機性,可能將漏選異常程度較高的屬性,從而造成IF算法在異常檢測中出現精度較低等問題。
為此,本文提出了相關子空間選擇方法來有效地檢測異常值,解決了高維數據的準確性低、維度詛咒問題以及降低了子空間各屬性選擇的隨機性。該方法由兩個主要步驟組成,基于密度的數據表示以及應用互信息理論與統計準則進行無監督子空間選擇。通過引入一種基于密度的表示方法,提出了基于無監督互信息的mRMRD準則,用于測量無監督異常檢測中特征的優度。基于mRMRD的增量搜索算法選擇一個緊湊的子空間,其特征之間具有最小的冗余,并且與密度有最高的相關性。然后,在所選子空間中生成隔離樹并集成孤立森林進行異常值檢測。相比于傳統IF而言,這種方法降低了構建隔離樹時的隨機性,從而使得隔離樹的分支更加具有差異性。該方法的主要流程如圖1所示,算法具體步驟如下。

圖1 異常檢測方法流程圖Fig.1 Flow chart of the abnormal detection method
步驟1將原數據集中的數據歸一化生成新數據集D*,并設定每個特征的段數p。

(16)
(17)
步驟3合并具有相同idc的數據點生成新的數據集DG。
dc=具有相同idc的數據點的數量
(18)
DG={(idc1,dc1),(idc2,dc2),…,(idcNE,dcNE)
(19)
步驟4設置要選擇相關子空間FS的大小m,用密度變量計算互信息,對每個特征gi∈G計算I(gi,dc)。
步驟5選擇第一個特征。
(20)
步驟6重復步驟5直到|GS|=m,生成相關特征子集FS。
步驟7設置孤立森林參數:子采樣數φ、隔離樹數量t和樹高限制l。利用生成的相關特征子集FS計算孤立森林異常得分。
由于不同的評價指標通常會產生不同的結果,因此應選擇有效的指標進行檢測,本文研究基于表1所示的混淆矩陣進行評價。在混淆矩陣中,真陽類(true positive, TP)代表樣本為異常數據,且檢測結果也為異常數據,假陰類(false negative, FN)代表異常數據被漏檢為正常數據,假陽類(false positive, FP)代表正常數據被誤檢為異常數據,真陰類(true negative, TN)代表樣本為正常數據,且檢測結果也為正常數據[20]。

表1 混淆矩陣Table 1 Confusion matrix
利用混淆矩陣可獲得多個評價指標,本文研究選擇準確率(accuracy, ACC)、F1測度和AUC進行評價。
(1)準確率。準確率是最常用的分類性能指標,可以用來表示模型的精度,一般情況下,模型的精度越高,說明模型的效果越好,公式[21]為
(21)
(2)F1。F1定義為正確率P和召回率R的調和平均數,F1為從0到1,1為最優,0為最差。計算公式[22]為
(22)
式(22)中:正確率P=TP/(TP+FP),表示模型正確識別為正的正例樣本占全部識別為正的比例;召回率R=TP/(TP+FN),表示模型正確識別為正的樣本占全部實際為正的樣本的比值。
(3)AUC。AUC為ROC曲線下的面積[23],ROC曲線以FPR為橫軸,TPR為縱軸,反映FPR和TPR兩個指標增長速率的相對關系,由于ROC曲線一般都處于y=x直線的上方,所以AUC的取值范圍一般為0.5~1,AUC的值越高,該分類器的效果越好。
(23)
式(23)中:ri為在增序序列中第i個正類實例的位置;n0和n1分別為正類和負類的個數。
仿真實驗使用Win10系統下的jupyter notebook(Python 3.9)、計算機處理器(i7-10875H)、內存(16 G)。實驗數據來自愛爾蘭CER智能計量項目,該項目有5 000多個愛爾蘭家庭和企業參加。選取其中3 000家居民用戶42 d用電記錄作為實驗對象(每0.5 h采集一次數據)[24]。對數據集進行清洗,篩選并排除空數據,隨機選取10%作為異常用電樣本,并結合文獻[8]中異常用電樣本生成方式進行構造,構造后的異常用電數據變化效果圖如圖2所示。

圖2 異常用電樣本變化效果圖Fig.2 Effect diagram of abnormal electricity sample changes
對數據集預處理后,討論算法在參數t=100、φ=256、p=12條件下產生的不同結果并分析不同參數對算法的影響。
在孤立森林中,小數據集往往能取得更好的效果,樣本數較多會降低孤立森林孤立異常點的能力,因為正常樣本會干擾隔離的過程,降低隔離異常點的能力。由于子采樣數φ可以控制每棵孤立樹的數據量,因此,需要對子采樣數φ進行討論。首先,設定t=100,p=12。子采樣值分別設置為φ=16,32,…,4 096,為了降低實驗偏差帶來的影響,實驗運行10次取平均值為最終結果,得到AUC曲線如圖3所示。由圖3可知,AUC在子采樣值較小時逐步上升,在φ=256時到達峰值,隨后趨于穩定,因此根據測實結果選用φ=256作為最優參數。

圖3 子采樣數量對AUC的影響Fig.3 Effect of subsampling number on AUC
其次,由于集成學習是將若干個弱學習器組合后產生一個新的學習器,但基分類器的數量過多會導致整體效率下降,所以為了驗證隔離樹數量t對實驗結果的影響,設定φ=256,p=12,將隔離樹數量分別設置為t=10,15,…,500,同時運行10次取平均值,所得結果如圖4所示。

圖4 隔離數數量對AUC的影響Fig.4 Effect of number of isolations on AUC
由圖4可知,AUC隨著t的增加呈現上升趨勢,在t=100附近達到峰值,隨后呈下降趨勢,由此選擇t=100為最佳參數。
最后,由于特征段數p會影響每個立方體的大小以及對立方體的密度測量,因此,通過在數據集上進行實驗,來討論p參數對所提方法精度的影響,實驗運行10次取平均值為最后結果,設定t=100,φ=256,p的范圍為2~20,所得結果如圖5所示。

圖5 特征段數對AUC的影響Fig.5 Effect of number of feature segments on AUC
由圖5可知,p從2增加到12,AUC值有所提高。然而,當p超過12時,精度顯著下降。因為當每個特征的段數增加時,使得網格立方體的密度增加,相當于用一個更局部的視角來測量。當p的值很小時,對立方體的密度測量更全面,然后隨著段數的增加,對立方體密度的測量精度也會增加。但是,當每個維度的段數超過某個值時,會使每個維度都過于局部地觀察,幾乎每個數據點都被放置在一個單獨的立方體中,不能根據不同段的數據分布來區分不同的維度。對異常值的相關特征不能進行較高精度的選擇,從而降低了該方法的精度。
為了驗證所提的基于密度子空間孤立森林算法在異常用戶檢測中的優越性,與傳統的孤立森林算法IF[25]、K最鄰近算法KNN[26]、支持向量機算法SVM[27]以及集成算法AdaBoost[28]算法進行對比分析,不同檢測模型的參數如表2所示。不同檢測模型檢測結果如表3所示。由表3可知,本文方法的ACC=0.942 6,F1=0.717 4,AUC=0.973 4。與未改進的IF算法分別提升了0.109 1、0.537 7和0.316 4,這是因為利用mRMRD準則選擇的子空間過濾了無關維度疊加產生的噪聲效應,減少了對孤立樹構建的影響。并且避免了由于隨機性所造成的較高異常度屬性的漏選,從而提高了算法的可靠性。同時,與KNN、SVM和Adaboost算法相比,本文算法的ACC、F1和AUC均為最高,驗證了本文算法的分類效果最好。

表2 模型參數Table 2 Model parameters

表3 不同模型檢測結果Table 3 Detection results of different models
不同模型在異常檢測上的ROC曲線如圖6所示。由圖6可知,本文算法的ROC曲線相比于其他算法更貼近左上角,曲下面積更接近于1,在FPR較小時TPR更高,因此模型效果更好。這是因為本文算法利用了mRMRD方法篩選出了屬性相關度較高且差異性較大的子空間,因此在構建隔離樹時分支有更明顯的差異,能夠有效檢測出異常數據。

圖6 不同模型ROC對比曲線Fig.6 ROC comparison curve of different models
KNN算法的ROC曲線雖然較其他算法更高,但FPR值也較高,說明模型錯誤識別為正常樣本的數量更高。由表3可知,本文算法比排名第二的AdaBoost算法各參數均高約2%。雖然AdaBoost算法可以將單個弱分類器加權聯合構成一個強分類器,但沒有改變單個分類器隨機性的固有缺陷,并且對錯誤識別的樣本會增加其權值,影響最終分類器的精度。
為了說明異常樣本所占比例的不同對基于密度子空間孤立森林模型的影響,本文研究構造了不同異常用電占比進行對比實驗分析,得到5種不同算法的ACC和AUC,結果如圖7和圖8所示。

圖7 不同模型在不同異常樣本占比上的AUCFig.7 AUC value of different models in different abnormal sample proportions

圖8 不同模型在不同異常樣本占比上的ACCFig.8 ACC value of different models in different abnormal sample proportions
由圖7可知,傳統IF算法的AUC最低,本文算法相較最優,其次為AdaBoost、KNN和SVM。隨著異常樣本占比的減小,KNN算法的AUC呈下降趨勢,SVM算法的波動最大,IF算法相較平穩且呈上升趨勢,而本文算法與AdaBoost算法的AUC在0.93~0.98波動,且本文算法始終最大,證明集成算法在不同異常樣本比例下具有一定的穩定性。
由圖8可知,隨著異常樣本占比的減少,5種算法的ACC整體上呈上升趨勢。其中,IF算法上升最快,SVM算法波動最大,而本文算法、AdaBoost和KNN 3種算法波動較為穩定,且本文算法的ACC值始終最大,進一步說明了本文算法的有效性。
針對傳統檢測算法在面對高維數據時準確率下降,以及孤立森林在構建隔離樹時的隨機性造成檢測能力不足的問題。提出了一種基于無監督密度子空間選擇的孤立森林異常用電檢測算法,得出如下結論。
(1)提出了一種基于密度的數據壓縮表示方法,新的數據簡化提高了本文子空間選擇策略的效率。
(2)利用mRMRD準則評價異常值檢測中特征的優度,并選擇一個緊湊的子空間,使其特征間具有最小的冗余度與最高的密度相關性。
(3)通過在子空間中構建隔離樹,降低了孤立森林屬性選擇的隨機性。通過多種實驗驗證并與KNN、SVM、IF和AdaBoost算法進行對比,實驗結果表明,本文算法具有更好的異常檢測精度。