劉中強,鄒維維
1(中國科學院大學,北京 100049)
2(中國科學院 沈陽計算技術(shù)研究所,沈陽 110168)
國家電網(wǎng)公司通過十多年的信息化建設(shè),積累了海量生產(chǎn)運行和經(jīng)營管理數(shù)據(jù).隨著物聯(lián)網(wǎng)技術(shù)的發(fā)展,數(shù)據(jù)量還會繼續(xù)增大.按照十四五規(guī)劃,智能化和數(shù)字化必將是下一階段的重點發(fā)展方向.用電信息采集系統(tǒng)的發(fā)展和推廣,為電力大數(shù)據(jù)分析提供了數(shù)據(jù)基礎(chǔ),可以用來做用戶用電異常行為分析.所謂異常用電數(shù)據(jù),就是由于環(huán)境、系統(tǒng)或人為的因素導(dǎo)致的計量設(shè)備故障、異常及違規(guī)用電等行為,可以通過電能表所反應(yīng)的電壓、電流、功率及線損率等指標進行反應(yīng).但是目前大多數(shù)電力部門僅使用傳統(tǒng)的統(tǒng)計方法進行異常分析,費時費力且成效低.本文將基于用戶用電數(shù)據(jù)采集記錄,利用過采樣技術(shù)對數(shù)量較少的異常類樣本數(shù)據(jù)進行增多,這樣就可以把用戶用電異常檢測的問題看作是一個是否異常的二分類問題,然后使用當前流行的機器學習模型,對用戶用電是否異常進行分類.訓練該模型的目的是幫助檢測系統(tǒng)更加快速、準確地識別異常用電行為.
基于機器學習的用戶用電異常檢測已經(jīng)有很多研究成果:張榮昌[1]選擇孤立森林算法應(yīng)用到用戶用電異常檢測問題,該方法使用隨機切分的辦法劃分數(shù)據(jù)集來得到一組決策樹從而構(gòu)成孤立森林,根據(jù)葉子結(jié)點距離根節(jié)點的距離判斷該葉子結(jié)點上的樣本是否為異常樣本,該方法規(guī)則簡單易于實現(xiàn)并且速度非常快,但是檢測精度并不夠高;張小秋等人[2]提出了一種基于邏輯回歸的增量式異常用電行為檢測方法,該方法把每天的用戶用電數(shù)據(jù)的序列都看作一個單獨的數(shù)據(jù)集來訓練邏輯回歸模型,然后利用所有的邏輯回歸模型完成增量式的學習;張穎等人[3]采用最小二乘法和聚類算法來對用戶用電數(shù)據(jù)進行分析,由于正常用戶的用電數(shù)據(jù)曲線基本符合正態(tài)分布,所以該算法使用最小二乘法近似逼近正態(tài)分布來求出每個用戶用電數(shù)據(jù) 曲線,再用K-means 聚類算法找出異常用電數(shù)據(jù);郝方舟等人[4]提出基于高維隨機矩陣的用電行為分析方法,該方法將用戶用電數(shù)據(jù)做歸一化后看作高維隨機矩陣,利用隨機矩陣的一些特性和原理對用電是否異常做判定,但是該方法在處理完數(shù)據(jù)之后需要人工對數(shù)據(jù)的統(tǒng)計特征進行分析,效率不夠高;林女貴等人[5]通過改進深度自編碼網(wǎng)絡(luò)的方式進行用電異常檢測,在自編碼網(wǎng)絡(luò)中引入稀疏約束和噪聲編碼,提高了計算效率和模型的魯棒性,該方法準確率較高但由于神經(jīng)網(wǎng)絡(luò)層數(shù)較深,所以運行速度較慢.針對上述現(xiàn)階段算法存在的問題,本文采用了魏志強等人[6]在解決Web異常檢測問題時使用的LightGBM 模型,該模型結(jié)合SMOTE和Tomeklinks 采樣算法將異常檢測問題轉(zhuǎn)化為了一個分類問題.與Web 異常檢測問題相比,用戶用電異常檢測問題同樣存在數(shù)據(jù)量大、正負樣本不平衡等問題,所以使用該模型可以保證訓練速度較快的同時提高了異常用電用戶檢測的準確率.
類別不平衡問題往往會導(dǎo)致模型訓練結(jié)果出現(xiàn)較大的偏差,所以對于正、負類別樣本數(shù)量差距比較大的情況一般會使用采樣技術(shù)對原始數(shù)據(jù)進行增加或刪減來構(gòu)建新的數(shù)據(jù)集,這樣做可以使模型的訓練結(jié)果更加穩(wěn)定.
SMOTE是過采樣算法,通過對少數(shù)類樣本數(shù)量增多來達到樣本平衡的目的.圖1是SMOTE 過采樣算法的做法:隨機取出一個少數(shù)類樣本的k近鄰樣本,然后與原始樣本做線性組合來生成新的樣本.

圖1 SMOTE 過采樣算法
SMOTE 過采樣算法的流程如算法1.

算法1.SMOTE 過采樣算法1) 輸入數(shù)據(jù)集,其中正樣本為多數(shù)類,負樣本為少數(shù)類,設(shè)置k 近鄰的k 值;2) 利用歐氏距離,計算出每個負樣本的k 近鄰,這里可以使用KD 樹等方法降低求兩個樣本之間距離的計算量;3)對于每一個負樣本X,從它的k 近鄰中隨機取出一個樣本O;4)利用原來的樣本X和隨機取出的樣本O,可以通過如下公式構(gòu)建出新的樣本Y,其中rand是生成隨機數(shù)的函數(shù):5)輸出一個新的負樣本Y;6)重復(fù)3)~5)的操作,直至正負樣本比例平衡;Y=X+rand(0,1)|O-X|
TomekLinks是欠采樣算法,對于任意的兩個樣本X和Y,如果X和Y互為最近鄰樣本,那么這兩個樣本則稱為TomekLink.對于任意的TomekLink,它們都應(yīng)該屬于同一個類別,如果不是這樣,那么這兩個樣本就至少有一個劃分到了錯誤類別,刪除錯誤分類樣本就可以達到欠采樣的目的.
由于SMOTE 過采樣算法是隨機的選取少數(shù)類樣本周圍的近鄰樣本進行線性組合得到新的樣本,所以有可能從負樣本的區(qū)域擴散到正樣本的區(qū)域,所以在對原始數(shù)據(jù)進行過采樣之后,可以配合使用TomekLinks算法刪除這種正負樣本重疊的區(qū)域.
梯度提升樹(GBDT)算法是基于分類回歸樹(CART)的加法模型.每一輪訓練擬合上一輪產(chǎn)生的殘差來生成一棵CART 樹,經(jīng)過多輪迭代,得到最終的模型.這里擬合殘差的思路類似梯度下降,將每一輪的目標函數(shù)f看作梯度下降的參數(shù)來優(yōu)化,公式為:

設(shè)總體目標函數(shù)為L,對于一個樣本x,它的標簽為y,那么Δf的計算公式如下:

由于fn的部分已經(jīng)固定,所以每次只迭代只需要學習Δf這部分,這就是擬合梯度的殘差.
LightGBM是基于GBDT 實現(xiàn)的一個具體模型,在原始的GBDT 基礎(chǔ)上做了一些優(yōu)化.LightGBM的目標函數(shù)改進為二階泰勒展開并加入了正則化項.LightGBM的目標函數(shù)公式如下所示:

其中,xi表示第i個樣本,yi表示它的標簽,l表示原始的目標函數(shù),Ln表示添加正則化項后第n次迭代的目標函數(shù),fn是第n次迭代的模型,γ和λ是參數(shù),T是葉子結(jié)點數(shù)量,wi表示第j個葉子結(jié)點的輸出值.
LightGBM的分割點選擇是基于直方圖的算法,大大提高了選擇分割點的速度.對于決策樹的增長策略,LightGBM是使用leaf-wise的策略,每次分裂選擇收益最大的點分裂,可以提高模型的精度.此外,LightGBM在特征的處理上和并行計算上都做了很多的優(yōu)化,是當前流行的機器學習模型,相對于深度神經(jīng)網(wǎng)絡(luò)模型擁有速度快的優(yōu)勢,相對于傳統(tǒng)機器學習模型又有著精度高的優(yōu)勢,所以本文選擇LightGBM 模型進行分類.
實驗首先對數(shù)據(jù)集進行預(yù)處理,然后提取特征構(gòu)建訓練集,在得到訓練集之后對數(shù)據(jù)進行過采樣使得正負樣本數(shù)量平衡,接下來使用欠采樣算法過濾掉訓練集中正負樣本重合的部分,最后將處理好的訓練集輸入到LightGBM 模型中進行分類,圖2是實驗的整體流程.

圖2 實驗的整體流程
本文數(shù)據(jù)采用某地區(qū)采集到的用戶用電數(shù)據(jù),數(shù)據(jù)每隔15 分鐘采集一次,采集的數(shù)據(jù)有電壓、電流、電量等信息.每一條數(shù)據(jù)表示一個用戶一天24 小時的用電情況,這樣每條數(shù)據(jù)就有96 個數(shù)據(jù)點.該數(shù)據(jù)集已經(jīng)標注好了用電是否異常的標簽,其中異常數(shù)據(jù)占比約1.5%.
首先對數(shù)據(jù)缺失值和數(shù)據(jù)冗余情況進行處理,經(jīng)過預(yù)處理的數(shù)據(jù)再提取特征.對于每條用戶用電數(shù)據(jù)主要提取用電的統(tǒng)計特征.本文從全天、峰期(用電高峰時間段)、谷期(用電低谷時間段)、平期這4 個時間段的特征來反應(yīng)用戶全天的用電特征,對于每一個時段單獨計算一組如下特征.
平均負荷類特征,計算電壓、電流或功率在該時段的平均值除以最大值,用來反應(yīng)整個時段用電數(shù)據(jù)變化情況.

差值類特征,計算電壓、電流或功率在該時段的最大值與最小值的差值除以最大值,用來反應(yīng)用電峰值與谷值的差異程度.

TOP 值類特征,計算該時段用電數(shù)據(jù)前三的時間點的平均值,用以反應(yīng)用電高峰時期一段時間內(nèi)的統(tǒng)計信息.

計算好每一個用戶的多組統(tǒng)計信息作為這個用戶的全部特征,然后將計算好的特征數(shù)據(jù)作為模型的訓練集.
由于數(shù)據(jù)的正負樣本極度不平衡.所以使用SMOTE算法對數(shù)量較少的負樣本進行過采樣,采樣之后的數(shù)據(jù)正負樣本數(shù)量相等.由于SMOTE 過采樣算法生成的負樣本會與原來的正樣本區(qū)域產(chǎn)生重疊,所以使用TomekLinks 算法將所處區(qū)域極度接近但是不屬于同一類別的樣本刪除,這樣既可以減少訓練數(shù)據(jù)的規(guī)模也可以去除掉難以判斷的樣本,提高訓練速度和準確度.經(jīng)過兩個算法對數(shù)據(jù)的處理之后采樣結(jié)果如表1所示.

表1 采樣結(jié)果
評價分類結(jié)果的4 個基本指標是:TP(真正例)、FP(假正例)、TN(真負例)、FN(假負例).這4 個基本指標主要用于度量預(yù)測結(jié)果中正、負樣本分類正確與錯誤的數(shù)量.本文主要使用3 個評價指標:準確率、F1_score、AUC 值,這些評價指標的公式如下:

其中,Precision是準確率,Recall是召回率,而AUC 值是ROC 曲線下面積,將預(yù)測樣本根據(jù)概率大小依次作為閾值劃分正、負樣本,然后計算每組閾值下的TPR和FPR.將TPR作為縱坐標,FPR作為橫坐標,就可以畫出一條ROC 曲線,計算這條曲線下面積就能得到AUC 值.
由于使用SMOTE 算法需要尋找k近鄰,所以k就是一個超參數(shù),我們首先對參數(shù)k進行實驗,結(jié)果如圖3所示,當k等于5的時候模型準確率最高.

圖3 不同k 值下的準確率
模型的最終實驗結(jié)果對比如表2所示.單一的LightGBM 模型在準確率上優(yōu)于其他模型,但是由于數(shù)據(jù)不平衡問題,AUC 值和F1 值表現(xiàn)不佳.而使用了采樣技術(shù)的LightGBM 模型3 個指標都高于其他模型,在模型精度上最優(yōu).

表2 實驗結(jié)果
在本文中,我們應(yīng)用了一種基于采樣技術(shù)和Light-GBM的模型來解決用戶用電異常檢測問題 該模型首先使用SMOTE 算法對少數(shù)類樣本進行過采樣,從而使得正負樣本數(shù)量平衡,然后使用TomekLinks 算法刪除掉不同類別距離十分接近的樣本,把采樣好的數(shù)據(jù)輸入到LightGBM 模型中進行二分類訓練,最終輸出的預(yù)測結(jié)果采用不同的評價指標進行評估.本文采用的模型在用戶用電異常檢測問題上,具有高精確率和速度快的優(yōu)勢.由于模型中使用的特征沒有進行詳細的篩選,所以模型還有很大的提升空間,下一步我們將根據(jù)不同特征對模型的重要性進行模型優(yōu)化,對特征空間進行更加細致的處理,進一步提升模型的準確率.并且目前模型主要是檢測用電數(shù)據(jù)是否異常,沒有分析產(chǎn)生異常的原因,所以下一步工作還將對異常用電數(shù)據(jù)進行分類,確定產(chǎn)生異常的原因.