李厚恩
深圳供電局有限公司, 廣東, 深圳 518000)
隨著電網(wǎng)越來越智能化,數(shù)據(jù)量不斷增長,數(shù)據(jù)類型越來越多樣化,對數(shù)據(jù)處理和價值挖掘提出了越來越高的要求。在電力大數(shù)據(jù)中,用戶側電力數(shù)據(jù)占很大比例,反映了用戶的實際用電需求,及時發(fā)現(xiàn)異常情況可以避免故障的發(fā)生。因此,研究電力大數(shù)據(jù)的異常檢測方法對電網(wǎng)的發(fā)展和進步具有十分重要的意義[2]。查閱相關文獻可以看出,現(xiàn)有異常檢測方法主要有基于分類的檢測方法、基于聚類的檢測方法等[3-5]。但是,現(xiàn)有方法存在效率低、耗時長、判斷不準確等問題[6]。基于此,本文提出一種將孤立森林算法和局部離群因子算法相結合的電力大數(shù)據(jù)異常檢測方法,從全局和局部2個方面對電力大數(shù)據(jù)進行異常檢測,提高電力大數(shù)據(jù)檢測的優(yōu)越性。
對電力大數(shù)據(jù)進行挖掘,可以提取出在戰(zhàn)略決策、故障檢測、降低運營成本、促進電力企業(yè)長遠發(fā)展等方面起著關鍵作用的數(shù)據(jù)[7]。數(shù)據(jù)挖掘由提出具體問題、數(shù)據(jù)預處理、數(shù)據(jù)挖掘、結果評價等組成。結構如圖1所示。

圖1 數(shù)據(jù)挖掘結構
孤立森林(IF)算法是適用于連續(xù)數(shù)據(jù)的無監(jiān)督異常檢測方法[8]。在孤立森林中,采用遞歸方法對數(shù)據(jù)集進行隨機劃分。
檢測由訓練階段和測試階段2個階段組成。訓練階段通過訓練集構造孤立樹,形成孤立森林;測試階段是將樣本點引入孤立樹中,得到每個測試樣本的異常得分。具體流程如下。
步驟1 給出一個數(shù)據(jù)集X={x1,x2,…,xn}(?xi∈X,xi=(xi1,xi2,…,xid)),隨機選擇樣本點,形成數(shù)據(jù)集X的子集X′。
步驟2 從數(shù)據(jù)集k維中隨機選擇維度q,在允許范圍內(nèi)隨機設置切點p,min(xij,j=q,xij∈X′)
步驟3 通過切點p劃分形成超平面,維度大于p點放入右分支上,維度小于p點放入左分支上。
步驟4 是否繼續(xù)分割,如繼續(xù)分割,轉到步驟2,否則執(zhí)行下一步。
步驟5 重復步驟1至步驟4,直到生成t棵孤立樹。
(2) 測試階段
對于每個數(shù)據(jù)點xi,遍歷所有孤立樹(iTree),計算平均高度h(xi),對h(xi)進行歸一化。最后,根據(jù)式(1)計算每個測試樣本的異常得分[9]。
(1)
式中,C(n)為給定樣本數(shù)n的平均路徑長度,E(h(x))為樣本x在孤立樹中的期望路徑長度,S(x,n)為樣本x的特征分數(shù)。
孤立森林算法雖然不進行距離、密度等指標計算,大大加快了運算速度,但其無法檢測局部用電異常,因此本文提出了一種將孤立森林算法和局部離群因子算法相結合的電力大數(shù)據(jù)異常檢測方法。
局部離群因子(LOF)算法是有代表性的基于密度的離群點檢測方法[10],其主要思想是為每個數(shù)據(jù)點分配離群因子LOFk(o),并通過離群因子的大小確定樣本數(shù)據(jù)是否異常。算法步驟如下。
步驟1 輸入數(shù)據(jù)集D,指定k值和尚未遍歷的點o。
步驟2 根據(jù)式(2)計算點o到點p的第k可達距離[11]。
reach_dk(o,p)=max{dk(o),dk(o,p)}
(2)
式中,reach_dk(o,p)為點o到點p的第k可達距離,d(o,p)為點o和點p之間的距離,dk(o)為點o的第k距離。
步驟3 根據(jù)式(3)計算點o的局部可達密度pk(o)。
(3)
式中,ρk(o)為平均可達距離的倒數(shù)(第k鄰域內(nèi)的點到點o)。如果該點o位于簇中,則該點o位于點p的k距離鄰域中的概率較大。
步驟4 根據(jù)式(4)計算點o的局部離群因子LOFk(o)[12]。
(4)
將計算出的LOFk(o)值按降序排列,前n個放置的數(shù)據(jù)樣本點即為異常點。
基于孤立森林和局部離群因子算法的電力數(shù)據(jù)異常檢測思想是利用主成分分析對某一類電力用戶的用電數(shù)據(jù)特征集進行降維,通過孤立森林過濾掉用電數(shù)據(jù)中的全部異常后的剩余數(shù)據(jù)作為局部離群因子算法的輸入,以獲得更精確的異常點[13]。本文用電數(shù)據(jù)異常檢測方法的主要步驟如下。
步驟1 利用模糊C-均值對電力用戶用電數(shù)據(jù)進行特征分類,并采用主成分分析法進行降維。
步驟2 初始化孤立森林算法參數(shù),通過孤立森林算法進行全局異常值檢測。
步驟3 通過孤立森林過濾掉用電數(shù)據(jù)中的全局異常后,使用局部異常因子算法進行二次異常檢測,識別局部異常并獲得用戶離群度排序。圖2為異常檢測方法的流程圖。

圖2 異常檢測方法流程
為了驗證本文方法的性能進行仿真實驗,仿真設備為聯(lián)想PC,操作系統(tǒng)為Windows 10 64位旗艦版,Intel i52450m CPU,頻率2.5 GHz,8 GB內(nèi)存,Python 3.7環(huán)境[14]。本文采用某地區(qū)3234個用戶半年的電力負荷數(shù)據(jù)進行采樣,采樣間隔為15 min,每天96點。
通過聚類得到四類用戶。第一種有1179個用戶,全天的用電都相對較低;第二類有737個用戶,在夜間處于用電高峰;第三類有529個用戶,是典型的雙峰用戶;第四類有741個用戶,從上午9點和10點以及下午3點和4點,耗電量處于較高狀態(tài),而在晚上則很低。孤立樹的數(shù)量設置為100,最佳樣本數(shù)量設置為80,最近鄰數(shù)量設置為150。異常數(shù)據(jù)如表1所示。

表1 不同類別異常數(shù)據(jù)
以ROC曲線、P-R為指標,將本文所提方法與孤立森林算法和k-means算法進行比較,驗證本文方法在異常用電數(shù)據(jù)檢測中的可行性。圖3為不同類別在不同檢測方法下的ROC曲線和相應的AUC值。

(a) 類別1不同方法ROC曲線

(b) 類別2不同方法ROC曲線

(c) 類別3不同方法ROC曲線

(d) 類別4不同方法ROC曲線圖3 不同類別不同方法的ROC曲線
如圖3可以看出,本文方法在異常用電數(shù)據(jù)檢測中的AUC值大于0.90,高于IF算法和k-means算法,IF算法的AUC值高于k-means算法的AUC值。表2為不同類別中不同檢測方法的P值、R值和AP。

表2 不同類別不同檢測方法的P-R指標
從表2可以看出,本文方法的P值、R值和AP均高于IF算法和k-means算法。因此,本文方法比IF算法和k-means算法更適合于離群點較少的電力數(shù)據(jù)異常檢測,驗證了本文方法在異常用電數(shù)據(jù)檢測中具有優(yōu)越性和適用性。
本文提出了一種將IF算法和LOF算法相結合的電力大數(shù)據(jù)異常檢測方法,從全局和局部2個方面對用電數(shù)據(jù)進行異常檢測。結果表明,與IF算法和k-means算法相比,本文方法在ROC曲線、P-R指標上具有更高的效率和準確性。由于受當前實驗室硬件和數(shù)據(jù)規(guī)模的影響,本文研究還處于起步階段,僅檢測了少量數(shù)據(jù)的異常。基于此,后期將對大量用電數(shù)據(jù)進行異常檢測和分析,不斷提高檢測方法的性能和適應性。