吳青科,吳 曉,袁雨陽,何麗娜
(西南交通大學(xué)機(jī)械工程學(xué)院,四川 成都 610031)
隨著經(jīng)濟(jì)發(fā)展和城市化的不斷推進(jìn),各種機(jī)械設(shè)備大量投入使用,隨之而來的是各種因機(jī)械設(shè)備故障導(dǎo)致的事故頻繁發(fā)生,空壓系統(tǒng)工況復(fù)雜,工作強(qiáng)度大,相當(dāng)大一部分事故是因空壓系統(tǒng)故障導(dǎo)致的。在故障發(fā)生之前對(duì)其進(jìn)行預(yù)測(cè)并預(yù)警可以提高設(shè)備工作效率和安全性,大大減少維護(hù)成本。因此對(duì)于機(jī)械設(shè)備故障診斷的識(shí)別和預(yù)測(cè)有十分重要的研究意義。
機(jī)械設(shè)備的故障診斷是一種多學(xué)科融合的綜合性技術(shù)[1],因?yàn)楝F(xiàn)代機(jī)械設(shè)備往往是機(jī)、電、液一體化的復(fù)雜系統(tǒng),故障模式復(fù)雜多樣,要想準(zhǔn)確的預(yù)測(cè)故障具有較大的難度[2]。近幾年機(jī)器學(xué)習(xí)方法高速發(fā)展,在圖像處理、語音識(shí)別、自然語言處理等多個(gè)領(lǐng)域都得到了大量的應(yīng)用,獲得了極好的效果。這也為故障診斷領(lǐng)域帶來了新的思路,機(jī)器學(xué)習(xí)算法非線性擬合能力好,能自適應(yīng)的從數(shù)據(jù)中學(xué)習(xí)到各種故障模式的特征[3],具有傳統(tǒng)方法難以比擬的優(yōu)勢(shì)。Guo X等人[4]使用堆棧降噪自編碼機(jī)(SDAE)來提取旋轉(zhuǎn)機(jī)械的故障特征并用于智能診斷,能有效的應(yīng)對(duì)原始信號(hào)的噪聲,獲得了較好的預(yù)測(cè)效果,魯棒性好。文獻(xiàn)[5]使用隨機(jī)森林多分類器與決策樹組合來對(duì)齒輪組進(jìn)行故障診斷,避免了單一算法的過擬合現(xiàn)象,得到了90%以上的故障分類準(zhǔn)確率。文獻(xiàn)[6]將IAGA算法優(yōu)秀的全局尋優(yōu)能力與支持向量機(jī)結(jié)合起來,組合成一個(gè)多值SVM模型來對(duì)搗固車液壓系統(tǒng)進(jìn)行故障分類,試驗(yàn)表明該模型分類精度高且魯棒性好。近幾年Boosting和Stacking集成學(xué)習(xí)算法在各個(gè)領(lǐng)域中得到大量使用,均獲得了較好的效果,在某些方面有神經(jīng)網(wǎng)絡(luò)無法比擬的優(yōu)勢(shì)。文獻(xiàn)[7]使用XgBoost算法來對(duì)機(jī)床刀具磨損進(jìn)行評(píng)估,相較于隨機(jī)森林等傳統(tǒng)機(jī)器學(xué)習(xí)算法,XgBoost預(yù)測(cè)精度明顯提升且不易受到樣本不平衡的影響,預(yù)測(cè)速度提升一個(gè)數(shù)量級(jí)。
本文首先建立基于單個(gè)機(jī)器學(xué)習(xí)算法的故障診斷模型,并應(yīng)用于卡車空壓系統(tǒng)的故障診斷中。通過分析發(fā)現(xiàn)RandomForest算法更加關(guān)注模型的泛化性,而boosting一類的算法更關(guān)注于準(zhǔn)確率,這些樹集成模型的缺點(diǎn)在于內(nèi)部的基學(xué)習(xí)器是同類型的,差異性不夠大,當(dāng)樹模型的深度過深時(shí),很難避免過擬合,為了解決SVM、AdaBoost、LightGBM等機(jī)器學(xué)習(xí)模型存在的局限性,對(duì)Stacking算法提出改進(jìn),提出基于異質(zhì)學(xué)習(xí)器的集成學(xué)習(xí)故障診斷模型,通過性能優(yōu)異的CatBoost算法來將各個(gè)模型集成在一起,在犧牲部分計(jì)算速度的條件下提高了故障診斷算法的預(yù)測(cè)準(zhǔn)確率和魯棒性。
首先介紹AdaBoost算法的基礎(chǔ)Boosting算法[8],它是將若干個(gè)非常簡(jiǎn)單的弱分類器結(jié)合成為一個(gè)強(qiáng)分類器,這些弱分類器只要強(qiáng)于隨機(jī)猜測(cè)即可,典型的弱學(xué)習(xí)器例子就是單層決策樹。Boosting算法的簡(jiǎn)單數(shù)學(xué)表達(dá)式可表示為
(1)
式中:Φm(x)表示第m個(gè)弱分類器,αm表示計(jì)算相關(guān)系數(shù),對(duì)于不同的弱分類器選擇不同的αm。AdaBoost算法[9]是基于Boosting算法的改進(jìn),其原理是通過對(duì)樣本權(quán)重和弱分類器權(quán)重進(jìn)行調(diào)整,從而在訓(xùn)練出的弱分類器中篩選出權(quán)值系數(shù)最小的弱分類器并將它們組合為一個(gè)強(qiáng)分類器。
XgBoost同屬于Boosting算法中的一種,是一種梯度提升決策樹模型(GBDT)[10-11],其基學(xué)習(xí)器選用的是CART回歸樹,其目標(biāo)函數(shù)為
(2)
LightGBM算法由微軟于2016年底提出[12],LightGBM使用Histogram(直方圖)算法來將連續(xù)的浮點(diǎn)值特征轉(zhuǎn)換為k個(gè)離散值,并構(gòu)建一個(gè)寬度為k的直方圖,Histogram算法原理圖如圖1所示。
圖1 Histogram算法原理圖
CatBoost算法[13]在2017年由俄羅斯技術(shù)公司Yandex開源,同屬于Boosting算法的一種。該算法使用oblivious樹作為基學(xué)習(xí)器,將訓(xùn)練樣本的所有二進(jìn)制特征值儲(chǔ)存在連續(xù)向量C中,使用大小為Cd的浮點(diǎn)數(shù)向量來存儲(chǔ)葉子節(jié)點(diǎn)的值,其中d表示樹的深度。為了得到第m棵樹的葉子節(jié)點(diǎn)的索引,對(duì)于訓(xùn)練樣本x,可以建立一個(gè)二進(jìn)制向量為
(3)
式中:C(x,f)是從向量C中讀取的樣本x上的二進(jìn)制特征f的值,f(m,j)代表從深度為i的第m棵樹中的二進(jìn)制特征的數(shù)量。
Stacking集成學(xué)習(xí)模型是一種用于融合幾種不同算法的分層模型集成框架。首先使用初始數(shù)據(jù)集訓(xùn)練出若干個(gè)模型,訓(xùn)練出的模型作為Stacking模型的第一層,然后將第一層每個(gè)模型的輸出組合起來作為Stacking模型第二層的輸入并在第二層繼續(xù)訓(xùn)練,從而得到一個(gè)完整的Stacking模型。模型使用各個(gè)不同的算法的預(yù)測(cè)數(shù)據(jù)作為模型下一層訓(xùn)練數(shù)據(jù),很好的將各個(gè)模型的優(yōu)點(diǎn)結(jié)合了起來,提高了預(yù)測(cè)準(zhǔn)確率,同時(shí)由于原始數(shù)據(jù)的各個(gè)特征對(duì)于不同算法的重要度不同,將幾種強(qiáng)分類器通過Stacking模型集成起來可以更充分的學(xué)習(xí)到數(shù)據(jù)中的知識(shí)。
本文構(gòu)建的Stacking模型結(jié)構(gòu)如圖2所示,模型第一層使用了五個(gè)單模型,分別是XgBoost、LightGBM、RandomForest、AdaBoost、SVC。這五個(gè)強(qiáng)模型分屬于三類不同的算法,在機(jī)器學(xué)習(xí)的各個(gè)領(lǐng)域均取得了很好的效果,將不同種類的算法組合起來更能充分發(fā)揮Stacking模型的集成效果。其中單模型訓(xùn)練方式如圖3所示,首先將初始數(shù)據(jù)集隨機(jī)劃分為大小均等的五份,其中四份train_2~train_5用于訓(xùn)練模型model,用訓(xùn)練得到的模型去預(yù)測(cè)剩下的一份數(shù)據(jù)train_1和測(cè)試集test_data,得到predict_1和test_1。同理用這種方法共可以得到predict_1~predict_5共五組訓(xùn)練集預(yù)測(cè)數(shù)據(jù),將predict_1~predict5縱向拼接在一起得到nf_train,這是Stacking模型第二層新訓(xùn)練集數(shù)據(jù)的特征之一,對(duì)test_1~test5取其平均值,得到nf_test作為Stacking模型第二層的新測(cè)試集特征之一。將所有單模型訓(xùn)練好,將各個(gè)新特征分別對(duì)應(yīng)的組合起來便得到了訓(xùn)練Stacking集成模型第二層所需要的訓(xùn)練集train_new和測(cè)試集數(shù)據(jù)test_new。
圖2 Stacking模型結(jié)構(gòu)
圖3 單模型訓(xùn)練算法結(jié)構(gòu)
模型第二層使用了CatBoost算法來將上述五個(gè)算法融合在一起,CatBoost的特殊算法結(jié)構(gòu)使其能很好的抑制過擬合,較適合用來融合第一層五個(gè)算法的預(yù)測(cè)結(jié)果。轉(zhuǎn)換后得到的新訓(xùn)練集數(shù)據(jù)train_new有五個(gè)特征向量,每個(gè)特征分別對(duì)應(yīng)上述Stacking模型第一層五個(gè)算法預(yù)測(cè)的類標(biāo),新測(cè)試集數(shù)據(jù)test_new同樣也有五個(gè)特征向量,分別是模型第一層使用的五個(gè)算法對(duì)于測(cè)試集的五個(gè)預(yù)測(cè)結(jié)果。
Stacking模型集成了多種算法,不同的算法模型有不同的評(píng)價(jià)標(biāo)準(zhǔn)。AdaBoost算法的模型提升準(zhǔn)則為SAMME算法。RandomForest算法的評(píng)價(jià)標(biāo)準(zhǔn)為基尼不純度,它可以很好的衡量系統(tǒng)的混亂程度,其表達(dá)式為
(4)
式中:fi代表某概率事件發(fā)生的概率?;岵患兌仍叫?,代表分類效果越好。
LightGBM,XgBoost和CatBoost算法均屬于Boosting算法,這三個(gè)單模型的評(píng)價(jià)標(biāo)準(zhǔn)為RMSE(均方根誤差),它能衡量預(yù)測(cè)值與真實(shí)值之間的偏差,其表達(dá)式為:
(5)
實(shí)驗(yàn)平臺(tái)為普通筆記本電腦,處理器為Intel(R) Core(TM) i5-7300HQ CPU @2.50GHz,16G內(nèi)存,64位windows10操作系統(tǒng),使用的編程語言為Python。
實(shí)驗(yàn)選擇的數(shù)據(jù)集是斯堪尼亞卡車空氣壓力系統(tǒng)故障數(shù)據(jù)集(Air pressure system failures in Scania trucks)[14]。數(shù)據(jù)包含了卡車的日常使用數(shù)據(jù),其重點(diǎn)關(guān)注對(duì)象是空氣壓力系統(tǒng)(APS),正類樣本包含了APS系統(tǒng)組件的故障數(shù)據(jù),負(fù)類樣本包含了與APS系統(tǒng)無關(guān)的卡車故障數(shù)據(jù),訓(xùn)練集共有60000個(gè)實(shí)例,其中負(fù)類樣本59000個(gè),正類樣本1000個(gè),測(cè)試集共有16000個(gè),其中負(fù)類樣本15625個(gè),正類樣本375個(gè),這是一個(gè)高度不平衡的數(shù)據(jù)集。每個(gè)樣本有171個(gè)屬性,其中7個(gè)為直方圖變量。因?qū)S性颍瑢傩缘拿Q進(jìn)行了匿名處理。數(shù)據(jù)集正負(fù)樣本比高達(dá)1:59,如果不進(jìn)行樣本類別平衡處理會(huì)導(dǎo)致學(xué)習(xí)器不能正確的識(shí)別正類樣本。通過分析,對(duì)負(fù)類樣本隨機(jī)采樣2510例,然后再與正類樣本組合為一個(gè)新的訓(xùn)練集。為了保證學(xué)習(xí)器的快速收斂,對(duì)新數(shù)據(jù)集進(jìn)行標(biāo)準(zhǔn)化處理,這樣可以將數(shù)據(jù)按比例縮放,使其落到一個(gè)特定的小區(qū)間,便于不同單位的指標(biāo)數(shù)據(jù)能進(jìn)行加權(quán)和比較。
在實(shí)際情況中,正類樣本預(yù)測(cè)錯(cuò)誤的損失遠(yuǎn)大于負(fù)類樣本預(yù)測(cè)錯(cuò)誤的損失。所以單純的用預(yù)測(cè)準(zhǔn)確率并不能很好的衡量預(yù)測(cè)模型的好壞,現(xiàn)引入所用數(shù)據(jù)集中提出的模型評(píng)價(jià)標(biāo)準(zhǔn)如式(6)所示
Cost=Cost_1×FN+Cost_2×FP
(6)
式中:Cost代表總成本,Cost_1代表將正類預(yù)測(cè)為負(fù)類的代價(jià),取值為500,F(xiàn)N代表將正類預(yù)測(cè)為負(fù)類的個(gè)數(shù)。Cost_2代表將負(fù)類預(yù)測(cè)為正類的代價(jià),取值為10,F(xiàn)P代表將負(fù)類預(yù)測(cè)為正類的個(gè)數(shù)。Cost的值越小,代表模型性能越好。
與正確率相比,真正率和Cost是更重要的指標(biāo),因?yàn)榻档拓?fù)類樣本錯(cuò)誤劃分為正類的數(shù)量固然重要,但這對(duì)卡車的運(yùn)行影響不大。真正率提供了有關(guān)正確識(shí)別正類樣本(卡車空壓系統(tǒng)故障)的有關(guān)信息,這對(duì)卡車的安全更加關(guān)鍵。接下來的模型訓(xùn)練及實(shí)驗(yàn)均以這三個(gè)參數(shù)作為優(yōu)化目標(biāo),其中Cost最為重要。
網(wǎng)格搜索調(diào)參效果較好但搜索速度緩慢,貝葉斯優(yōu)化與網(wǎng)格搜索調(diào)參不同,它能自動(dòng)搜索給定模型的最佳參數(shù)[15]。因本文使用算法種類較多,各模型的超參調(diào)節(jié)對(duì)模型輸出結(jié)果影響很大,本文將網(wǎng)格搜索調(diào)參與貝葉斯優(yōu)化調(diào)參結(jié)合起來對(duì)模型進(jìn)行調(diào)參,先用貝葉斯優(yōu)化來對(duì)模型進(jìn)行預(yù)調(diào)參,然后再使用網(wǎng)格搜索調(diào)參來對(duì)模型參數(shù)進(jìn)行進(jìn)一步調(diào)優(yōu),這樣做大大縮減調(diào)參時(shí)間的同時(shí)也確保了模型參數(shù)的優(yōu)異性。通過一系列調(diào)參操作,可得各模型主要超參數(shù)如下所示:
1)AdaBoost: max_depth=3,n_estimators=300,learning_rate=0.1,algorithm=‘SAMME’ 。
2)XgBoost: learning_rate=0.1,max_depth=3,n_estimators=2000,objective=‘reg:logistic’。
3)LightGBM:learning_rate=0.1,max_depth=3,n_estimators=2000,objective=‘regression’。
4)SVC:kernel=‘rbf’,C=1.8,gamma=0.01。
5)RandomForestClassfier:n_estimators=110,depth=3,custom_metric=‘gini’,oob_score=‘True’。
6)CatBoost:iterations=2500,depth=3,cus-tom_metric=‘RMSE’,learning_rate=0.03。
可以注意到,這6個(gè)算法中有四個(gè)都是回歸算法,在輸出結(jié)果時(shí)還需設(shè)置一個(gè)閾值來轉(zhuǎn)換輸出,當(dāng)屬于正類概率大于閾值時(shí)輸出為1,否則為0,本文將閾值設(shè)置為0.5,這樣符合數(shù)學(xué)規(guī)律也便于計(jì)算。需要注意的是,在對(duì)模型進(jìn)行調(diào)參時(shí)也要注意保持各模型的準(zhǔn)而不同,這樣可以使Stacking模型在第二層更好的結(jié)合各個(gè)模型的優(yōu)點(diǎn),使預(yù)測(cè)結(jié)果更加精準(zhǔn)。
為了得出模型的最優(yōu)結(jié)構(gòu)和證明本文改進(jìn)的Stacking模型的有效性,設(shè)計(jì)兩個(gè)對(duì)照實(shí)驗(yàn):
1) 算法性能對(duì)比:為了驗(yàn)證Stacking算法的有效性,在輸入相同的情況下,以正確率,真正率和Cost作為模型評(píng)價(jià)標(biāo)準(zhǔn),測(cè)試各個(gè)模型的性能。
2) Stacking模型第二層算法選擇:為了避免嚴(yán)重過擬合,Stacking模型第二層通常使用邏輯回歸、KNN等結(jié)構(gòu)較簡(jiǎn)單的算法來將第一層各模型學(xué)習(xí)到信息集成在一起。為了得出最優(yōu)算法結(jié)構(gòu),證明CatBoost作為Stacking模型第二層算法的優(yōu)異性,設(shè)置一個(gè)對(duì)照實(shí)驗(yàn),在固定Stacking模型第一層的情況下,在模型第二層使用不同的算法來測(cè)試,以Cost和真正率作為模型性能評(píng)價(jià)指標(biāo),對(duì)比各算法性能。
算法性能對(duì)比實(shí)驗(yàn)結(jié)果如表1所示。由表1可知,各算法的準(zhǔn)確率均在96%以上,Stacking算法與文獻(xiàn)14相比,真正率提高了0.8個(gè)百分點(diǎn),Cost下降了22.28%,與SVC算法相比,真正率提高了3.47個(gè)百分點(diǎn),Cost下降了45.86%,與Boosting算法中表現(xiàn)最好的LightGBM算法相比,真正率提高了0.27個(gè)百分點(diǎn),Cost下降了6.43%,與Bagging算法的代表RandomForest算法相比,真正率提高了0.8個(gè)百分點(diǎn),Cost下降了26.57%。
表1 不同算法性能對(duì)比
Stacking模型第二層算法選擇實(shí)驗(yàn)結(jié)果如表2所示,CatBoost算法相較于KNN算法,Cost下降了22.28%,真正率提高了1.07個(gè)百分點(diǎn)。相較于邏輯回歸算法,Cost下降了18.42%,真正率提高了1.07個(gè)百分點(diǎn)。結(jié)合表1的數(shù)據(jù)可知,邏輯回歸和KNN算法也沒有很好的抑制過擬合現(xiàn)象,不能很好的學(xué)習(xí)模型集成后的信息,使整體算法性能比XgBoost、LightGBM等單模型還差,而CatBoost算法能很好的處理過擬合現(xiàn)象,使Stacking算法性能大幅提升。
表2 Stacking模型第二層算法選擇實(shí)驗(yàn)結(jié)果
圖4 模型ROC曲線
圖5 模型ROC曲線局部放大圖
1)在訓(xùn)練單個(gè)模型時(shí)將貝葉斯優(yōu)化和網(wǎng)格搜索結(jié)合起來對(duì)機(jī)器學(xué)習(xí)模型進(jìn)行超參調(diào)節(jié),節(jié)省計(jì)算成本的同時(shí)獲得了更有效和可靠的參數(shù),效率大幅提高。
2)在Stacking集成學(xué)習(xí)框架中,突破性的使用CatBoost算法將多個(gè)訓(xùn)練好的強(qiáng)機(jī)器學(xué)習(xí)模型融合來預(yù)測(cè)卡車空壓系統(tǒng)故障,算法性能和魯棒性均有大幅提高,即使在數(shù)據(jù)集特征維度大且樣本比例嚴(yán)重不平衡的情況下,也能有效的學(xué)習(xí)到數(shù)據(jù)中的信息。在斯堪尼亞卡車空氣壓力系統(tǒng)故障數(shù)據(jù)集上的實(shí)驗(yàn)表明,本文所提出的算法,Cost為7710,真正率為98.40%,相對(duì)于文獻(xiàn)[14]的方法,Cost下降22.28%,真正率提高0.8個(gè)百分點(diǎn),充分證明了本文算法的有效性,適用于復(fù)雜工況下機(jī)械設(shè)備的故障診斷及預(yù)測(cè),對(duì)復(fù)雜機(jī)械設(shè)備的故障診斷研究有一定實(shí)用價(jià)值。