劉月峰,趙瀟瀟
(內蒙古科技大學 信息工程學院,內蒙古 包頭 014010)
在智能電網系統中,電力損耗分為兩個領域,基于發電期間的技術領域電力傳輸固有損耗的技術性損失(TL)和基于輸配電線路損耗的非技術性損失(NTL)。
近幾年來,為了降低非技術損失,許多國內外專家學者對竊電檢測展開了廣泛的研究,提出了許多模型。使用無線傳感器節點、AM 和RFID 標的檢測技術是最早實現檢測的技術之一。然而,大多數的模型硬件設備的成本較高效率較低,不適合作為竊電檢測方案來實施。隨著智能電網的發展,基于機器學習的分類方法近年來引起了專家極大的關注,像模糊聚類和利用局部離群因子算法計算離群因子是常用的無監督的竊電檢測方法。邏輯回歸、支持向量機(SVM)等方法是較為傳統基于機器學習監督學習的檢測方法。但以上大部分傳統方法對竊電行為的檢測精度較低,且不適用于大規模訓練樣本。文獻[1]提出了一種寬而深的卷積神經網絡(convolutional neural network,CNN)結構,以檢測智能電網環境中的電力盜竊行為。文獻[2]利用長短期記憶(LSTM)的特征提取網絡和全連接網絡(FCN)多層特征匹配網絡的組合模型來進行竊電檢測。以上方法的提出進一步提高了用電異常檢測在大樣本情況下的精確度。對于CNN 來說,它雖然在處理大規模并行數據的情況下具有優勢,但在對于時間序列分析問題上較差。LSTM 網絡雖然在處理時間序列問題上效果較好,但對于大規模并行數據的處理還是存在缺陷,即使存在記憶門,隨著序列的增長也無法完全記錄所有信息,并且存在存儲容量過大問題。為了解決以上局限性,我們將目光放在時間卷積網絡(TCN)上,TCN 是基于一維卷積神經網絡且能夠處理時間序列數據的網絡結構[3]。文獻[4]利用TCN 來進行短期負荷概率密度預測。文獻[5]將TCN 進行改進用于文本分類。其分析結果皆優于LSTM 等算法。目前關于TCN 網絡未見將其應用在非技術性損失檢測方面的研究。因此,本文提出了一種基于時間卷積網絡(TCN)的用戶用電異常檢測模型。
時間卷積網絡(temporal convolutional network,TCN)是一種基于卷積神經網絡且能夠處理時間序列數據的網絡結構。該網絡有兩個特點:一是網絡的輸入長度和輸出長度相等;二是TCN 具有時間因果性,即t 時刻的輸出結果只和t 時刻之前的輸入有關系,并不會有漏接的歷史信息。時間卷積網絡的結構主要有三部分:因果卷積層(Causal Convolution)、擴張卷積層(Dilated Convolution)、殘差連接(Residual Connections)。
為了使網絡的輸出與輸入長度相等,TCN 使用一位全卷積網絡(FCN)通過使用0 填充使得每一層隱層輸出序列的長度和輸入序列的長度保持一致。為了避免將來信息的泄露和有漏接的歷史信息,TCN 使用因果卷積,即在卷積中,t 時間的輸出僅與t 時間之前的輸入有關。但存在一個問題:若序列的長度過長,則需要增加網絡的層數來擴展感受野。因此為了降低網絡的復雜性,引入了擴張卷積。
擴張卷積是在標準的卷積中注入空洞,以此來增加感受野。輸入序列X{x1,x2,….,xn},給出的filter{0,…..,k-1},擴張卷積F 在第s 個輸入被定義為:
其中d 代表擴張因子,k 代表濾波器的大小,s-d*i 代表的是過去的方向,f(i)表示卷積核函數。當d=1 時,擴張卷積就為最普通的卷積。當d 的取值大于1 時,擴張因子能夠使頂層的輸出代表更大的輸入范圍,有效地擴大了感受野,也就解決了上面使用因果卷積帶來的問題。另外,可以通過選擇更大的k 和更大的d 來增加感受野,且使用膨脹卷積的每一層的有效感受野為(k-1)d。
文獻[6]首先提出了殘差網絡的概念,有效解決了梯度消失的問題。其計算公式(2)如下:
其中X 為殘差模塊的輸入,F(X)表示經過殘差網絡的最后一個隱藏層后的輸出,Activation 是兩者結合后使用的激活函數,這里使用的是修正線性單元ReLu 函數。并使用一維卷積保證輸入輸出之間張量的尺度相同。如圖1所示,其中曲線表示殘差連接。
圖1 帶有殘差連接的擴張因果卷積的結構
為了更好地完成用戶用電異常檢測,用戶的功耗模式中識別出異常用電行為,本文提出了一種基于時間卷積網絡(TCN)的用戶用電異常檢測模型,主要包括三部分:數據處理、模型訓練以及模型評估。該模型的具體結構如圖2 所示。原始用戶用電負荷數據經過數據預處理方法并進行不平衡數據處理合成新的數據集后,將每一個用戶的用電消耗數據作為一個樣本輸入到網絡中。對網絡進行訓練,最后通過測試數據對模型進行評估。
圖2 基于時間卷積網絡的用戶用電異常檢測模型
在大多數的用電用戶中,真正進行竊電行為的用戶較少,所以數據不平衡現象無法避免。通過對SGCC 的數據集分析,在此數據集中,用電異常用戶的數量明顯少于用電正常用戶的數量,如果使用這種不平衡數據集來訓練模型,所得到的模型存在只能對多數類進行分類對少數類不敏感和模型容易過擬合問題,影響結果的準確性。目前常用的不平衡數據處理方法為隨機欠采樣和隨機過采樣,隨機欠采樣會隨機丟棄多數類條目以減少多數類實例,但是隨機刪除可能會丟棄潛在的重要信息,而其余數據可能無法正確表示總體;隨機過采樣技術復制了少數類,以增加少數實例的數量,但僅僅復制樣本可能會使模型過度擬合。SMOTE 算法則是通過生成綜合數據,不再是復制少數類來平衡數據集,可以避免過度擬合的問題。因此,本文使用SMOTE 算法處理不平衡數據,假設(x1,x2)是少數類的實例,并且如果將其最近的鄰居選擇為(x'1,x'2)然后將數據點合成如下公式(3)所示:
本文所提出的基于TCN 網絡分類模型的結構如圖3 所示。數據集作為輸入X{x1,x2,x3,…,xn},在經過擴張因果卷積計算后,得到輸出通過ReLu 激活函數后得到輸出X{x1,x2,x3,…,xn}。將其作為下一個擴張因果卷積層的輸入并重復上述過程,獲得通過一個TCN 塊的輸出Q(X)。將其進行殘差連接后的數據作為下一個TCN 塊的輸入。在經過多個TCN 塊計算之后,數據經過完整的全連接層,得到最后一層的輸出yL,并通過softmax 激活函數計算后得到預測序列標簽。
圖3 基于TCN 網絡分類模型的結構
本文采用中國國家電網公司(SGCC)提供的竊電數據集,該數據集是由我國超4 萬消費者1035 天的真實用電量數據收集而來,數據集中包含竊電標簽。樣本總數為42372,其中正常樣本數為38757,異常樣本數為3615。通過數據預處理以及數據不平衡處理之后的數據集總計84744 條數據,其中經過SMOTE 算法合成數據后,正常用戶與異常用戶的比例為1:1。將合成后的數據隨機選取20%作為模型的測試集,測試集共16948 條。本文實驗的操作平臺為谷歌colab 平臺,其中CUDA 的版本為10.0,編程語言為python3.7,深度學習框架為Pytorch1.6.0。
為了驗證本文所提出模型的有效性,我們給出了在邏輯回歸LR、支持向量機(SVM)、CNN 模型、LSTM 模型以及本文提出TCN 模型在處理過后測試集下的結果對比,結果如下表1 所示。
從表1 中可以看出,本文中所提出的TCN 模型評價指標結果皆高于較傳統LR、SVM 方法,說明本文所提出的模型在用電異常分類上較傳統方法具有更好的性能,驗證了本文模型在用電檢測領域的可用性。通過與CNN、LSTM 深度學習模型進行對比可以看出,本文所提的模型具有更高的準確性,在非技術性損失方面具有優勢,所以相比于傳統機器學習模型以及常用的深度學習模型,本文提出基于TCN 的模型具有更好的分類效果,進一步證明了本文模型的有效性。
表1 對比實驗結果
本文提出了一種基于時間卷積網絡的用戶用電異常檢測模型。首先,將原始數據進行缺失值處理;然后,為了解決數據不平衡問題,利用合成少數過采樣(SMOTE)技術生成新的數據集;最后,訓練基于時間卷積網絡的檢測模型并進行模型評估。本文將所提模型與傳統機器學習方法中的支持向量機和邏輯回歸方法,深度學習中方法中的CNN 模型、LSTM 模型進行對比實驗,結果表明本文所提出的模型具有較高的準確性。在今后的工作中,將不斷深入用電異常檢測研究,嘗試將TCN 與其他深度學習方法相結合,進一步優化模型,縮短模型訓練時間并提高模型的泛化能力。