韓金濤 雷景生
(上海電力大學計算機科學與技術學院 上海 200090)
隨著經(jīng)濟快速發(fā)展,人們對電力能源的需求不斷增加,電能已成為國民生產(chǎn)生活的支柱能源。供電企業(yè)在為國民提供便利的同時也承受著竊電行為所帶來的異常損失。偷電行為給電力企業(yè)帶來的損失屬于非技術性損失[1],不僅會擾亂電力生產(chǎn)的正常秩序,更會阻礙電網(wǎng)的合理規(guī)劃,有損國家經(jīng)濟發(fā)展。
在當前人工智能和大數(shù)據(jù)的背景下,研究者們針對竊電檢測問題,提出了一系列解決方案。其中支持向量機[2]、神經(jīng)網(wǎng)絡[3]、隨機森林[4]、主成分分析[5]和模糊聚類[6]等機器學習算法得到了廣泛的應用。比如Jindal等[7]使用決策樹和支持向量機的組合,通過決策樹過濾掉干擾數(shù)據(jù)再通過訓練支持向量機模型,最終識別出異常用電。Chatterjee等[8]使用遞歸神經(jīng)網(wǎng)絡模型,結合基礎智能裝置從負荷數(shù)據(jù)中篩選異常用戶。Jokar等[9]通過監(jiān)控用戶消費模式,使用支持向量機算法識別出可疑竊電用戶。莊池杰等[10]通過對用電負荷數(shù)據(jù)進行降維,使用局部離子群因子算法判斷用電異常用戶。胡天宇等[11]提出了基于堆疊去相關自編碼器和支持向量機的竊電檢測方法,利用自編碼器從用電數(shù)據(jù)中提取特征,再使用支持向量機對這些特征進行分類識別。然而現(xiàn)有的異常用電檢測智能方法,大都基于多種用電參量數(shù)據(jù),直接對用戶用電量數(shù)據(jù)進行分析的研究較少,且檢測方法大都是基于分類算法的選擇,缺少對特征提取過程的優(yōu)化研究。
本文對用戶用電量數(shù)據(jù)進行分析,提出一種基于多源棧式混合自編碼器的竊電檢測方法。首先對自編碼器進行改進,使其具有更強的特征表達能力,更易提取復雜抽象特征,然后組建多源輸入的棧式網(wǎng)絡,拓展了網(wǎng)絡深度,提高了模型的魯棒性和泛化能力。在訓練過程中,添加了人工提取特征的流程,使分類結果更具有代表性,提高了分類準確率。
針對高維用電數(shù)據(jù),本文使用改進的混合棧式自編碼器對數(shù)據(jù)進行無監(jiān)督學習,從而獲得能夠?qū)υ紨?shù)據(jù)進行高度非線性表示的數(shù)據(jù)特征。
從用電業(yè)務邏輯[12]分析,用戶在一段時間內(nèi)每日的用電量信息有明顯的時序性,長中短期的用電規(guī)律對竊電檢測的分析結果會產(chǎn)生較大的影響。因此,本文在保留用戶每天用電量的基礎上拓展了兩部分用戶中長期特征。
神經(jīng)網(wǎng)絡是智能學習的重要算法,在一定范圍內(nèi)隨著網(wǎng)絡深度的增加,模型性能呈現(xiàn)上升趨勢。但隨著層級的加深,網(wǎng)絡易陷入局部最優(yōu)并且出現(xiàn)過擬合或者欠擬合的現(xiàn)象,為避免此類問題,需要為網(wǎng)絡參數(shù)選擇合適的初始值[13]。使用無監(jiān)督學習進行預訓練是優(yōu)化網(wǎng)絡初值的一種重要方法[14]。
自編碼器是一種重要的無監(jiān)督學習算法,傳統(tǒng)自編碼器主要由輸入層、隱藏層和輸出層組成,并且分為編碼和解碼兩個階段,編碼階段的隱藏層的個數(shù)一般與解碼階段相同。其網(wǎng)絡結構如圖1所示。
圖1 自編碼網(wǎng)絡結構
工作原理是通過編碼和解碼兩個階段后,使輸出數(shù)據(jù)盡可能與輸入數(shù)據(jù)一致,隱藏層就被認為是能夠高度還原數(shù)據(jù)的數(shù)據(jù)特征。解碼和編碼過程如式(1)和式(2)所示。
h1=fe(W1x+b1)
(1)
y=fd(W2h1+b2)
(2)
式中:h1是編碼過程的結果;y是解碼過程的結果;x表示輸入數(shù)據(jù);b是隱藏層的輸入偏置;W代表隱藏層的輸入權重。自編碼器嘗試學習一個恒等式y(tǒng)=x,通過誤差的反向傳播和批量梯度下降算法,訓練出能夠盡量滿足該恒等式的權重W和偏置b,此時可認為編碼器的隱藏層是從輸入數(shù)據(jù)x中提取出的理想數(shù)據(jù)特征。
損失函數(shù)L(x,y)可以使用交叉熵表示,如式(3)所示。
(3)
式中:xi表示第i個樣本預測值為1的概率;yi表示第i個樣本真實值為1的概率。
為避免出現(xiàn)過擬合,一般可以在損失函數(shù)上加入一個正則化權重衰減項來控制權重的減小程度,最終的損失函數(shù)表示為:
(4)
式中:L(x,y)表示交叉熵;λ是權重系數(shù);W代表權重,b代表偏置。
為了提高自編碼器的特征提取的性能,Vincent等[15]從提高魯棒性的方向如入手提出了降噪自編碼器。其原理是在數(shù)據(jù)送入隱藏層之前,給原始數(shù)據(jù)添加噪聲以損壞部分數(shù)據(jù),然后將損壞后的數(shù)據(jù)送入隱藏層進行編碼,最后通過解碼還原未損壞的原始數(shù)據(jù),從而迫使編碼器學習更具有魯棒性的特征表達。其網(wǎng)絡結構如圖2所示,其中“×”代表原始數(shù)據(jù)中被Dropout的數(shù)據(jù)。
圖2 降噪自編碼網(wǎng)絡結構
Ng[16]認為高維且稀疏的表達更能反映出原始數(shù)據(jù)特征,從而提出了稀疏自編碼器。其原理是通過對神經(jīng)元的輸出進行抑制,即對隱藏層神經(jīng)元輸出的平均激活值進行約束,達到一個輸出的稀疏效果。該抑制效果可以通過KL散度迫使激活值與一個給定的稀疏值相近,并將其作為一個懲罰項添加到損失函數(shù)中,新的損失函數(shù)JSAE表示為:
(5)
(6)
(7)
本文結合上述兩種自編碼器的特點,構建混合自編碼器,利用KL散度對隱藏層神經(jīng)元的輸出進行約束,并作為懲罰項加入到網(wǎng)絡的損失函數(shù)中。網(wǎng)絡結構如圖3所示,其中:“×”代表原始數(shù)據(jù)中被Dropout的數(shù)據(jù);“—”代表被抑制輸出的神經(jīng)元。其損失函數(shù)同式(5)。混合自編碼器不僅增強了模型的魯棒性,還能從原始數(shù)據(jù)中得到具有代表性的數(shù)據(jù)特征,同時降低了運算過程中真正參與計算的神經(jīng)元的數(shù)量,提高了運算效率。
圖3 混合自編碼網(wǎng)絡結構
自編碼器與其他神經(jīng)網(wǎng)絡相同,也可以含有多個隱藏層。含有多個隱藏層的自編碼網(wǎng)絡成為棧式自編碼網(wǎng)絡。增加隱藏層可以學習到更為復雜的數(shù)據(jù)特征,但如果編碼過程過于強大,就會使得學習過程變?yōu)閷⑤斎胗成錇槿我鈹?shù),從而降低了提取數(shù)據(jù)特征的能力,因此自編碼網(wǎng)絡的隱藏層數(shù)目不宜過多。
對于每一個輸入源,本文構建棧式混合自編碼單元來進行特征提取,構建過程如圖4所示。首先訓練一個混合自編碼器,作為第一個隱藏層;然后用一個傳統(tǒng)自編碼器學習并重構第一個自編碼器的隱藏層數(shù)據(jù),最后將兩個自編碼器整合到一起,構建棧式混合自編碼單元。該混合自編碼單元通過混合自編碼器獲得穩(wěn)定且具有代表性的數(shù)據(jù)特征,然后通過傳統(tǒng)自編碼器對數(shù)據(jù)進行降維處理,避免了后期數(shù)據(jù)級聯(lián)過程中造成的大范圍維度擴張。
圖4 棧式混合自編碼單元構建流程
在處理竊電用戶檢測問題中,由于使用的數(shù)據(jù)是用戶在過去三年的每日用電量情況,數(shù)據(jù)存在較為明顯且重要的時序信息。從業(yè)務邏輯的角度分析,用戶的長中期用電行為規(guī)律是影響分類器分類性能的重要因素。因此,在保留用戶過去一年內(nèi)每天的用電量的特征基礎上,結合實際業(yè)務邏輯,為了獲取用戶長中期的用電規(guī)律特征,本文通過以下兩種人工特征提取的方法對數(shù)據(jù)特征進行擴展:
擴展數(shù)據(jù)一:分別提取用戶每一個月、每兩個月、每三個月、每四個月、每六個月、每十二個月用電數(shù)據(jù)中的最大值、最小值、中位數(shù)、均值、方差。
擴展數(shù)據(jù)二:分別提取對于每個用戶,過去一個月、過去兩個月、過去三個月、直到過去三十六個月用電數(shù)據(jù)中的最大值、最小值、中位數(shù)、均值、方差。
本文首先根據(jù)原始數(shù)據(jù)特性進行預處理,然后利用棧式混合自編碼單元搭建了特征提取網(wǎng)絡模型,最后使用一個兩層的神經(jīng)網(wǎng)絡對數(shù)據(jù)進行分類。
基于上文提到的混合自編碼單元,本文搭建了多源棧式混合自編碼網(wǎng)絡對數(shù)據(jù)進行分類學習,網(wǎng)絡結構如圖5所示。
圖5 多源棧式混合自編碼網(wǎng)絡結構
輸入網(wǎng)絡數(shù)據(jù)分為原始數(shù)據(jù)、擴展數(shù)據(jù)一和擴展數(shù)據(jù)二共三個輸入源。自編碼器單元一的輸入為原始數(shù)據(jù),輸出為out1;自編碼器單元二的輸入為out1級聯(lián)拓展特征一,輸出為out2;自編碼器單元三的輸入為out2級聯(lián)out1再級聯(lián)拓展特征二,輸出最終提取的特征;最后將輸出的特征送入一個由全連接層和輸出層組成的分類網(wǎng)絡對樣本進行預分類。通過該網(wǎng)絡能夠有效地從原始數(shù)據(jù)以及用戶的長中短期用電規(guī)律中提取出重要的數(shù)據(jù)特征。此外網(wǎng)絡中每一個單元的輸入都級聯(lián)了前面所有單元的輸出,這種形式能夠有效利用淺層網(wǎng)絡所提取出的數(shù)據(jù)特征,避免因網(wǎng)絡層數(shù)過深而產(chǎn)生的梯度消散現(xiàn)象。
網(wǎng)絡的訓練和分類過程如下:
(1) 融合降噪自編碼器和稀疏自編碼器構建1.3節(jié)所提到的棧式混合自編碼單元。
(2) 將經(jīng)過預處理后的數(shù)據(jù)送入第一個單元的混合自編碼器進行預訓練,得到數(shù)據(jù)特征以及編碼器權重值。再將得到的特征作為輸入數(shù)據(jù)送入第一個單元的傳統(tǒng)自編碼器進行預訓練,得到降維后的特征并輸出。
(3) 將(2)中的輸出級聯(lián)擴展特征一送入第二個棧式混合自編碼單元,并依次訓練兩個自編碼器,得到降維后的特征并輸出。
(4) 將(3)中的輸出級聯(lián)(2)中的輸出和擴展特征二,送入第三個棧式混合自編碼單元,并依次訓練兩個自編碼器,得到降維后的特征并輸出。
(5) 將(4)中的輸出送入一個用于分類的神經(jīng)網(wǎng)絡,根據(jù)原始數(shù)據(jù)的標簽進行有監(jiān)督學習,預訓練分類網(wǎng)絡。該分類網(wǎng)絡由兩個隱藏層組成,其中第二個隱藏層有兩個神經(jīng)元,對輸入的數(shù)據(jù)特征進行二分類。
(6) 根據(jù)原始數(shù)據(jù)的標簽,將整個網(wǎng)絡作為深度學習分類器再次訓練,對整個網(wǎng)絡進行微調(diào),輸出最終的分類結果。
在神經(jīng)網(wǎng)絡中,研究者們經(jīng)常使用的激活函數(shù)有Softmax、Sigmoid、Tanh、ReLU等,其中Sigmoid函數(shù)又叫做Logistic函數(shù),可以將實數(shù)映射到(0,1)的區(qū)間內(nèi),在數(shù)據(jù)特征相差比較復雜或相差不大的情況下能夠起到比較好的效果。結合電力用戶用電特性,并經(jīng)實驗驗證,本文所提出的網(wǎng)絡模型在特征提取過程中,使用Sigmoid作為激活函數(shù)的分類效果要優(yōu)于其他激活函數(shù)。其表達式為:
(8)
多源棧式自編碼器進行竊電檢測的整個算法流程如圖6所示。
圖6 算法流程
首先對輸入的原始數(shù)據(jù)按照缺失值填補、離群點修正、數(shù)據(jù)歸一化等操作依次進行處理。然后通過特征工程,以用戶為單位,分別計算出擴展數(shù)據(jù)一和擴展數(shù)據(jù)二。將處理過的數(shù)據(jù)依次送入混合自編碼網(wǎng)絡,分步訓練,得到每層網(wǎng)絡的預訓練結果以及提取出的數(shù)據(jù)特征。再將數(shù)據(jù)特征送入分類網(wǎng)絡進行預訓練,得到初步的分類結果。最后將整個模型視為分類器,進行整體訓練,微調(diào)整個網(wǎng)絡模型的模型參數(shù),得到最終分類結果。
實驗環(huán)境:使用Windows 10 64位操作系統(tǒng)Python 3.5開發(fā)環(huán)境、Pycharm編譯器、TensorFlow深度學習開放框架、圖像處理單元NVIDIA GTX 1050Ti、Intel Core i5 8th Gen CPU、8 GB內(nèi)存。
實驗數(shù)據(jù):使用國家電網(wǎng)公布的2014年1月1日至2016年10月31日,42 372個用戶的日用電量數(shù)據(jù)[17],其中標明了3 615個用戶為竊電用戶。
在用電數(shù)據(jù)實際采集的過程中,采集系統(tǒng)往往會出現(xiàn)智能電表故障、數(shù)據(jù)傳輸失真、系統(tǒng)維護和數(shù)據(jù)存儲不及時等現(xiàn)象,從而導致獲得的數(shù)據(jù)存在缺失或錯誤。樣本中大量的數(shù)據(jù)缺失會導致數(shù)據(jù)特征不明顯,正負樣本間的數(shù)據(jù)差異變小,從而降低分類模型的查準率和查全率。針對這些實際問題,本文在進行數(shù)據(jù)分析前首先進行了數(shù)據(jù)預處理。
針對原始數(shù)據(jù)中的缺失值,以天數(shù)為橫坐標、數(shù)據(jù)缺失比例為縱坐標,對數(shù)據(jù)的缺失情況進行可視化輸出,如圖7所示。由于數(shù)據(jù)缺失值較多,缺失值的處理對網(wǎng)絡分類結果尤為重要。本文根據(jù)缺失值的不同特點進行區(qū)別處理。
圖7 數(shù)據(jù)缺失值比例
首先,找出數(shù)據(jù)缺失比例超過40%的日期,這些日期本身數(shù)據(jù)缺失量較大,對用戶樣本特征提取的影響較小,因此對這些日期中的缺失值數(shù)據(jù)用0進行填充。對于數(shù)據(jù)缺失較為嚴重的樣本,其數(shù)據(jù)分析意義較小,因此本文刪除用電量數(shù)據(jù)缺失比例超過60%的樣本。對于剩余的數(shù)據(jù),使用取前后平均值的方法對缺失值進行處理,其計算式為:
(9)
式中:xi代表該用戶第i日的用電量;NaN代表空值。
對于記錄或傳輸錯誤的離群數(shù)據(jù),使用“三標準差法則”對數(shù)據(jù)進行處理,具體其計算式為:
(10)
式中:x代表該用戶三年的用電數(shù)據(jù);xi代表第i日的用電量;avg(x)是x的平均值;std(x)是x的標準差。
為了提高計算速度和抑制神經(jīng)網(wǎng)絡對不同數(shù)據(jù)的敏感性,在將數(shù)據(jù)送入神經(jīng)網(wǎng)絡之前,先對數(shù)據(jù)進行了歸一化處理,其計算式為:
(11)
式中:min(x)、max(x)分別代表該用戶三年用電數(shù)據(jù)中的最大值和最小值。
原始數(shù)據(jù)中用電異常的用戶標簽是1,為正樣本,用電正常的用戶標簽是0,為負樣本。將正負樣本分別以4 ∶1的比例隨機劃分為訓練集和測試集。由于正負樣本數(shù)量差距較大,本文在訓練過程中,對正樣本多次使用重采樣的方法,使模型充分學習樣本特征。
根據(jù)原始數(shù)據(jù)標注,本實驗中分類出的異常類別均認定為竊電用戶。由于實驗屬于二分類問題,且模型所訓練的數(shù)據(jù)正負樣本數(shù)量不均衡,不能單純使用分類準確率來衡量模型的特性。為了準確全方面地評價該模型異常檢測性能,本文選擇使用混淆矩陣、查準率、查全率、正樣本準確率、負樣本準確率、整體樣本準確率幾個指標作為衡量模型性能的評價指標。
評價二分類問題的混淆矩陣由TP、FP、FN、TN組成,如表1所示。
表1 混淆矩陣結構
查準率表示所有被檢測為異常的樣本中,實際為異常的樣本所占的比例,其計算式為:
(12)
查全率表示所有實際為異常的樣本中,被檢測為異常的樣本所占的比例,其計算式為:
(13)
一般來說,查準率的值越高,查全率的值越低,反之亦然。此時可以選用Precision和Recall的F1指標來進行度量,其計算式為:
(14)
將本文所提出的多源棧式混合自編器模型(M-SHAE)與同等深度的卷積神經(jīng)網(wǎng)絡模型(CNN)、長短期記憶網(wǎng)絡模型(LSTM)、棧式自編碼模型(SAE)、棧式混合自編器模型(SHAE)進行比較。其中SHAE模型是一源輸入模型,在M-SHAE的基礎上去除了人工特征提取和輸入部分。SAE模型是將SHAE模型中的混合自編碼器替換為自編碼器得到的模型。M-SHAE、SHAE和SAE三種模型在提取到特征后,將特征數(shù)據(jù)送入相同的分類輸出層,然后微調(diào)整個網(wǎng)絡得到最終分類結果。
表2給出了本文方法與其他四種分類方法的混淆矩陣,表3給出了不同模型的分類性能。可以看出,在處理與時間特征相關的數(shù)據(jù)時,長短期記憶網(wǎng)絡的性能要優(yōu)于卷積神經(jīng)網(wǎng)絡。傳統(tǒng)自編碼網(wǎng)絡優(yōu)于其高度抽象的特征概括能力,使其分類性能與長短期記憶網(wǎng)絡基本相當。比較SAE與SHAE的實驗結果可以看出,混合自編碼網(wǎng)絡的查準率和召回率都高于傳統(tǒng)的自編碼網(wǎng)絡,這表明混合自編碼單元所提取的特征提取能力要優(yōu)于傳統(tǒng)自編碼器。整體來看,多源輸入的棧式混合自編碼器的分類準確率最高,由此可以得出在結合特征工程后,多源輸入的網(wǎng)絡結構能夠有效利用不同網(wǎng)絡層級提取的數(shù)據(jù)特征,達到更優(yōu)的分類效果。
表2 神經(jīng)網(wǎng)絡分類器不同模型的混淆矩陣結果
續(xù)表2
表3 神經(jīng)網(wǎng)絡分類器不同模型的分類性能
為進一步比較模型的特征提取性能,使用SVM作為分類器,分別將M-SHAE、SHAE、SAE三種模型提取的特征數(shù)據(jù),送入核函數(shù)為徑向基函數(shù)(RBF)的SVM分類器進行分類。實驗結果如表4所示。
表4 SVM分類器不同模型的混淆矩陣結果
表4給出了SVM分類器下三種模型分類結果的混淆矩陣,表5(保留3位小數(shù))給出了三種模型的分類性能??梢钥闯?SAE模型雖然召回率較高,但準確率和查準率較低。M-SHAE的F1-Score值和準確率都高于另外兩種模型。這表明M-SHAE模型所提取的數(shù)據(jù)特征優(yōu)于其他兩種模型,其特征提取能力更強。
表5 SVM分類器不同模型的分類性能
在特征提取過程中,自編碼器能夠高度非線性地表示出數(shù)據(jù)特征,但其特征表達具有一定隨機性,編碼過程易指向隨機數(shù),從而降低特征表達能力。經(jīng)過改進后的混合自編碼單元融合了去噪自編碼器和稀疏自編碼器的優(yōu)點,添加了輸入噪聲和稀疏性約束,能夠提高網(wǎng)絡特征表達的能力。多源級聯(lián)的棧式網(wǎng)絡結構,使每個輸入源連接的自編碼器不超過4層,在減少梯度消散的前提下,擴展了整體網(wǎng)絡的深度,使得整個網(wǎng)絡獲得了更優(yōu)的分類準確率。但是,從分類效果上比較,查準率和召回率仍有提升空間。實驗分析造成此種現(xiàn)象主要原因是:竊電用戶所占的數(shù)據(jù)比重較小,多次重采樣方法無法完全解決數(shù)據(jù)樣本不均衡的問題;另外樣本整體數(shù)據(jù)缺失值較多,使得樣本間數(shù)據(jù)特征差異較小。數(shù)據(jù)預處理方案有待進一步優(yōu)化。
基于多源棧式混合自編碼器的竊電檢測算法,對自編碼器進行了優(yōu)化,能夠提高自編碼器特征提取的能力,在使用智能算法提取數(shù)據(jù)特征的同時加入了人工提取特征的流程,提高了算法的魯棒性和泛化能力。經(jīng)過真實數(shù)據(jù)集的驗證,該算法能夠有效地提取用戶用電數(shù)據(jù)特征,并取得較高的分類準確率,為竊電檢測領域特征提取方案提供了新的解決思路,同時為其他領域的數(shù)據(jù)特征提取研究提供了參考。