尚 鑫,方超群,武東輝
(1.國網(wǎng)新源控股有限公司北京十三陵蓄能電廠,北京市 102200;2.水利部水工金屬結(jié)構(gòu)質(zhì)量檢驗測試中心,河南省鄭州市 450044;3.鄭州輕工業(yè)大學,河南省鄭州市 450001)
北京十三陵抽水蓄能電站位于北京市昌平區(qū)蟒山,是我國北方地區(qū)建成的第一座大型抽水蓄能電站。該電站利用已經(jīng)建成的十三陵水庫為下庫,左岸蟒山的上寺溝為上庫,由引水系統(tǒng)和尾水系統(tǒng)連接上庫和下庫。發(fā)電廠房位于蟒山巖體內(nèi),電站裝機容量為4×200MW,采用“一管兩機”布置方式,由兩個相互獨立的水道系統(tǒng)組成,包括上庫進/出水口、引水事故閘門、引水隧洞、引水調(diào)壓井、壓力管道、尾水支管、尾水事故閘門室、尾水調(diào)壓井、尾水隧洞、下庫進/出水口等建筑物[1]。
本文的數(shù)據(jù)來源是布置在電站引水系統(tǒng)壓力管道明管段處安裝的在線監(jiān)測系統(tǒng)所采集壓力鋼管主管、1號支管和2號支管明管段在設備運行時的應力、振動、溫度、噪聲、地震[2]等參數(shù)。通過對該在線監(jiān)測系統(tǒng)45天的歷史數(shù)據(jù)調(diào)取,實現(xiàn)本次數(shù)據(jù)分析所使用的基礎數(shù)據(jù)集。再通過對數(shù)據(jù)集進行計算機人工智能分析,實現(xiàn)對設備健康狀態(tài)的監(jiān)測判斷[3]。
水電站引水壓力鋼管在運行過程中,其在線監(jiān)測所產(chǎn)生的設備健康監(jiān)測數(shù)據(jù)對設備的異常檢測和安全評估具有現(xiàn)實意義[4]。通過對壓力鋼管進行健康監(jiān)測,可獲得壓力鋼管在運行過程中的振動、應力、溫度、位移、地震等參數(shù)信息,這些信息經(jīng)過數(shù)據(jù)保存,可形成完備的壓力鋼管安全運行歷史數(shù)據(jù),監(jiān)測傳感器安裝區(qū)域如圖1所示。
圖1 1號壓力鋼管傳感器監(jiān)測區(qū)域示意圖Figure 1 Schematic diagram of No.1 steel penstock sensor monitoring area
本次采用的數(shù)據(jù)為北京十三陵蓄能電站1號引水系統(tǒng)壓力鋼管的1號支管和2號支管在45天時間內(nèi)所產(chǎn)生的歷史數(shù)據(jù),由于壓力鋼管健康狀況監(jiān)測所用的傳感器較多,且每個傳感器監(jiān)測的數(shù)據(jù)較大,本文僅提取對設備安全運行相關性較大的振動、應力兩個參數(shù)進行運算分析。運算使用的數(shù)據(jù)采樣周期為5min,該采樣周期既保證了設備運行的數(shù)據(jù)特征不被漏采,也最大可能地包含了壓力鋼管在機組發(fā)電、抽水以及停機狀態(tài)下的參數(shù)信息[5]。
經(jīng)過數(shù)據(jù)整理,采用4個監(jiān)測點位的數(shù)據(jù)進行數(shù)據(jù)集的建立,每個監(jiān)測點位均包含振動加速度監(jiān)測參數(shù)和應力監(jiān)測參數(shù)。4組通道的振動加速度原始變化曲線和應力原始值變化曲線如圖2和圖3所示。
圖2 4組通道振動加速度原始值變化曲線Figure 2 4 groups of channel vibration acceleration original value change curve
圖3 4組通道應力原始值變化曲線Figure 3 4 groups of channel stress original value change curve
經(jīng)過分析并經(jīng)過數(shù)據(jù)整理,將每組數(shù)據(jù)集限定為13000個樣本。4個監(jiān)測點的數(shù)據(jù)集即可分為:1號支管X軸方向的“振動-應力”數(shù)據(jù)集、1號支管Y軸方向的“振動-應力”數(shù)據(jù)集、2號支管X軸方向的“振動-應力”數(shù)據(jù)集和2號支管Y軸方向的“振動-應力”數(shù)據(jù)集。
異常檢測(anomaly detection)是對不匹配預期模式或數(shù)據(jù)集中其他項目的項目、事件或觀測值的識別,異常也被稱為離群值、噪聲、偏差等[6-7]。異常檢測是機器學習算法的一種,它通過大量的測試值以檢測是否有異常值的存在,可應用于各個行業(yè),例如設備故障的檢測以及大型設備設施中的實時監(jiān)測和發(fā)現(xiàn)。
算法是從數(shù)據(jù)集中學習數(shù)據(jù)特征,并為其設定“參考基準值”,當新進入的數(shù)據(jù)超過預定義為正常范圍的閾值時,則將新數(shù)據(jù)與“參考基準值”偏離的程度作為概率輸出。異常監(jiān)測大致可分為監(jiān)督學習、半監(jiān)督學習和無監(jiān)督學習3種方法。如果沒有足夠的歷史數(shù)據(jù)或數(shù)據(jù)集中的數(shù)據(jù)沒有標簽,則使用“無監(jiān)督學習”將是較為理想的方法。
機器學習均屬于分類算法,如果將分類算法進行劃分,根據(jù)類別個數(shù)的不同可以分為單分類、二分類、多分類。常見的分類算法主要解決二分類和多分類問題,如圖片分類、手寫體識別、人臉識別等,這些算法并不能很好地應用在單分類上[8]。但是,在工業(yè)實時在線監(jiān)測或工業(yè)應用方面,單分類問題占據(jù)了絕大多數(shù)。
工業(yè)應用中,很多樣本無法找到負樣本,即使有負樣本,該樣本個數(shù)也非常少,會造成訓練集的不平衡。如果人為制造一些負樣本或通過數(shù)據(jù)篩查整理出一些負樣本,也會因為負樣本的污染而無法達到預期的目標。所以,在只有正樣本而沒有負樣本的場景中,使用單分類算法則會更加合適。本文采用的壓力鋼管健康檢測數(shù)據(jù)均為正樣本,該數(shù)據(jù)也為單樣本數(shù)據(jù)集。
人工智能的大部分算法對數(shù)據(jù)集的要求相對較高,數(shù)據(jù)集的質(zhì)量也是影響其算法準確率的保障,所以,一般用于訓練的數(shù)據(jù)集均需要有標簽[9]。但壓力鋼管健康狀態(tài)的監(jiān)測數(shù)據(jù)集沒有標簽,也不可能對在線的數(shù)據(jù)進行一一標注。對于沒有標簽且為單樣本的數(shù)據(jù)集,只能采用單樣本分類算法,而單樣本分類算法只關注與樣本的相似或者匹配程度,對于偏離的未知數(shù)據(jù)則不下結(jié)論。
對于單樣本數(shù)據(jù)的異常檢測,目前常用的算法有單分類算法(one class learning)[10-11]、神經(jīng)網(wǎng)絡算法(artificial neural network)和孤立森林算法(isolation forest)[12]等。
單分類算法比較經(jīng)典的是單類支持向量機(one class SVM,OCSVM),該算法是通過擬合一個超平面將樣本中的正面特征分隔,并用該超平面為預測結(jié)果做出決策,在正面特征集中的樣本系統(tǒng)就認為是正樣本,不在正面特征集中的樣本系統(tǒng)則認為是異常值。但該算法中一般采用高斯核,由于在核函數(shù)計算時相對比較耗時,所以在海量數(shù)據(jù)的場景下會耗費大量的計算資源。
異常檢測還可以使用神經(jīng)網(wǎng)絡算法來實現(xiàn),該算法在深度學習中被廣泛使用,其自編碼算法可以應用在單分類的問題上,自編碼是一個BP神經(jīng)網(wǎng)絡,網(wǎng)絡輸入層和輸出層一樣,但中間層的層數(shù)比較靈活,可以為單層也可以為多層,若中間層的節(jié)點數(shù)比輸出層少,則中間層就相當于對數(shù)據(jù)進行了抽象和壓縮,借此實現(xiàn)無監(jiān)督的方式來學習數(shù)據(jù)的特征。如果僅有正樣本數(shù)據(jù),就可以利用正樣本訓練出一個自編碼器,而自編碼器就是一個單分類的一個模型,當對全量數(shù)據(jù)進行預測時,通過比較輸入層和輸出層的相似程度就可以判斷輸入是否屬于正樣本。由于采用了神經(jīng)網(wǎng)絡,就可以用GPU來加速運算,因此該方法比較適合海量數(shù)據(jù)的場景。
孤立森林是一個相對高效的異常點檢測算法。當進行檢測時,系統(tǒng)會隨機選取一個特征,并在特征的最大值和最小值之間選擇一個分切面,然后再進行其他特征的分切,通過不斷的“遞歸-劃分”,最終就像一棵樹,稱為決策樹。算法對數(shù)據(jù)劃分的次數(shù)則等于根節(jié)點到葉子節(jié)點的路徑距離。為增強魯棒性,該系統(tǒng)會隨機生成很多樹并形成森林,在“森林”中只需要關注最容易被“孤立”出來的那些點,即可判斷該點是否為異常值。孤立森林運算量小且算法特性也決定了它可以應用在分布式訓練場景,所以適合海量數(shù)據(jù)。但如果訓練數(shù)據(jù)為高維度數(shù)據(jù),則該算法沒有優(yōu)勢。
對于本文采用的小樣本參數(shù)的設備健康數(shù)據(jù)集,采用單分類支持向量機算法有其相應的優(yōu)勢:
(1)可以解決小樣本下機器學習的問題,這是神經(jīng)網(wǎng)絡算法和孤立森林算法所不及的。
(2)解決了非線性問題,該問題一直是機器學習中無法繞開的話題。
(3)無局部極小值問題,而采用神經(jīng)網(wǎng)絡算法則有可能陷入局部極小值。
(4)可以很好地處理高維度數(shù)據(jù)集。
(5)泛化能力比較強,而孤立森林采用決策樹的算法則容易過擬合,導致泛化能力不強。
單分類支持向量機算法也有核函數(shù)在高維映射解釋力不強、對缺失數(shù)據(jù)敏感的缺點,但本文在應用該算法過程中,已通過數(shù)據(jù)前期處理解決了缺失數(shù)據(jù)的問題。所以,本文將通過單類支持向量機的計算方法對設備的歷史運行數(shù)據(jù)進行運算分析。
單類支持向量機屬于支持向量機的范疇,但其與基于監(jiān)督學習的分類回歸支持向量機不同,它是無監(jiān)督學習,不需要對訓練集進行標注。單類支持向量機采用支持向量域(support vector domain description)的解放思想,對于支持向量域,需將不是異常的樣本均劃歸為正類別,該算法采用一個超球體對數(shù)據(jù)進行劃分,在特征空間中計算數(shù)據(jù)周圍的球形邊界,并最小化這個超球體體積,同時也最小化了異常點對整個數(shù)據(jù)的影響。
式中:o——超球體中心;
r——超球體半徑;
V(r)——超球體體積;
C——懲罰系數(shù);
ζi——松弛變量;
xi——訓練點。
采用拉格朗日對偶求解之后,首先判斷新計算的數(shù)據(jù)是否在內(nèi),如果新計算的數(shù)據(jù)點到球心的距離小于球體的半徑,可判斷該數(shù)據(jù)不是異常點,如果到球心的距離大于球體半徑,即判斷該數(shù)據(jù)為異常點。
因為數(shù)據(jù)本沒有標簽,所以算法不對數(shù)據(jù)進行分類判別,而是通過回答“是”或“不是”的方法根據(jù)支持向量域?qū)颖緮?shù)據(jù)訓練出一個最小的大于三維特征的超球面,其中,在二維中則是一個曲線,曲線會將數(shù)據(jù)包起來,曲線之外的數(shù)據(jù)即為異常點。
本文采用Python+Numpy+Sklearn+Matplotlib的組合進行數(shù)據(jù)處理并繪圖。首先通過Python連接數(shù)據(jù)庫,并對數(shù)據(jù)庫相對應的數(shù)據(jù)通道進行二次數(shù)據(jù)采集,采集的間隔為每5min一個采樣點,并將采樣點以多維矩陣的形式保存在Numpy數(shù)組中。由于數(shù)據(jù)庫每條通道的原始數(shù)據(jù)時間戳不完全相同,所以在對數(shù)據(jù)庫的讀取過程中,增加了時間校驗程序,當該通道的數(shù)據(jù)滿足二次采樣間隔并處于±6s的時間范圍內(nèi)時,該數(shù)據(jù)才為有效數(shù)據(jù),否則按無效采樣點處理。
完成數(shù)據(jù)二次采樣后,需要對數(shù)據(jù)進行預處理。首先對數(shù)據(jù)進行清洗,剔除無效采樣點。當剔除無效采樣點后會出現(xiàn)數(shù)據(jù)空缺,對于數(shù)據(jù)空缺目前有多種處理方法,使用較多的有兩種:一種是通過條件均值進行數(shù)據(jù)集的填補,另外一種是直接丟棄帶有丟失值的特征向量。本文在數(shù)據(jù)處理時,采用第二種方式。
由于“振動-應力”數(shù)據(jù)為不同的量綱和量綱單位,這樣的情況會影響數(shù)據(jù)分析的結(jié)果,為了消除指標之間的量綱影響,需要進行數(shù)據(jù)標準化處理,以解決數(shù)據(jù)指標之間的可比性。本文采用離差標準化的方法,對清洗后的數(shù)據(jù)進行線性變換,使結(jié)果值映射到 [0,1]之間。其轉(zhuǎn)換函數(shù)如式(4)所示。
對待學習數(shù)據(jù)進行歸一化后,就形成了訓練所需要的數(shù)據(jù)集,其數(shù)據(jù)結(jié)構(gòu)如圖4所示,部分數(shù)據(jù)可視化后如圖5所示。
圖4 歸一化處理后的數(shù)據(jù)集Figure 4 Normalized data set
圖5 對部分數(shù)據(jù)集進行可視化Figure 5 Visualization of partial datase
在獲取數(shù)據(jù)集的基礎上調(diào)用Sklearn中SVM包里面的OneClassSVM函數(shù)來做異常點的檢測。該算法支持核函數(shù)修改,可以通過調(diào)整參數(shù)的形式進行選擇。
在采用Sklearn對4組數(shù)據(jù)集進行數(shù)據(jù)初步分析后,可以獲知在不同的運算參數(shù)下會有著不一樣的誤差,通過參數(shù)調(diào)整,確定使用的運算參數(shù)如下:
(1)核函數(shù)(kernel):高斯核。
(2)訓練誤差(nu):0.001。
(3)內(nèi)核系數(shù)(kernel coefficient):0.35。
通過對4組數(shù)據(jù)集的運算,結(jié)果可視化后如圖6~圖9所示。其中,藍色曲面圍合的點代表正常值,藍色曲面以外的點為異常點。
圖6 1號支管X軸方向“振動-應力”數(shù)據(jù)集異常檢測Figure 6 Abnormal detection of“vibration-stress”data set in X-axis direction of No.1 branch pipe
圖7 1號支管Y軸方向“振動-應力”數(shù)據(jù)集異常檢測Figure 7 Abnormal detection of“vibration-stress”data set in Y-axis direction of No.1 branch pipe
圖8 2號支管X軸方向“振動-應力”數(shù)據(jù)集異常檢測Figure 8 Abnormal detection of“vibration-stress”data set in X-axis direction of No.2 branch pipe
圖9 2號支管Y軸方向“振動-應力”數(shù)據(jù)集異常檢測Figure 9 Abnormal detection of“vibration-stress”data set in Y-axis direction of No.2 branch pipe
從上述可視化結(jié)果來看,幾乎所有的點均包含在了二維的藍色曲線以內(nèi),但每個數(shù)據(jù)集的運算結(jié)果中也包含一部分離群的點,這是我們設定的0.001系數(shù)的訓練誤差所決定的,將上述四個數(shù)據(jù)集偏離最大的點進行數(shù)據(jù)定位后,分析如下:
1號支管X方向“振動-應力”異常坐標點編號為6239,該異常點所處的數(shù)據(jù)位置如圖10所示;1號支管Y方向“振動-應力”異常坐標點編號為9881,該異常點所處的數(shù)據(jù)位置如圖11所示;2號支管X方向“振動-應力”異常坐標點編號為2327,該異常點所處的數(shù)據(jù)位置如圖12所示;2號支管Y方向“振動-應力”異常坐標點編號為2025,該異常點所處的數(shù)據(jù)位置如圖13所示。
圖10 1號支管X方向異常點坐標Figure 10 Coordinates of abnormal points in X-axis direction of No.1
圖11 1號支管Y方向異常點坐標Figure 11 Coordinates of abnormal points in Y-axis direction of No.1
圖12 2號支管X方向異常點坐標Figure 12 Coordinates of abnormal points in X-axis direction of No.2
圖13 2號支管Y方向異常點坐標Figure 13 Coordinates of abnormal points in Y-axis direction of No.2
上述4個異常點的位置確定后,與壓力鋼管運行的歷史數(shù)據(jù)時間標簽進行對比查看,確定該異常點所指向傳感器信息獲取的具體時間如下:9月5日20時31分58秒(發(fā)電狀態(tài))、9月21日20時49分39秒(發(fā)電狀態(tài))、8月22日19時36分10秒(發(fā)電狀態(tài))、8月21日20時20分01秒(發(fā)電狀態(tài))。
4組異常值所處的時間范圍集中在晚上20時左右,且設備均處于發(fā)電狀態(tài)。由此可以判斷,通過該算法進行計算后,系統(tǒng)具有發(fā)現(xiàn)設備異常狀態(tài)的能力。需要說明的是,本次發(fā)現(xiàn)的異常點只是從設備正常運行數(shù)據(jù)中抽取的,該異常點僅說明了設備此時的工況發(fā)生了細微的變化,并不說明設備出現(xiàn)了故障。
(1)對于設備的異常檢測,可以在考慮數(shù)據(jù)特征和系統(tǒng)開銷的情況下,選擇合適的機器學習算法,以達到準確找出異常數(shù)據(jù)的目的。
(2)聚類問題只是在單一樣本數(shù)據(jù)中發(fā)現(xiàn)離群值的一種方法,該方法可以實現(xiàn)離群值的快速檢測,但并未標注出離群值所處的風險因子,因此,該方法可以作為小數(shù)據(jù)集和設備健康監(jiān)測初期進行的嘗試性預測。
(3)正、反兩類樣本的不平衡造成機器學習算法的分類困難的,當隨著設備自身健康數(shù)據(jù)的積累越來越多,其分類的優(yōu)化也更加容易。但由于聚類問題隨著數(shù)據(jù)量的增加也會增加系統(tǒng)開銷,所以在數(shù)據(jù)量在不斷增大時,可以考慮使用聚類再使用分類器學習歸納其模型,從而達到集群擴展并應用于新增數(shù)據(jù)的目的。