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