高 博, 張 亞
(安徽理工大學電氣與信息工程學院,安徽 淮南 232001)
風力發(fā)電是新能源發(fā)電的一種重要方式,可以直接將風能轉化為電能相對于傳統(tǒng)能源發(fā)電解決了社會和環(huán)境問題。然而面對高海拔,高濕度這種地理環(huán)境長期暴露在外的葉片經(jīng)常會發(fā)生結冰現(xiàn)象,監(jiān)控風機運行溫度是否達到設定的閾值是最常用的一個手段,然而此種方法具有偶然性和滯后性。經(jīng)常出現(xiàn)預測不準,或者觸發(fā)警報時葉片已經(jīng)出現(xiàn)大規(guī)模結冰現(xiàn)象。風電場的SCADA系統(tǒng)可以采集風機運行時的風速、風向、溫度、變槳速度、功率曲線等參數(shù),來判斷葉片結冰現(xiàn)象。本文基于風電機組SCADA數(shù)據(jù)利用RFE特征選擇和XGBoost算法對葉片結冰狀態(tài)進行預測,能夠解決數(shù)據(jù)維度高且效率低的問題。并且通過與隨機森林、SVM、Adaboost這些傳統(tǒng)機器學習算法做對比發(fā)現(xiàn),XGBoost模型確實具有更高的預測精度以及較快的預測速度。
研究所用的風電機組SCADA數(shù)據(jù)來自工業(yè)大數(shù)據(jù)創(chuàng)新競賽,數(shù)據(jù)記錄了15號和21號兩臺風機運行的時間戳、風速、機艙溫度、變槳溫度等28個數(shù)據(jù)維度,數(shù)據(jù)每7s采樣一次時間跨度為2個月。其中15號風機運行數(shù)據(jù)作為訓練集用于訓練模型,21號風機數(shù)據(jù)作為測試集用于檢驗模型預測效果。全部數(shù)據(jù)集包括了正常運行的數(shù)據(jù),故障運行的數(shù)據(jù)以及無效數(shù)據(jù),數(shù)據(jù)大小如下表1。
表1 原始數(shù)據(jù)信息
實驗首先利用特征工程對數(shù)據(jù)進行清洗,篩選掉對于預測沒有幫助的無效數(shù)據(jù),其次我們發(fā)現(xiàn)對于整個數(shù)據(jù)集而言,正常數(shù)據(jù)所占的比例要遠高于故障數(shù)據(jù),面對如此不平衡的數(shù)據(jù)分布,算法預測模型可能無法做出準確的預測,最后該模型往往傾向于預測大多數(shù)集合,少數(shù)集合可能被視為噪音或被忽略。因此這種不平衡會嚴重影響模型預測的精度。針對這種不平衡數(shù)據(jù)我們通常有多種方法進行處理,這里采用了下采樣的處理方式,具體方法是選取一部分正常樣本,數(shù)量為故障樣本的2倍,如下表2所示。
表2 下采樣結果
相比于模型和算法,數(shù)據(jù)和特征對機器學習預測的影響更為明顯,對于工業(yè)數(shù)據(jù)而言28個維度并不算太低,而且并不是所有特征都同葉片結冰有較強的關聯(lián),若選用全部特征有可能只會增加模型的復雜度,甚至造成維數(shù)災難,文中選用了RFE作為特征選擇,對原始的28個特征進行特征工程處理,在降維的同時降低數(shù)據(jù)的冗余性。
遞歸特征消除(RFE)是通過對給定的算法模型進行擬合,按照特征重要性進行排序,丟棄不重要的特征,并重新擬合模型來實現(xiàn),這個過程不斷重復,直至特定數(shù)量的特征被保留。在本文風機SCADA數(shù)據(jù)采用RFE進行特征選擇后發(fā)現(xiàn)特征個數(shù)降至9個維度為最佳,下圖為特征重要性分析結果,以及所選的9個特征名稱表格。
XGBoost算法是一種基于梯度提升樹改進算法。其高效的實現(xiàn)了GBDT算法并進行了算法和工程上的許多改進,被廣泛應用在機器學習競賽以及工業(yè)大數(shù)據(jù)預測中,并取得不錯的成績。XGBoost算法最大的特點是能夠進行多線程并行計算,并且相對于傳統(tǒng)GBDT僅使用一階導數(shù)信息,XGBoost對損失函數(shù)進行二階泰勒展開,并在目標函數(shù)中引入正則項防止模型過擬合。
當有k個決策樹時XGBoost模型對樣本的預測結果表示如式(1):
(1)
其損失函數(shù)可以表示如式(2):
(2)
(3)
損失函數(shù)可以表示為式(4):
(4)
對損失函數(shù)進行二階展開有式(5):
(5)
公式中的gi和hi分別是損失函數(shù)的一階和二階導數(shù),移除常數(shù)項后有式(6):
(6)
將Ij={i∣q(xi)=j}定義為第j個葉子點,即式(7):
(7)
wj表示當前葉子節(jié)點樣本權重。最終得到目標函數(shù)為式(8):
(8)
其中γ為限制樹生長的閾值,只有增益大于閾值時,節(jié)點才可以分割。
由于XGBoost屬于梯度提升樹的集成算法,其參數(shù)可以分為如下三部分,集成算法本身的參數(shù)、機器學習任務的相關參數(shù)、集成弱評估器的相關參數(shù)。由于各參數(shù)對模型精度的影響不同,本文主要對前兩部分的9個參數(shù)進行了優(yōu)化,下表顯示了使用的9個主要參數(shù)。
表4 重要參數(shù)
由于超參數(shù)的空間是無盡的,不同的場景對應不同的超參數(shù),因此超參數(shù)的組合配置只能是“更優(yōu)解”,手動嘗試各種參數(shù)無疑是浪費時間,而scilit-learn幫助實現(xiàn)了自動化,那就是網(wǎng)格搜索,由于n_estimators與learnin_rate在調參時相互影響,且參數(shù)booster在非線性數(shù)據(jù)集上只有gbtree,dart兩種選擇,所以首先對這三個參數(shù)進行網(wǎng)格搜索,剩余六個參數(shù)用于學習曲線調參,經(jīng)過參數(shù)調優(yōu)將模型訓練到最佳。
在風機SCADA數(shù)據(jù)經(jīng)過數(shù)據(jù)預處理以及RFE特征選擇后,將處理好的15號風機數(shù)據(jù)分為訓練樣本以及測試樣本,將訓練樣本帶入XGBoost模型中訓練,并根據(jù)網(wǎng)格搜索和學習曲線進行參數(shù)調優(yōu),直至最終確定模型。接著開始用處理好的21號風機數(shù)據(jù)檢驗模型預測效果,將處理好的21號風機的數(shù)據(jù)分為測試數(shù)據(jù)及驗證數(shù)據(jù),模型標簽0代表葉片沒有結冰,1代表葉片已經(jīng)結冰,將測試數(shù)據(jù)導入已經(jīng)確定的XGBoost模型,在根據(jù)原始驗證數(shù)據(jù)去評估模型效果,其流程見下圖。
模型經(jīng)過參數(shù)優(yōu)化之后需要選擇合適的模型評估指標,對于二分類問題我們可以將預測結果和實際結果劃分為真正例(TP)、假正例(FP)、真反例(TN)、和假反例(FN)四種情況,其中TP表示正確預測葉片結冰;FP表示錯誤預測葉片結冰;TN表示正確預測葉片正常;FN表示錯誤預測葉片正常。為了檢驗模型效果,用準確率(A)、查準率(P)、查全率(R)以及查準率與查全率的調和平均數(shù)(F1)來評價模型的效果。
(9)
(10)
(11)
(12)
表5 4種分類器效果對比
實驗結果表明,提出的基于RFE的XGBoost算法結冰預測在各個指標上的檢測性能均優(yōu)于其他三種算法,Adaboost雖然和XGBoost同屬于boosting算法,對數(shù)據(jù)同樣具有優(yōu)秀的分類能力,但是Xgboost可以進行并行計算所以計算速度要優(yōu)于Adaboost且對不平衡數(shù)據(jù)的分類精度同樣優(yōu)于Adaboost。隨機森林相對于XGBoost同樣也是包含多棵決策樹的算法,但是預測結果也是要差于XGBoost,對于傳統(tǒng)的SVM分類器,由于需要不斷尋找可以最優(yōu)化分開數(shù)據(jù)之間超平面直至計算出的結果收斂為止,所以在樣本較大時的效率要遠低與XGBoost算法。
文中提出的一種基于RFE的XGBoost算法對風機葉片結冰的預測,經(jīng)過實驗驗證,確實可以準確且高效的預測風機葉片的結冰,模型評估指標也要優(yōu)于其它傳統(tǒng)機器學習算法,能夠在確保較高預測精度的情況下,減少預測時間及時跟進設備的維護,在風機葉片結冰的預測方面有很高的推廣價值。