張夢楠,李紅嬌
(上海電力大學計算機科學與技術(shù)學院,上海 200090)
竊電檢測是保證電力系統(tǒng)安全運行的基礎(chǔ),有效識別竊電用戶能夠提高電力系統(tǒng)運行的可靠性。智能電網(wǎng)的快速發(fā)展使得電力系統(tǒng)中的電力數(shù)據(jù)倍速增長,竊電手段也變得多樣化,但現(xiàn)有的竊電檢測方法存在分類準確性低和計算開銷大等問題。因此,如何有效提高竊電檢測的準確率具有現(xiàn)實意義。
傳統(tǒng)的機器學習中的分類算法常被用于竊電檢測,如極限學習機(ELM)、支持向量機(SVM)。文獻[5]利用SVM對不同類型的電力數(shù)據(jù)進行竊電用戶的識別,證明了SVM能夠用于竊電檢測。文獻[7]利用粒子群算法(PSO)對支持向量回歸機(SVR)進行優(yōu)化,克服了小樣本的檢測缺陷且改善了效率,但對于大規(guī)模特征的準確率沒有明顯提高。文獻[8]則提出了一種自適應(yīng)增強算法(AdaBoost)和SVM結(jié)合的集成方法,提高了檢測性能和準確率。文獻[9]首先使用決策樹(DT)提取特征數(shù)據(jù),然后采用SVM進行竊電檢測,證實了DT提取特征有助于提高SVM的分類準確率。文獻[10]利用SVM對主成分分析(PCA)降維后的特征進行竊電檢測,結(jié)果表明PCA降低特征維度能夠提高分類精度。上述分析表明,SVM對輸入特征的要求較高,冗余的輸入特征會導(dǎo)致SVM檢測的準確性偏低,因此通常將SVM與其它算法聯(lián)合使用以提高分類精度。
深度學習中的神經(jīng)網(wǎng)絡(luò)模型也被廣泛運用于竊電檢測等方面。文獻[12-13]使用了循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)進行竊電檢測,驗證了神經(jīng)網(wǎng)絡(luò)可以用于竊電檢測。文獻[14]使用實值置信網(wǎng)絡(luò)(RDBN)對不平衡電力數(shù)據(jù)進行竊電檢測,獲得了理想中的檢測結(jié)果。文獻[15]首次利用卷積神經(jīng)網(wǎng)絡(luò)(CNN)中的LeNet-5模型進行竊電檢測,證實了CNN提取特征數(shù)據(jù)可以提高竊電檢測的準確率。文獻[16]使用寬深度卷積神經(jīng)網(wǎng)絡(luò)(WDCNN)分別提取電力數(shù)據(jù)的一維和二維特征數(shù)據(jù),然后組合兩種特征進行竊電檢測,結(jié)果表明檢測效果優(yōu)于普通模型。由上可得,神經(jīng)網(wǎng)絡(luò)算法自主學習特征數(shù)據(jù),有利于提高檢測精度。
綜合以上分析可知,SVM的分類思想簡單且效果較好,但對于大規(guī)模特征的分類存在困難。而神經(jīng)網(wǎng)絡(luò)可以提取特征數(shù)據(jù),減少特征維數(shù),但傳統(tǒng)竊電檢測方法對二維特征的研究較少。為此,提出一種基于DCNN和SVC的竊電檢測方法。考慮到傳統(tǒng)方法對一維電力數(shù)據(jù)進行竊電檢測的局限,將數(shù)據(jù)預(yù)處理過后對電力數(shù)據(jù)進行了矩陣化,突出數(shù)據(jù)的周期特征。然后改進DCNN算法對大規(guī)模的二維電力數(shù)據(jù)進行特征提取,有效減少了特征的輸入維度,克服SVC對大規(guī)模數(shù)據(jù)的分類局限性。將DCNN和SVC進行組合,不僅綜合了DCNN自動提取特征和SVC分類效果好的優(yōu)點,還避免了SVC對輸入數(shù)據(jù)的直接特征提取,有效提高了分類的準確率。使用國家電網(wǎng)公布的開放數(shù)據(jù)集進行仿真,驗證了提出竊電檢測方法的有效性。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)是一種多層神經(jīng)網(wǎng)絡(luò),一般由輸入層、卷積層、池化層、全連接層、輸出層組成。卷積層利用不同大小的卷積核和偏置對輸入數(shù)據(jù)進行局部特征的提取,再應(yīng)用激活函數(shù)進行對局部特征進行非線性映射,常用的有sigmoid、tan h、Relu函數(shù)。如果經(jīng)過卷積層處理的特征維度依舊較大,可以選擇池化層進行降維,主要是為了避免結(jié)構(gòu)出現(xiàn)過擬合的現(xiàn)象。常用池化法有最大池化、平均池化。全連接層既可以通過權(quán)值將所有局部特征全部整合成整體特征,也能在整個CNN構(gòu)造中起到“分類器”的作用。通過邏輯函數(shù)對整體特征進行激活,得到分類結(jié)果。最后,輸出層則會輸出分類標簽。
CNN作為最基礎(chǔ)的深度學習算法,對特征數(shù)據(jù)的提取具有良好的學習效果。傳統(tǒng)竊電檢測算法基本是對一維電力數(shù)據(jù)挖掘數(shù)據(jù)特征,而深度CNN可以利用二維卷積層對電力數(shù)據(jù)提取局部周期特征,從而提高竊電檢測的分類精度,為此本文使用DCNN算法提取出電力數(shù)據(jù)的重要二維特征,其詳細使用過程在第3部分討論。
w
是決策邊界的法向量,b
是偏移量,ε
是懲罰函數(shù),最優(yōu)超平面可以表示為
(1)
式(1)是一個含有不等式的優(yōu)化問題,選擇拉格朗日乘數(shù)法進行求解。因為電力數(shù)據(jù)線性不可分,所以使用非線性變換將非線性分類問題轉(zhuǎn)化為高維空間內(nèi)的線性分類問題。通常由內(nèi)核函數(shù)實現(xiàn)非線性變換,如RBF、sigmoid、多項式內(nèi)核。
非線性SVC分類步驟如下:
輸入:T
=(x
,y
)、(x
,y
)…(x
,y
),其中x
∈R
,y
∈{+1,-1},i
=1,2,…N
;輸出:最優(yōu)分離超平面;
1) 選擇合適的內(nèi)核函數(shù)K
(x
,z
)、懲罰函數(shù)C
,構(gòu)造最優(yōu)分類超平面:

(2)



(3)
3) 求解出內(nèi)核函數(shù)對應(yīng)的最優(yōu)超平面:

(4)
綜上所述,SVC利用核函數(shù)能夠有效解決非線性分類問題,為此本文將其用于竊電用戶的識別,從而提高檢測精度,其詳細使用過程在第3部分。
3.1.1 用電量周期性分析
從國家電網(wǎng)的公開數(shù)據(jù)集中選取一個正常用戶和一個竊電用戶,分別畫出一個月內(nèi)用電量按日期和按周數(shù)排列的波動圖,如下圖1、2所示。

圖1 正常用戶用電量波動圖

圖2 竊電用戶用電量波動圖
圖1(a)是正常用戶用電量按日期排列的波動圖,如圖所示數(shù)據(jù)在不斷變化,但較難觀察變化的周期性。因此畫出每周的用電數(shù)據(jù)進行對比,如圖1(b)所示正常用戶每周電力數(shù)據(jù)的變化具有相似性。例如,每周三的用電數(shù)據(jù)基本達到最高,每周日的用電數(shù)據(jù)達到最低(第四周的周五用電數(shù)據(jù)最低)。
同樣,圖2(a)是竊電用戶用電量按日期排列的波動圖,從中沒有看出數(shù)據(jù)變化的周期性。因此,畫出每周用電量對比圖。如圖2(b)所示前兩周的用電量普遍偏高,每周日達到最高值。第三周開始,用電數(shù)據(jù)有大幅度的下降,相對前兩周經(jīng)常保持在低水平。
從圖1與圖2的對比中得出,將數(shù)據(jù)按周數(shù)排列更容易看出正常用戶用電量的周期特征。相比正常用戶明顯的周期性,竊電用戶的用電量周期性較小,甚至沒有。這一結(jié)論也被不同國家和地區(qū)的數(shù)據(jù)集所證實。因此,在使用卷積神經(jīng)網(wǎng)絡(luò)對用電數(shù)據(jù)進行特征提取時,考慮將一維用電數(shù)據(jù)轉(zhuǎn)化為按周排列的二維數(shù)據(jù)格式。
3.1.2 數(shù)據(jù)預(yù)處理與矩陣化
在DCNN運算過程中,數(shù)據(jù)通常為矩陣的形式。因此在數(shù)據(jù)送入輸入層之前,將一維用戶數(shù)據(jù)升成二維。詳細步驟如下:
1)在電能傳輸過程中,數(shù)據(jù)傳輸層損壞、智能電表被破壞等問題會導(dǎo)致電力數(shù)據(jù)存在一些缺失值或離群值。
利用插值法填補缺失值:

(5)
式中:NaN
代表空集合。利用三σ
經(jīng)驗法修正離群值:
(6)
式中:avg
(x
)代表的x
平均值,std
(x
)代表x
的標準偏差。2)為了減少不同量綱對竊電檢測的影響,且考慮到DCNN對數(shù)據(jù)的要求,使用MAX-MIN方法對數(shù)據(jù)進行歸一化處理:

(7)
式中:x
是歸一化后的特征數(shù)據(jù),x
是原始特征,x
和x
分別是輸入特征中最大值和最小值。3)對m
個用戶1×n
格式的一維向量補零。如果n
不能整除7,則補零到能整除7為止。然后將補零后的一維向量轉(zhuǎn)換成格式為7×(n/
7)的二維矩陣。DCNN-SVC的網(wǎng)絡(luò)架構(gòu)分為兩部分,DCNN提取特征數(shù)據(jù),SVC對特征數(shù)據(jù)進行分類。如圖3所示。

圖3 基于DCNN和SVC的竊電檢測模型
1)輸入層:升維后的三維矩陣被送入輸入層,此時輸入層數(shù)據(jù)大小為m×7×(n/7)。
2)卷積層:卷積核與三維矩陣進行局部的連接,通過卷積運算提取局部特征數(shù)據(jù),并選擇Relu作為激活函數(shù)。三層卷積層的步長都是1,所以經(jīng)過卷積后生成了四維特征,大小為m×1×([n/7]-6)×c,c為特征通道。
3)池化層:使用最大值池化法,從過濾器覆蓋的數(shù)據(jù)中選取最大值進行采樣,保留顯著特征并降低維數(shù)。隨后,將每位用戶的三維特征按序展開成一維向量送入全連接層。
4)全連接層:在全連接層中,每個神經(jīng)元與權(quán)值相乘并加上偏置,將局部特征整合成最終特征向量。本文的全連接層只起到整合特征的作用,因此輸出時不使用SoftMax等激活函數(shù)進行映射。
5)SVC層:當DCNN模型結(jié)束訓練,全連接層輸出的一維特征作為SVC的輸入向量。由于特征線性不可分,使用RBF內(nèi)核函數(shù)將非線性特征映射到高維空間,構(gòu)造最優(yōu)超平面對輸入特征進行分類。
在全連接層和SVC之間設(shè)置一層隱藏輸出單元,其作用是將全連接層輸出的最終特征等價為SVC的輸入向量。DCNN提取出的最終一維特征向量從隱藏單元輸出后作為SVC的輸入向量繼續(xù)進行分類訓練,直到實現(xiàn)最優(yōu)的訓練模型。訓練結(jié)束后,使用最優(yōu)DCNN-SVC訓練模型對測試集進行竊電用戶的識別。
在模型訓練過程中,損失函數(shù)選擇交叉熵函數(shù)。使用Adam對模型進行優(yōu)化,不僅參數(shù)可以達到最優(yōu)值,并能夠設(shè)計自適應(yīng)學習率抑制梯度稀疏。
最終竊電檢測流程圖如圖4所示。

圖4 基于DCNN和SVC的竊電檢測模型
詳細步驟如下:

K
與輸入特征進行卷積映射,輸出m
個三維特征X
(i
=1,2,…,c
)。
(8)
式中:X
是第i
層的特征,K
是第i
層卷積核,b
是第i
層偏置向量。3)使用最大池化對卷積層提取后的特征進行降維。

(9)

y
=y
-1·ω
+b
(10)
式中:y
、ω
、b
分別是第l
層全連接層的神經(jīng)元、權(quán)值、偏置,全連接層的層數(shù)將在第四部分進行討論。5)隱藏輸出單元將全連接層輸出的最終特征等價為SVC的輸入向量。
x
=y
(11)
式中:x
是SVC
輸入向量,y
是全連接層輸出特征。6)SVC利用RBF核函數(shù)構(gòu)建最優(yōu)超平面,對竊電用戶進行識別。RBF表達式為:

(12)
假設(shè)超平面為f
(x
),最后的分類決策函數(shù)為:
(13)
其中:α
是拉格朗日乘子。以國家電網(wǎng)公布的開放數(shù)據(jù)集作為實驗數(shù)據(jù)集,原始數(shù)據(jù)中主要包含了42372位用戶從2014年1月1日到2016年10月31日一共1035天的真實用電數(shù)據(jù),數(shù)據(jù)每天采集一次,每位用戶數(shù)據(jù)向量大小為11035。由于1035不能整除7,因此對特征補零,使每位用戶矩陣大小變成7×148,再將特征升維成三位矩陣作為模型的輸入,矩陣大小為42372×7×148。
竊電檢測方法采用python語言實現(xiàn),在Keras深度學習框架和Sklearn庫下實現(xiàn),所有實驗均在CPU為Intel Core i5-8250的電腦上完成。
為了評估檢測方法的有效性,采用曲線下面積(AUC)和正確性(ACC)兩種評價方式。
1)AUC量化了ROC曲線表達的分類能力,AUC越大,分類精度越高。

(14)
式中:Rank
表示樣本i
的等級;M
表示陽性樣本的總數(shù);N
表示陰性樣本的總數(shù)。2)ACC
是樣本分類正確的概率。
(15)

(16)

1)迭代次數(shù)的設(shè)置
DCNN訓練是否完成由迭代次數(shù)(epoch)決定。因此,為了確定DCNN的訓練次數(shù),對不同的迭代次數(shù)進行實驗對比。由于數(shù)據(jù)集規(guī)模較大,迭代次數(shù)過多容易導(dǎo)致時間過長,因此限定迭代次數(shù)在[0,100]內(nèi)。其中,3層卷積層的卷積核個數(shù)都設(shè)置為10,1層池化層的個數(shù)為2*2。最終,不同的epoch的分類結(jié)果如表1所示。

表1 采用不同epoch的分類結(jié)果
從表1可知,隨著迭代次數(shù)的增加,分類精度明顯增高,損失函數(shù)也明顯減小。

圖5 分類精度/損失函數(shù)epoch的變化
如圖5所示,當?shù)淮螘r訓練模型不穩(wěn)定,分類精度只有55%,隨后呈陡峭化的上升趨勢;當?shù)螖?shù)達到7次時,分類精度能夠接近90%,隨后分類精度呈平穩(wěn)化的上升趨勢;直到迭代次數(shù)接近100時,分類精度也達到了92.61%。同時在迭代次數(shù)在[0,5)內(nèi),損失函數(shù)值以陡峭化的變化減少;迭代次數(shù)在(5,100]內(nèi),損失函數(shù)也平穩(wěn)地下降,直到迭代次數(shù)接近100次,損失函數(shù)值也達到0.2716,還有下降趨勢。因此確定DCNN的迭代次數(shù)為100。
2)全連接層參數(shù)的設(shè)置
全連接層層數(shù)不同會導(dǎo)致最終特征數(shù)據(jù)不同,因此對不同全連接層數(shù)的模型進行實驗,進而確定分類性能最優(yōu)的全連接層層數(shù)。所使用的不同模型的參數(shù)以及不同全連接層結(jié)構(gòu)的模型的分類結(jié)果見表2。
表2中,F(xiàn)CL(n)表示全連接層有n層。Conv表示卷積層,1、2、3是卷積層的層數(shù),(10*3*3)表示10個卷積核的格式為3*3。Maxpool是最大池化層,(2*2)是濾波器窗口的大小。Fcl表示全連接層,1、2、3、4表示全連接層的層數(shù),100、50、10、2分別對應(yīng)不同全連接層的大小。

表2 采用不同全連接層結(jié)構(gòu)模型分類結(jié)果
從表2可知,2個全連接層結(jié)構(gòu)的DCNN-SVC模型的分類精度最高。

圖6 不同全連接層結(jié)構(gòu)的分類精度

圖7 不同全連接層結(jié)構(gòu)的損失函數(shù)
如圖6、7所示,2個全連接層結(jié)構(gòu)的DCNN-SVC模型具有良好的分類精度,而且損失函數(shù)一直呈現(xiàn)下降的趨勢,這也說明DCNN-SVC模型中過擬合現(xiàn)象得到抑制,具有良好的泛化能力。當?shù)螖?shù)小于10次時,只有1個全連接層結(jié)構(gòu)的分類精度甚至沒有達到91%。雖然剛開始訓練時2個全連接層結(jié)構(gòu)的分類精度有所下降,但在迭代次數(shù)大于5時,分類精度穩(wěn)定上升并居于第一,最高達到了93.04%。因此確定DCNN-SVC結(jié)構(gòu)最終的全連接層為2層。
3)不同算法的竊電檢測結(jié)果
為了驗證DCNN-SVC竊電檢測方法的性能,分別使用Wide-Deep-CNN 算法、CNN算法、SVC算法、邏輯回歸算法進行竊電檢測,并對比實驗結(jié)果,如表3所示。

表3 采用不同算法的竊電檢測結(jié)果
從表3可知, DCNN-SVC模型的竊電檢測結(jié)果比WDCNN、CNN、SVC、邏輯回歸等模型精度要高。所提方法相比WDCNN、CNN、SVC、LR在AUC指標上分別上升13.93%、15.67%、17.82%、22.44%;在ACC指標上分別上升了0.66%、1.88%、9.84%、12.78%。一方面是因為本文的模型利用DCNN對按周排列的二維數(shù)據(jù)進行了建模,提高了DCNN特征提取的性能。另一方面,相比較單獨使用SVC進行竊電檢測,本文模型利用DCNN提取特征數(shù)據(jù),充分發(fā)揮了DCNN的自主學習特征的優(yōu)勢,大大減少了SVC的輸入特征維數(shù),提高了檢測的精度。而且,相較于WDCNN和CNN的檢測方法,本文模型使用SVC分類器更改DCNN中可訓練分類器來實現(xiàn)竊電用戶的識別,進一步提高了竊電檢測的精度。綜上所述,采用DCNN-SVC模型對大規(guī)模用電數(shù)據(jù)進行竊電檢測優(yōu)于其它模型的分類效果。
為了提高電網(wǎng)企業(yè)中對用戶竊電行為檢測的準確率,本文提出了一種基于DCNN和SVC的竊電檢測方法,主要開展了以下的研究:
1)考慮到用戶電力數(shù)據(jù)的周期性,對一維電力數(shù)據(jù)按周排列并進行矩陣化,減少電力數(shù)據(jù)的規(guī)模并突出了周期特征。
2)通過對不同全連接層配置的模型進行對比實驗來改進DCNN模型,選擇最優(yōu)模型提取二維特征數(shù)據(jù)。
3)將DCNN和SVC進行組合,利用DCNN對大規(guī)模數(shù)據(jù)進行特征提取,SVC則從提取的最終特征中識別竊電用戶。降低了SVC輸入特征的維數(shù)和運算復(fù)雜度,并提高了竊電檢測的準確率。
以國家電網(wǎng)公布的公開數(shù)據(jù)集進行仿真,實驗數(shù)據(jù)顯示提出的方法在AUC指標上提升了22.44%,在ACC指標上最大提升了12.78%。結(jié)果表明提出的方法不僅能夠提取出重要的二維特征,而且更加準確地識別出竊電用戶。