劉中強,鄒維維
1(中國科學院大學,北京 100049)
2(中國科學院 沈陽計算技術研究所,沈陽 110168)
國家電網公司通過十多年的信息化建設,積累了海量生產運行和經營管理數據.隨著物聯網技術的發(fā)展,數據量還會繼續(xù)增大.按照十四五規(guī)劃,智能化和數字化必將是下一階段的重點發(fā)展方向.用電信息采集系統的發(fā)展和推廣,為電力大數據分析提供了數據基礎,可以用來做用戶用電異常行為分析.所謂異常用電數據,就是由于環(huán)境、系統或人為的因素導致的計量設備故障、異常及違規(guī)用電等行為,可以通過電能表所反應的電壓、電流、功率及線損率等指標進行反應.但是目前大多數電力部門僅使用傳統的統計方法進行異常分析,費時費力且成效低.本文將基于用戶用電數據采集記錄,利用過采樣技術對數量較少的異常類樣本數據進行增多,這樣就可以把用戶用電異常檢測的問題看作是一個是否異常的二分類問題,然后使用當前流行的機器學習模型,對用戶用電是否異常進行分類.訓練該模型的目的是幫助檢測系統更加快速、準確地識別異常用電行為.
基于機器學習的用戶用電異常檢測已經有很多研究成果:張榮昌[1]選擇孤立森林算法應用到用戶用電異常檢測問題,該方法使用隨機切分的辦法劃分數據集來得到一組決策樹從而構成孤立森林,根據葉子結點距離根節(jié)點的距離判斷該葉子結點上的樣本是否為異常樣本,該方法規(guī)則簡單易于實現并且速度非???但是檢測精度并不夠高;張小秋等人[2]提出了一種基于邏輯回歸的增量式異常用電行為檢測方法,該方法把每天的用戶用電數據的序列都看作一個單獨的數據集來訓練邏輯回歸模型,然后利用所有的邏輯回歸模型完成增量式的學習;張穎等人[3]采用最小二乘法和聚類算法來對用戶用電數據進行分析,由于正常用戶的用電數據曲線基本符合正態(tài)分布,所以該算法使用最小二乘法近似逼近正態(tài)分布來求出每個用戶用電數據 曲線,再用K-means 聚類算法找出異常用電數據;郝方舟等人[4]提出基于高維隨機矩陣的用電行為分析方法,該方法將用戶用電數據做歸一化后看作高維隨機矩陣,利用隨機矩陣的一些特性和原理對用電是否異常做判定,但是該方法在處理完數據之后需要人工對數據的統計特征進行分析,效率不夠高;林女貴等人[5]通過改進深度自編碼網絡的方式進行用電異常檢測,在自編碼網絡中引入稀疏約束和噪聲編碼,提高了計算效率和模型的魯棒性,該方法準確率較高但由于神經網絡層數較深,所以運行速度較慢.針對上述現階段算法存在的問題,本文采用了魏志強等人[6]在解決Web異常檢測問題時使用的LightGBM 模型,該模型結合SMOTE和Tomeklinks 采樣算法將異常檢測問題轉化為了一個分類問題.與Web 異常檢測問題相比,用戶用電異常檢測問題同樣存在數據量大、正負樣本不平衡等問題,所以使用該模型可以保證訓練速度較快的同時提高了異常用電用戶檢測的準確率.
類別不平衡問題往往會導致模型訓練結果出現較大的偏差,所以對于正、負類別樣本數量差距比較大的情況一般會使用采樣技術對原始數據進行增加或刪減來構建新的數據集,這樣做可以使模型的訓練結果更加穩(wěn)定.
SMOTE是過采樣算法,通過對少數類樣本數量增多來達到樣本平衡的目的.圖1是SMOTE 過采樣算法的做法:隨機取出一個少數類樣本的k近鄰樣本,然后與原始樣本做線性組合來生成新的樣本.
圖1 SMOTE 過采樣算法
SMOTE 過采樣算法的流程如算法1.
算法1.SMOTE 過采樣算法1) 輸入數據集,其中正樣本為多數類,負樣本為少數類,設置k 近鄰的k 值;2) 利用歐氏距離,計算出每個負樣本的k 近鄰,這里可以使用KD 樹等方法降低求兩個樣本之間距離的計算量;3)對于每一個負樣本X,從它的k 近鄰中隨機取出一個樣本O;4)利用原來的樣本X和隨機取出的樣本O,可以通過如下公式構建出新的樣本Y,其中rand是生成隨機數的函數:5)輸出一個新的負樣本Y;6)重復3)~5)的操作,直至正負樣本比例平衡;Y=X+rand(0,1)|O-X|
TomekLinks是欠采樣算法,對于任意的兩個樣本X和Y,如果X和Y互為最近鄰樣本,那么這兩個樣本則稱為TomekLink.對于任意的TomekLink,它們都應該屬于同一個類別,如果不是這樣,那么這兩個樣本就至少有一個劃分到了錯誤類別,刪除錯誤分類樣本就可以達到欠采樣的目的.
由于SMOTE 過采樣算法是隨機的選取少數類樣本周圍的近鄰樣本進行線性組合得到新的樣本,所以有可能從負樣本的區(qū)域擴散到正樣本的區(qū)域,所以在對原始數據進行過采樣之后,可以配合使用TomekLinks算法刪除這種正負樣本重疊的區(qū)域.
梯度提升樹(GBDT)算法是基于分類回歸樹(CART)的加法模型.每一輪訓練擬合上一輪產生的殘差來生成一棵CART 樹,經過多輪迭代,得到最終的模型.這里擬合殘差的思路類似梯度下降,將每一輪的目標函數f看作梯度下降的參數來優(yōu)化,公式為:
設總體目標函數為L,對于一個樣本x,它的標簽為y,那么Δf的計算公式如下:
由于fn的部分已經固定,所以每次只迭代只需要學習Δf這部分,這就是擬合梯度的殘差.
LightGBM是基于GBDT 實現的一個具體模型,在原始的GBDT 基礎上做了一些優(yōu)化.LightGBM的目標函數改進為二階泰勒展開并加入了正則化項.LightGBM的目標函數公式如下所示:
其中,xi表示第i個樣本,yi表示它的標簽,l表示原始的目標函數,Ln表示添加正則化項后第n次迭代的目標函數,fn是第n次迭代的模型,γ和λ是參數,T是葉子結點數量,wi表示第j個葉子結點的輸出值.
LightGBM的分割點選擇是基于直方圖的算法,大大提高了選擇分割點的速度.對于決策樹的增長策略,LightGBM是使用leaf-wise的策略,每次分裂選擇收益最大的點分裂,可以提高模型的精度.此外,LightGBM在特征的處理上和并行計算上都做了很多的優(yōu)化,是當前流行的機器學習模型,相對于深度神經網絡模型擁有速度快的優(yōu)勢,相對于傳統機器學習模型又有著精度高的優(yōu)勢,所以本文選擇LightGBM 模型進行分類.
實驗首先對數據集進行預處理,然后提取特征構建訓練集,在得到訓練集之后對數據進行過采樣使得正負樣本數量平衡,接下來使用欠采樣算法過濾掉訓練集中正負樣本重合的部分,最后將處理好的訓練集輸入到LightGBM 模型中進行分類,圖2是實驗的整體流程.
圖2 實驗的整體流程
本文數據采用某地區(qū)采集到的用戶用電數據,數據每隔15 分鐘采集一次,采集的數據有電壓、電流、電量等信息.每一條數據表示一個用戶一天24 小時的用電情況,這樣每條數據就有96 個數據點.該數據集已經標注好了用電是否異常的標簽,其中異常數據占比約1.5%.
首先對數據缺失值和數據冗余情況進行處理,經過預處理的數據再提取特征.對于每條用戶用電數據主要提取用電的統計特征.本文從全天、峰期(用電高峰時間段)、谷期(用電低谷時間段)、平期這4 個時間段的特征來反應用戶全天的用電特征,對于每一個時段單獨計算一組如下特征.
平均負荷類特征,計算電壓、電流或功率在該時段的平均值除以最大值,用來反應整個時段用電數據變化情況.
差值類特征,計算電壓、電流或功率在該時段的最大值與最小值的差值除以最大值,用來反應用電峰值與谷值的差異程度.
TOP 值類特征,計算該時段用電數據前三的時間點的平均值,用以反應用電高峰時期一段時間內的統計信息.
計算好每一個用戶的多組統計信息作為這個用戶的全部特征,然后將計算好的特征數據作為模型的訓練集.
由于數據的正負樣本極度不平衡.所以使用SMOTE算法對數量較少的負樣本進行過采樣,采樣之后的數據正負樣本數量相等.由于SMOTE 過采樣算法生成的負樣本會與原來的正樣本區(qū)域產生重疊,所以使用TomekLinks 算法將所處區(qū)域極度接近但是不屬于同一類別的樣本刪除,這樣既可以減少訓練數據的規(guī)模也可以去除掉難以判斷的樣本,提高訓練速度和準確度.經過兩個算法對數據的處理之后采樣結果如表1所示.
表1 采樣結果
評價分類結果的4 個基本指標是:TP(真正例)、FP(假正例)、TN(真負例)、FN(假負例).這4 個基本指標主要用于度量預測結果中正、負樣本分類正確與錯誤的數量.本文主要使用3 個評價指標:準確率、F1_score、AUC 值,這些評價指標的公式如下:
其中,Precision是準確率,Recall是召回率,而AUC 值是ROC 曲線下面積,將預測樣本根據概率大小依次作為閾值劃分正、負樣本,然后計算每組閾值下的TPR和FPR.將TPR作為縱坐標,FPR作為橫坐標,就可以畫出一條ROC 曲線,計算這條曲線下面積就能得到AUC 值.
由于使用SMOTE 算法需要尋找k近鄰,所以k就是一個超參數,我們首先對參數k進行實驗,結果如圖3所示,當k等于5的時候模型準確率最高.
圖3 不同k 值下的準確率
模型的最終實驗結果對比如表2所示.單一的LightGBM 模型在準確率上優(yōu)于其他模型,但是由于數據不平衡問題,AUC 值和F1 值表現不佳.而使用了采樣技術的LightGBM 模型3 個指標都高于其他模型,在模型精度上最優(yōu).
表2 實驗結果
在本文中,我們應用了一種基于采樣技術和Light-GBM的模型來解決用戶用電異常檢測問題 該模型首先使用SMOTE 算法對少數類樣本進行過采樣,從而使得正負樣本數量平衡,然后使用TomekLinks 算法刪除掉不同類別距離十分接近的樣本,把采樣好的數據輸入到LightGBM 模型中進行二分類訓練,最終輸出的預測結果采用不同的評價指標進行評估.本文采用的模型在用戶用電異常檢測問題上,具有高精確率和速度快的優(yōu)勢.由于模型中使用的特征沒有進行詳細的篩選,所以模型還有很大的提升空間,下一步我們將根據不同特征對模型的重要性進行模型優(yōu)化,對特征空間進行更加細致的處理,進一步提升模型的準確率.并且目前模型主要是檢測用電數據是否異常,沒有分析產生異常的原因,所以下一步工作還將對異常用電數據進行分類,確定產生異常的原因.