姜 遼
(陜西綜合能源集團有限公司,陜西 西安 710000)
通過對數據的統計,選擇具有噪聲的基于密度的聚類方法(Density-Based Spatial Clustering of Applications with Noise,DBSCAN)[1]。DBSCAN 是根據數據的相似度來判定樣本的類別,由于同一類型的資料抽樣分布范圍非常相近,如果該數據的附近有一個類似樣本,那么根據該模型的密度可以將這些樣本劃分成一個集群。與K-means 方法相比,DBSCAN 無須輸入類型K就能找到任何類型的聚類[2]。
DBSCAN 具有以下優勢:(1)對于任何形式的密集資料集合都能進行聚類;(2)能夠在集群過程中發現離群值,不會對異常值產生影響;(3)聚類的結論沒有任何偏差。
DBSCAN 存在以下不足:(1)當采樣組的濃度不一致且群組間隔有很大差別時,聚類的品質較差;(2)如果一個樣本集的數量很大,則聚類收斂的時間會比較久,此時可以搜索最近鄰建立的KD 樹或者球樹進行規模限制;(3)與常規的聚類相比,調參的精度略高,參數的不同會使最終的聚類結果產生顯著差異。
長短時記憶網絡(Long Short-Term Memory,LSTM)是循環神經網絡(Recurrent Neural Network,RNN)的一種改良,可以很好地解決RNN 算法中存在的漸近衰減問題[3]。LSTM 模型的神經元包括4 個模塊,即記憶細胞(Cell)、輸入門、遺忘門以及輸出門。Cell負責存儲留在神經元中的歷史信息,輸入門負責決定Cell 將接受的輸入數據,遺忘門負責控制Cell 中的歷史數據丟棄量,輸出門負責決定輸出的數據[4]。
LSTM 是一種類似于RNN 的逆向傳輸網絡,主要包括以下3 個部分。(1)對各神經元沿正向的輸出數值進行運算。(2)對各神經元錯誤項目的數值進行逆向運算。與RNN 相似,LSTM 錯誤的逆向傳輸也包含2 種不同的方法。一種是沿著時間的逆向傳輸,也就是從t時刻開始推算出各點的錯誤項;另一種方法是將錯誤項推廣到更高的層次。(3)對各加權的誤差率按照各自的錯誤項目來進行權重計算[5]。
針對目前的電力通信運行狀況,采用DBSCAN與LSTM 來進行異常數據自動辨識。采用DBSCAN 算法對經過分析和基礎處理后的數據進行自動分析,然后按相似度進行密度聚類,獲得離群數據,即異常數據。LSTM 需要預先通過一系列的數據進行訓練和學習,根據所獲得的變異規則對權重因子進行校正,使得神經網絡處于最佳的記憶狀況,從而對異常數據中的特定異常值進行有效判定。使用經過訓練的LSTM,將判斷為非正常狀態的時間序列數據作為其輸入,然后對前面n段進行預測。在LSTM 中,將判斷為異常的時序數據作為其輸入,設定最優輸入神經元個數為n、最優輸出神經元個數為1,即連續將先前n組的最大值輸入到LSTM 中,從而得到下一組的結果。在此基礎上,將LSTM 的預報結果設定為一個精確數值,同時設定一個上下浮動的臨界點,根據上下浮動的閾值來判定序列數據對應的實測值。如果超過該閾值,則該結果被認為是一個離群點。LSTM 的預測值作為修正值繼續往前預測,直至序列數據運行結束。
在密度聚類處理中使用DBSCAN,實際情況下若有特殊的異常值要求或根據評分來選擇異常數據點,可使用局部離群因子檢測(Local Outlier Factor,LOF)算法替代上述步驟,其余各部分均不變。
本試驗使用Python 編程語言,集成開發環境(Integrated Development Environment,IDE)為Eclipse Pydev,在此基礎上編制程序和算法。Numpy 支持多維數組和矩陣操作,為數組操作提供了許多數學功能,是Python 的一種擴充程序庫。Pandas 包含許多類庫和某些標準的數據模式,為大規模的數據集處理工作提供了必要工具。Matplotlib 是一個Python 2D 繪圖庫,提供多種不同的打印和跨媒體交互環境,能夠產生高品質的圖像。Sciki-learn 是一種用Python 語言來完成的機器學習算法,能夠完成一些常見的數據預處理、分類、回歸、降維以及模型選擇等任務。TensorFlow是一種開放源碼的機器學習平臺,常用于機器學習和深層神經網絡領域。
在公開的Moore 數據集上驗證電力通信異常數據檢測算法。利用pandas 包中的describe 函數和info 函數來初始觀測實驗數據,從而確定該數據的大體分配和該離散數值的尺寸分配。其中,info 函數主要介紹數據集各列的數據類型,明確數據是否為空值及內存占用情況;describe 函數主要介紹數據集各列的數據統計情況,包括最大值、最小值、標準偏差等。將一天中基本為0 的采樣數據剔除,以確保資料的完整。將所有數據中的缺失值進行均值填充,全部用Float格式的字符串進行處理,以確保其正確性。對資料進行Shape 處理,使資料的維數一致,確保以后的模式能夠平穩運行。將時間序列的數據按一定的時間長短分割,并加以存儲,從而為LSTM 的訓練提供一定的資料。
3.2.1 DBSCAN 實驗分析
通過DBSCAN 聚類尋找異常點,一般都具有聚類特征。實驗中隨機抽取資料,并對實驗隨機獲取的數據進行測試,得到聚類結果如圖1 所示。

圖1 數據聚類效果
聚類的效果主要取決于半徑的選擇,如果半徑過小,則會出現很多不能聚集的離群點;如果半徑過大,則會導致分散的區域大量聚集在一起。實際使用過程中,使用者可以依據實際需求選擇符合要求的參量,從而得到合適的聚類分區。通過對上述各種參量的聚類結果進行比較,當需要將局部稠度點聚集為若干個集群時,設置最小包含點數閾值(MinPts),通過調節半徑的取值使其變小,根據上述要求生成數量眾多的簇,但隨之而來的是數目眾多的散亂離群點。為了解決離群點問題,可以采用二次聚集的方法來降低群體數量,并將這些離散的個體按一定的比例分布到特定的群體。當需要較大的集群時,可以將半徑的數值設置較大,從而產生小的集群和小的孤立點。
3.2.2 LSTM 實驗分析
根據試驗資料的特點,選取經過DBSCAN 模式辨識的異常離群點,作為異常數據。對于每個異常數據包含的時間點序列數據,連續選取前10 個數據點作為LSTM 網絡的輸入,即將輸入的時間序列長度設置為10,將輸入維設置為1,將隱含層中的細胞個數設置為8。激活函數為sigmoid 函數,輸出的激活函數為tanh 函數。根據LSTM 前向計算和反向傳播算法,需要初始化一系列矩陣和向量。這些矩陣和向量有2類用途,一類用于保存模型參數,另一類用于保存各種中間計算結果,以便反向傳播算法使用,其中包括各個權重對應的梯度。
通過前向傳播Forward 方法實現長短期記憶LSTM 的前向傳播計算,通過反向傳播Backward 方法實現長短期記憶LSTM 的反向傳播計算。值得一提的是,與Backword 相關的內部狀態變量事實上是在調用Backward 方法后才開展初始化工作。如果長短期記憶LSTM 只是用于推理工作,那么就不需要初始化這些相關變量,能夠提高算法整體性能,節省大量內存。
利用LSTM 算法進行離群值預測,結果如圖2所示。

圖2 預測結果
由圖2 可知,該方法的預測精度隨迭代次數的增加而不斷提高,損耗值相反,整體逐漸趨于穩定,獲得了良好的標定結果。
智能電網是傳統電網智能化的產物,集成了電力系統中的電力流、信息流以及業務流。其目標在于優化能源資源的配置,滿足居民用電需求,確保電力供應的安全、可靠,降低運營成本,促進節能減排,推動國民經濟的發展。通過對電力通信網中的業務進行識別和分類,提升網絡中業務的可視化程度,為網絡資源調配提供參考。傳統方式難以有效處理電力系統產生的大量數據,采用基于聚類的方法進行自動劃分。電網數據一般都具有很強的時序性規律,通過將DBSCAN 算法與LSTM 模型相結合的方式來高效檢測電網數據異常問題,符合電網運行規律。