靳志杰,霍志紅,許 昌,郭宏宇,周華建
(河海大學 能源與電氣學院,江蘇 南京 211100)
近年來,風電產業高速發展,隨著風電裝機容量的增加,風電裝備運行安全保障和運維成本增加愈發成為風電行業的重要問題。部分風電場進入運營中后期后,運維成本不斷上漲,做好風電機組運行狀態預測和故障診斷能有效減小風電機組故 障 率,提 升 風 電 場 效 益[1],[2]。
目前,風電機組的故障診斷主要分為基于解析模型和基于數據的故障診斷方法[3]。隨著機器學習和神經網絡技術的發展,大量學者開展了基于機組運行數據的故障診斷研究。文獻[4]提出了一種基于風電機組SCADA數據的軸承故障預警方法,通過相關性分析提取SCADA所記錄的軸承運行相關特征數據,使用BP神經網絡實現軸承故障預警。文獻[5]利用FDA故障貢獻圖分析變槳系統故障強相關特征變量,進而實現故障定位。文獻[6]對現有的各種支持向量機模型的特點進行了系統分析,提出了包括標準型支持向量機、最小二乘支持向量機以及和其相關的混合模型對電機故障進行診斷。文獻[7]采用極端梯度提升算法提取隱含特征信息,應用支持向量機算法實現基于數據的故障診斷。以上研究中,故障診斷過程中的特征選取方式均影響模型性能,對風電機組數據進行初始特征選擇時多依賴人的先驗知識,在數據特征較多時無法完全排除人的主觀性影響。依靠相關性分析和主成分分析進行特征變換只能處理具有線性關系的特征,存在新構造特征向量可解釋性弱,降維后反而不利于模型訓練的問題[8]。所采用的淺層機器學習算法對復雜函數的表述能力不足,不同機器學習算法對不同型號風電機組、不同部件的故障診斷性能差異較大。
針對基于數據的故障診斷方式中特征選擇過程存在主觀性及所采用傳統機器學習算法性能不佳的問題,本文提出了一種基于特征選擇和XGBoost的風電機組故障診斷方法。在該方法中,首先利用隨機森林的袋外估計功能對故障相關特征進行重要性排序,并做特征選擇;然后采用網格搜索和交叉驗證優化的XGBoost算法進行故障診斷。使用荷蘭某風電場機組SCADA數據對模型進行訓練和驗證后發現,該方法的運算結果在精度上高于傳統機器學習方法的計算結果。
SCADA為風電場運營商提供風電機組各系統運行狀態監測信息,是風電場運行維護的主要支撐。其監測內容為風資源和機組運行狀態,包括離散數據和連續數據兩類,具體監測數據有風速、風向、有功功率、轉子轉速、各部件溫度等。以湖南某風電場為例,其在2014年6月1日-2015年5月31日采集的部分監測數據如表1所示。

表1 SCADA數據示例Table 1 Examples of SCADA data
對SCADA原始數據進行初步篩選,剔除因傳感器故障、通訊故障等引起的不合理數據和明顯異常工況數據[9],減小異常數據對故障診斷模型訓練和測試精度的影響。SCADA數據篩選之后,結合機組運行狀態記錄對數據進行狀態標記。
風電機組SCADA系統所采集數據種類眾多,其中包含與故障有關特征數據、無關特征數據和有關但冗余特征數據,在面臨復雜故障時,依靠專家的經驗和簡單相關性分析進行特征選擇工作已不能完全且準確獲取與故障相關的重要特征,因此本文采用隨機森林(RF)的袋外估計對故障相關特征進行重要性排序[10]。
RF是基于決策樹的組合分類器,可用來進行特征選擇。RF使用Bagging方法從原樣本集中隨機且可重復抽取樣本進行分類器訓練,其中約37%的樣本數據不會被選中,這些數據稱為袋外數 據(Out of Bag,OOB)。計 算 某 特 征 重 要 性 時,用OOB數據作為測試集測試訓練后的基學習器,測試錯誤率記為袋外誤差(errOOB);對OOB樣本中待計算重要性特征加入噪聲,再次計算errOOB;計算所有基學習器的測試平均誤差,以平均精度下降率(MDA)作為指標進行特征重要性計算[11]。

式中:n為基學習器的個數;errOOB′為加入噪聲后的袋外誤差。
MDA指標下降越多,說明所對應特征對預測結果影響較大,進而說明其重要性越高。這種特征重要性計算方法稱為隨機森林的袋外估計,依此方法對故障相關特征進行重要性排序,進行特征選擇。
極端梯度提升(XGBoost)是T Chen在2016年提出的一個分布式通用Gradient Boosting庫[12],該算法是以決策樹作為基學習器的集成學習模型,可在訓練時利用所有CPU內核并行建樹。XGBoost在梯度提升的基礎上改善了目標函數計算方式,可提高模型精確度,并將目標函數的優化問題轉化為求二次函數的最小值問題,利用損失函數的二階導數信息訓練樹模型,同時將樹復雜度作為正則項加入到目標函數中,提升了模型的泛化性能。XGBoost的目標函數為


目標函數在時間t內的迭代結果為

式 中:ft(xi)為 第t次 迭 代 計 算 變 量xi所 在 決 策 樹復雜度;C為常數。
將損失函數進行二階泰勒展開,設損失函數為均方誤差,則目標函數為

式中:gi,hi分別為均方損失函數的一階和二階導數。
為避免傳統經驗法確定參數值導致參數組合為局部最優的結果,本文采用網格搜索算法對XGBoost模型進行參數優化,并采用交叉驗證減小模型訓練過程中隨機抽取樣本所致偏差影響[13],該種參數尋優方式可獲得網格參數內全局最優參數組合,進而獲得參數最優下故障診斷模型。
本文基于隨機森林和XGBoost算法實現風電機組故障診斷,其具體步驟如下:
①數據預處理階段對風電機組SCADA數據進行篩選,剔除異常數據,減小其對模型的影響;
②數據進行預處理后,利用隨機森林的袋外估計功能獲得特征的重要性排序來進行特征選擇,并綜合考慮模型的準確性和計算時間選擇特征集;
③將經特征選擇后的數據劃分為訓練樣本和測試樣本,為模型的訓練及測試備好數據集;
④利用訓練樣本對模型進行訓練,通過網格搜索和交叉驗證對XGBoost算法模型進行參數優化,得到該訓練樣本對應全局最優參數組合下的故障診斷模型;
⑤利用測試樣本對步驟④所獲取模型進行檢驗,通過常用機器學習模型性能衡量指標準確率、精準率、召回率和平衡分數F1值檢驗所提模型準確性。將決策樹(DT)、支持向量機(SVM)和RF傳統機器學習算法與應用XGBoost算法的模型計算結果進行橫向對比,檢驗所提模型優異性。
建模流程如圖1所示。

圖1 故障診斷模型構建流程Fig.1 Fault diagnosis model flow diagram
本文依據荷蘭某風電場2014年4月6日-2015年4月1日連續360 d故障記錄臺賬和SCADA記錄數據,以52 560條、61個特征數據作為原始數據,經數據篩選后留存有效數據49 028條,留取狀態數據27 398條,關鍵狀態數據1 850條,該數據集覆蓋機組正常運行狀態和故障狀態。對常見發電機和變流器位置處A,B兩類故障進行預測,分別為發電機過熱(故障A)和變流器饋電(故障B)故障。
通過隨機森林的袋外估計功能,針對兩個類型故障,對表2所示29個初選特征變量進行重要性計算,每一類故障重復進行20次計算,每項特征重要性取20次計算平均值。然后再進一步選取特征重要性排名前9和前6的特征變量集進行精確度測試。

表2 特征描述及重要性Table 2 Feature variable description and importance
通過所提故障診斷模型對不同特征數量方案進行對比(表3)。

表3 特征變量方案選取對比Table 3 Comparison of feature variable scheme selection

續表3
由表3可知:模型在輸入29個特征變量和9個特征變量時計算結果精確度相近,與輸入29個特征變量進行訓練相比,輸入9個特征變量的訓練耗時能夠降低30%;輸入6個特征變量和輸入9個特征變量進行訓練相比,訓練耗時有所減少,但模型精確度出現明顯下降。綜合考慮模型精確度和訓練耗時,選擇輸入9個特征變量訓練各個故障診斷模型。
本文采用網格搜索算法和10折交叉驗證對XGBoost算法進行參數優化,具體步驟如下:
①確定調節參數及取值范圍,預設最小均方誤差值0.4作為優化標準;
②依據參數調節范圍構造粗網格,設定步長,計算網格內每一點經10次迭代計算后的平均均方誤差;
③以經步驟②計算后低于誤差設定值的點為中心,附近點作為邊界構造細網格,設置新步長,重復步驟②,計算低于設定值所有點并記錄結果;
④比較步驟③得出的所有平均均方誤差,平均均方誤差值最小的點所對應參數作為模型全局最優參數組合。
通過上述步驟,為每一類故障診斷模型進行參數優化,調節參數如表4所示。

表4 XGBoost參數設定范圍及含義Table 4 Range and meaning of XGBoost hyperparameter
應用最優參數下的故障診斷模型對故障A和故障B進行診斷,并與DT,SVM和RF傳統機器學習算法的計算結果進行對比。采用準確率、精準率、召回率和F1值作為評判指標對模型計算結果進行評判。為保證測量結果的準確性,重復測試10次,取10次平均值作為最終結果,結果如表5所示。

表5 故障診斷結果Table 5 Diagnosis results of fault
對于故障A:DT和SVM算法模型各項指標均低于0.9,表現不佳;XGBoost和RF算法模型性能類似,XGBoost算法模型的各項指標均高于0.9,其中召回率明顯高于其它算法模型,說明該算法模型對A類故障關鍵信息的提取能力較強。
對于故障B,XGBoost算法模型的診斷結果在準確率、精準率、召回率和F1值上明顯高于傳統機器學習算法,各項指標均高于0.93,與傳統機器學習算法相比,診斷效果有很大提升。
以計算過程所得假陽率和真陽率作為橫、縱坐標繪制受試者工作特征曲線(ROC),對比不同算法模型性能。AUC(Area Under Curve)即ROC曲線下面積,是衡量模型優劣的一種性能指標,其值越大,代表模型的性能越好,準確率更高。
故障A各算法模型的ROC曲線對比如圖2所示。

圖2 故障A各算法模型的ROC曲線對比圖Fig.2 Comparison diagram of ROC curve-fault A
由圖2可知:相較于DT和SVM算法模型,RF和XGBoost算法模型對應的ROC曲線位置相近;DT與SVM算法模型的ROC曲線更靠近左上角。驗證了所提XGBoost算法模型的有效性。
故障B各算法模型的ROC曲線對比如圖3所示。

圖3 故障B各算法模型的ROC曲線對比圖Fig.3 Comparison diagram of ROC curve-fault B
由圖3可知:XGBoost算法模型的AUC值為0.96,說明該算法模型具有較高的準確性;XGBoost算法模型對應的ROC曲線整體更靠近左上角,即AUC值更大。驗證了XGBoost算法模型的優異性。
本文提出了一種基于特征選擇的XGBoost風電機組故障診斷算法,該方法將隨機森林的袋外估計應用到特征選擇中,運用經網格搜索算法和交叉驗證優化的XGBoost算法模型作故障分類預測。
①XGBoost故障診斷方法利用風電場SCADA實測數據,通過挖掘數據中隱含的機組狀態特征信息,實現故障診斷,能夠提高風電機組運行數據利用率,有效降低故障診斷模型部署成本。
②采用隨機森林的袋外估計功能獲取特征重要性排序,得到故障強相關特征,有效提升了復雜故障的特征選擇客觀性和準確性,拓寬了故障診斷模型的適用范圍。該故障診斷方法利用網格搜索算法對XGBoost算法模型進行參數優化以提高模型準確性,參數調優過程簡單且可獲得全局最優參數組合,同時采用交叉驗證方法避免隨機抽取樣本訓練導致的測試偶然性誤差。這兩項舉措提高了模型的預測準確率,增強了模型在不同型號風電機組的部署能力。
③采用荷蘭某風電場實測數據對所提故障診斷模型的有效性進行驗證。兩種風電機組故障診斷結果表明,模型的預測準確率均達到0.91以上。XGBoost算法較傳統的機器學習算法模型在預測準確率上有較大的提升,驗證了所提故障診斷方法的有效性和優異性。