李 濤 朱永利
(華北電力大學控制與計算機工程學院 河北 保定 071003)
智能電網的飛速發(fā)展導致電力設備在線監(jiān)測數據量正在呈現指數形式的增長。傳統(tǒng)的數據處理方式不能夠達到當今智能電網從海量數據中快速收集和分析數據的要求,這種情況會對電力設備在線監(jiān)測系統(tǒng)的功能方面上提出了更加嚴格的要求。因此,在Spark平臺實現對局部放電類型快速高效的識別并進行診斷對電力設施的安全性和穩(wěn)定性有著重大的意義。
目前神經網絡[1]、支持向量機[2-3]、聚類算法[4]等多種方法運用到放電信號的分類中,但以上所提出的算法都有著各自的一些問題。其中,人工神經網絡具有收斂速度慢、過擬合、網絡結構難以確定等問題[5]。支持向量機(Support Vector Machine,SVM)算法在處理多分類問題時較為復雜[6],對大數據進行處理的過程中會造成大量的計算負荷。聚類方法在樣本較大時存在分類效果差[7]。而以上的方法都沒有考慮到原始信號中所提取的特征向量間存在關聯。針對上述問題,Raghuraj等[8]提出了基于變量預測模型的模式識別方法。變量預測模型模式識別方法利用訓練數據間的關聯創(chuàng)建數學模型,然后對測試數據進行測試并且利用最小特征參數預測誤差值實現樣本間的分類。這種方法優(yōu)勢在于可以對非線性多分類問題進行處理并且防止了神經網絡和SVM中結構和參數選擇問題。
當前MapReduce分布式編程模型已經普遍應用于電力行業(yè)中的大數據處理。但Hadoop在HDFS上重復進行讀寫操作造成較高的磁盤I/O負荷和時間消耗不能滿足數據處理的實時性要求。Spark[9-10]和MapReduce相比具有高效易用、支持DAG和Java、Scala、Python、R四種語言和分布式內存計算等優(yōu)點,消除了MapReduce在計算時因重復讀寫磁盤帶來的消耗。例如文獻[11]將基于Spark的機器學習模型應用于大數據流以進行健康狀況預測,圍繞Apache Spark引擎構建了可擴展的實時健康狀況預測系統(tǒng),并且將該引擎在云上進行了測試和部署,并在其中將模型運用到了流數據。如文獻[12]將Hadoop、Spark和Flink平臺的性能進行了對比,Spark與其他兩個平臺綜合比較下性能最佳。在大規(guī)模集群下,Spark計算框架在WordCount和K-Means算法中獲得了最佳的結果。如文獻[13]為網上學習平臺開發(fā)了分布式課程推薦系統(tǒng),它旨在使用關聯規(guī)則方法發(fā)現學生活動之間的關系,以幫助學生選擇最合適的學習材料。研究結果表明Spark的內存內計算是最快且可擴展的解決方案,提出的系統(tǒng)可以被應用并容易地融入其他學習平臺中。
綜上所述,本文采取將并行化VPMCD算法應用到Spark平臺上構造變量預測模型(VPM),將此模型應用到了局部放電信號的模式識別并且完成了對放電類型的快速分類的實現。
本文采取特征向量X=[X1,X2,…,Xp]定義某種類別的局部放電信號,特征向量包括p個不同的特征值以及其他特征對Xi影響值(Xj;j≠i)。這些局部放電信號的特征量可能是一對一的關聯:X1=f(X2)或一對多的關聯:X1=f(X2,X2,…)。對VPMi模型進行數學訓練,以反映不同故障之間的相互關聯,并用于預測測試樣本屬于哪個故障類別。
本文采用線性(L)、線性交互(LI)、二次(Q)和二次交互(QI)等模型形式的四種多項式模型類型:
(1)
(2)
(3)
(4)
式中:r(r≤p-1)是模型階數。
以p個特征值分類問題為例,變量預測模型可以利用預測變量Xj(j≠i)預測變量Xi,其定義如下:
Xi=f(Xj,b0,bj,bjj,bjk)+e
(5)
(1) 通常,假設訓練樣本具有g個不同的類,每個類擁有nk(k=1,2,…,g)個訓練數據。總集合為N[n×p;g],其中p為特征向量維數。讀取訓練集N。
(4) 令k=k+1并重復步驟(3)直到k=g,然后停止。
VPMCD模型訓練和測試的算法流程如圖1所示。
圖1 VPMCD算法流程
本文所用的數據是對以上四種放電模型所產生的局部放電信號進行特征提取收集到的數據。所收集原始信號的頻率為40 MHz,帶寬為40~300 kHz,選擇50個工頻周期的信號作為一個統(tǒng)計樣本。4類放電模型如圖2所示。
(a) 電暈放電 (b) 針板放電
(c) 板對板放電 (d) 懸浮放電圖2 四種局部放電模型
采取局部放電相位分析(PRPD)方法對以上四種放電類型放電信號的φ-q-n圖譜的PRPD特征進行提取并構造特征向量。每類放電收集到400個樣本,總共收集到1 600個樣本,選擇樣本中的1 000個樣本為訓練樣本,而剩余的600個樣本成為測試樣本。對各放電類型的φ-q-n圖譜分別提取11維特征分別作為特征向量輸入到VPMCD中實現分類識別,提取的特征如表1所示?;赑RPD的特征提取的具體內容如文獻[14-15]所述。
表1 PD信號的統(tǒng)計特征
Spark平臺存在三種可行的并行化編程方法,分別是數據并行、任務并行、數據并行和任務并行結合等三種方案。數據量的持續(xù)增長會導致單機環(huán)境下訓練數據時效率降低。VPMCD在訓練不同數據的實驗過程中數據相互獨立,而且數據的處理的次序對結果無影響。因此,本論文采取將數據部署到多個節(jié)點進行數據的并行處理,可以減少訓練時間,大幅度提高處理數據的效率。
本文采取稀疏矩陣存儲方式對數據進行存儲,使用此方式的優(yōu)勢在于計算速度快,并且能夠節(jié)省數據的儲存空間,讀取數據較為方便。
數據處理步驟如下:
(1) 所采集的特征向量數據導入HDFS(Hadoop Distributed File System)中并將數據讀入文件并創(chuàng)造RDD數據切片。
(2) 為獲取實驗所需的訓練集和測試集,首先通過collect()函數得到各種故障類的數據數量,其次使用map()和split()函數將數據進行劃分。
(3) 采用cartesian()和filter()函數對數據矩陣進行計算進而獲取每個樣本特征值的參數模型。
(4) 通過reduce()等相關函數計算最小預測誤差并且計算后獲取故障類型的最佳預測模型。
(5) 最后將最優(yōu)化VPM模型參數保存到HDFS文件系統(tǒng)中。
數據流程如圖3所示。
圖3 數據流程
本文所涉及的廣播(Broadcast)變量屬于Spark計算框架中共享變量中的一種,而廣播變量的優(yōu)勢在于將只讀副本分給各個Executor而不是給所有的Task分發(fā)新副本,在很大程度上減少了變量所產生的副本和Executor的內存開銷。在進行并行計算過程中,隨著數據量和節(jié)點數的增多,各個節(jié)點間的數據交換和移動將會導致通信開銷的增長。
本文采取SparkContext.broadcast()來使用廣播變量對節(jié)點間數據進行優(yōu)化,計算過程中在每個節(jié)點上存有只讀變量,Spark計算框架對廣播變量的優(yōu)化節(jié)約了內存空間,對數據的處理效率和全局的處理速率進行了提升。廣播變量所定義的函數原型為:
def broadcast[T:ClassTag](value:T):Broadcast[T]
本文為了有效地提高對放電類型的快速識別能力,提出在Spark計算框架下局部放電信號模式識別的并行化方法。算法流程如圖4所示。
圖4 算法流程
算法流程如下:
1) 配置Spark環(huán)境,Spark計算框架在內存中完成計算減少了對HDFS重復讀寫。
2) 將采集到的數據存入到HDFS系統(tǒng)當中,構造訓練集和測試集。
3) 從HDFS中將數據載入內存,轉換為RDD形式。
4) 采取變量預測模型模式識別中的四種數學模型對帶標簽的訓練數據進行訓練,得到參數,進而形成診斷分類模型。
5) 將訓練好的模型對測試集分類進而確定放電類型。
本文在實驗室搭建的Spark集群共設置6個節(jié)點,1個主節(jié)點(MasterNode)節(jié)點和5個從節(jié)點(SalveNode),由千兆交換機構成一個內部網絡。主節(jié)點配置CPU為i3- 2120 3.30 GHz,內存3 GB,硬盤250 GB。從節(jié)點CPU為E5- 2609 v2 2.50 GHz,內存7 GB,硬盤300 GB。平臺采取YARN Cluster模式進行部署。各個節(jié)點的操作系統(tǒng)為CentOS- 7,Hadoop的版本為Hadoop2.9.2,Spark的版本是Spark2.3.0。
實驗在單機情況下采取在MATLAB平臺上分別使用BP神經網絡、SVM和VPMCD對隨機選取的測試樣本進行測試,以此進行算法正確識別率的對比。本實驗在聯想電腦上進行操作,相關配置:CPU為i5-8250U,內存為8 GB,64位Windows 10操作系統(tǒng),編程環(huán)境為MATLAB R2018a。對樣本集中各類放電類型隨機選擇150個為訓練樣本,對所有測試集進行測試后分類的結果如表2所示。
表2 PD信號識別的準確率(%)
可以看出,VPMCD算法與BP神經網絡和SVM相比較下具有更高的準確率、實驗證明變量預測模型模式識別算法有較高的正確識別率、更好的識別效果。
(1) 集群環(huán)境和單機環(huán)境訓練時間的對比。集群環(huán)境下的實驗需要對樣本數據進行隨機復制操作。因電力設備故障樣本屬于小樣本,樣本數量有限,通過對已采集的數據進行大規(guī)模動態(tài)隨機復制,將數據量從幾百條增至百萬條。本實驗在集群環(huán)境和單機環(huán)境下的訓練時間的對比如圖5所示。
圖5 集群和單機環(huán)境下運行時間的對比
可以看出,實驗所用的數據規(guī)模相對少的環(huán)境下,單機環(huán)境下的處理速度較快于集群處理速度,這是因為Spark在分塊和任務調度方面耗費了一些時間,所以導致并行處理效率略低于串行處理。但是隨著數據規(guī)模從十萬條逐步擴大到數十萬條,集群環(huán)境下的執(zhí)行時間要明顯低于單機環(huán)境下的執(zhí)行時間,由此可看出并行處理具有較為顯著的優(yōu)勢。
(2) 加速比與節(jié)點間的關系。Spark計算框架能夠對大量數據進行快速處理,而且Spark的處理能力與數據量和集群的節(jié)點數相關聯。加速比[16]不僅能對Spark系統(tǒng)的性能和成效進行分析,還可以將并行環(huán)境和串行環(huán)境下的運行速度進行定量的對比分析。
本實驗的訓練數據分別采用50 MB、512 MB、1 024 MB的加速比進行比較。所得結果如圖6所示,數據規(guī)模較小時,加速比隨著節(jié)點數的增多反而降低,進而證明本并行VPMCD適合大規(guī)模數據處理。數據量較大時,相同的數據規(guī)模下加速比隨著節(jié)點數的增多而提升,節(jié)點數相同時,加速比隨著數據量的擴充而提高,表現出Spark平臺對大規(guī)模數據處理的優(yōu)良性能。
圖6 不同數據下加速比和節(jié)點數的關系
傳統(tǒng)的局部放電模式識別方法難以處理海量的監(jiān)測數據,難以滿足智能電網的需求,本文將Spark計算框架運用到變壓器海量數據監(jiān)測上,對放電信號提取其φ-q-n圖譜的PRPD特征構成相關特征向量作為實驗樣本,并行實現VPMCD算法完成了放電類型的分類。對實驗結論進行詳細的分析,可以表明變量預測模型模式識別方法的識別精度高于SVM和BP神經網絡模型,數據規(guī)模較大時,Spark并行處理數據速度遠快于傳統(tǒng)的串行處理方法。