曹惠玲, 高升, 薛鵬
(1. 中國民航大學航空工程學院, 天津 300300; 2. 中國民航大學工程訓練中心, 天津 300300)
數(shù)據(jù)挖掘作為發(fā)動機故障診斷的重要研究方向,經(jīng)過了長期的發(fā)展。多年來,研究人員提出了各種算法和改進算法,希望提高故障診斷準確度,但改進算法大多基于提高單個分類器的精度,而各單個分類器又各有自己的優(yōu)缺點。因此,在不能確定分類器的性能是否能進一步提高的情況下,運用組合分類的方法來提高診斷精度是一種比較好的方法。通常情況下,組合分類的效果會比單個分類器的分類效果好,也更適合樣本不對稱的數(shù)據(jù)集。
Boosting算法是分類器的一種組合策略,擁有堅實的理論基礎,能將只比隨機猜測好一些的弱分類器提升為分類精度高的強分類器,在實際中也得到了深入研究和廣泛的應用。作為一種算法框架, Boosting算法幾乎可以應用于所有目前流行的機器學習算法,以進一步加強原算法的預測精度, 應用十分廣泛。AdaBoost算法是其中最成功的代表, 被評為數(shù)據(jù)挖掘十大算法之一[1]。在算法的應用領域,手寫字體識別是AdaBoost算法最早也是最為成功的實際應用之一[2],在文本分類和檢索、圖像識別和檢索、語音識別和檢索、寫字字符識別和機械故障診斷等領域都得到了廣泛應用。
在航空發(fā)動機故障診斷研究領域中,徐啟華和楊瑞[3]用AdaBoost算法對神經(jīng)網(wǎng)絡的故障分類器進行提升,驗證了故障分類器泛化能力的提高和噪聲魯棒性的改善。夏利民和戴汝為[4]用模糊分類的規(guī)則與Boosting算法結合,在滾動軸承故障問題中也取得了較好的診斷效果。孫超英等[5]將支持向量機(SVM)作為弱分類器,通過Boosting算法的加權融合,運用實測數(shù)據(jù)驗證了診斷的準確率由SVM的79.4%提高到Boosting-SVM算法的85.7%。胡金海等[6-7]也對AdaBoost算法用于航空發(fā)動機故障診斷作了大量理論與應用研究。因此,本文通過AdaBoost相關算法的結合,以SVM作為基礎分類器,建立一種多分類AdaBoost的發(fā)動機故障診斷模型。
Kearns和Vliant[8]在研究PAC學習模型時提出了一個有趣的問題:弱學習是否等價于強可學習,即Boosting問題。這一問題,經(jīng)Schapire證明給出了肯定的回答,并在Schapire和Freund[9-10]的深入研究后,提出了AdaBoost算法。該算法的核心思想是:加大分類錯誤的樣本分布權重,降低分類正確的樣本分布權重,從而得到新的樣本分布,在新的樣本分布下再次訓練得到新的弱分類器。以此類推,得到若干弱分類器,經(jīng)一定權重的疊加(boost),從而形成強分類器,如圖1所示。
圖1 AdaBoost算法結構Fig.1 Structure of AdaBoost algorithm
1.1.1 二分類問題的AdaBoost.M1算法
二分類問題一般由AdaBoost.M1算法來解決,如圖1中,T(1),T(2),…,T(M)是算法在M輪循環(huán)中產(chǎn)生的M個弱基礎分類器。在每次循環(huán)中,本輪弱分類T(m)產(chǎn)生的加權樣本分類錯誤率err(m)將決定這一輪的弱分類器在最后分類決策所占權重α(m),err(m)也決定了下一輪分類樣本的分布權重ωi+1。在進行M輪循環(huán)后,對M個分類器的分類結果進行加權組合,綜合判斷結果C(x)來進行選擇。
(1)
(2)
ωi+1=ωiexp(α(m)(Ci≠T(m)(x)))
(3)
C(x)=arg max∑α(m)(T(m)(x)=k)
(4)
由式(1)和式(2)知,err(m)帶有樣本加權,因此在計算過程中會使分類器越來越考慮錯分樣本的重要性;而參數(shù)α(m)可以直觀反映分類器重要程度,由α(m)計算式可知,錯誤率err(m)越小,α(m)將會越大。更新樣本權重ωi+1并歸一化后,在新的樣本權重分布下,進入下一輪循環(huán)。由此,可得到M個加權的弱分類器。
AdaBoost.M1算法只需要調節(jié)訓練輪數(shù)M,要求α(m)為正數(shù),即1-err(m)>1/2,表明對二分類弱分類器要求精度只需大于50%,比隨機猜想好就可以,而正確率會隨著訓練數(shù)M的增加而增加,理論上可以趨近于1。實際中,由于過分專注分類錯誤的樣本,可能會導致數(shù)據(jù)不平衡的退化問題[11],對此可以通過AdaBoost一些改進算法來避免退化。
對AdaBoost算法的改進主要集中在以下3個方面:①調整權值更新方法,以提升分類器性能、減緩退化等;②改進AdaBoost的訓練方法,使AdaBoost能更高效地進行拓展;③結合其他算法和一些額外信息而產(chǎn)生的新算法,達到提高精確度的目的[12]。
1.1.2 多分類問題的AdaBoost.SAMME算法
由于AdaBoost算法只是一種用來提升分類精度的組合策略,算法本身并不能對樣本進行分類,因此解決分類診斷問題時,還需要選擇適合所要解決問題的基礎分類器。
SVM基于統(tǒng)計學習理論,采用結構風險最小化,以提高學習機器泛化能力。在小樣本、非線性、高維模式的情況下,能獲得良好的統(tǒng)計規(guī)律,適用于航空發(fā)動機故障樣本數(shù)目少的情況。在模式識別的問題中,SVM的基本思想是:尋找最大分類間隔的最優(yōu)分類面。
線性分類時,設n個樣本訓練集D={(xi,yi)|i=1,2,…,n},x∈R,y∈{-1,1}。
(5)
yi(ωT·xi+b)-1≥0i=1,2,…,l
(6)
當訓練樣本線性不可分且存在噪聲問題時,需要引入非負松弛變量ξi,i=1,2,…,n。求解最優(yōu)分類面問題轉化為
(7)
yi(ωT·xi+b)-1+ξi≥0
ξi≥0i=1,2,…,n
(8)
式中:C為規(guī)則化常數(shù)(懲罰參數(shù)),用來權衡經(jīng)驗風險∑ξi最小化與復雜性(VC維),數(shù)值越大,表示對分類錯誤懲罰越大。
通過構造拉格朗日函數(shù):
∑αi[yi(ωTxi+b)+ξi-1]-∑βiξi
(9)
將問題轉化為對偶泛函數(shù),求解得到?jīng)Q策函數(shù):
f(x)=sgn{∑αiyi(x·xi)+b}
(10)
AdaBoost算法與SVM算法結合,產(chǎn)生了AdaBoost-SVM算法。該算法屬于AdaBoost算法改進措施中第3種改進算法,即采用與其他算法結合的方法來產(chǎn)生改進的算法。以SVMRBF(高斯徑向基核函數(shù)SVM)作為AdaBoost算法的弱分類器,由于在AdaBoost算法中要求弱分類器不能太強也不能太弱,太強容易導致數(shù)據(jù)退化問題,太弱也要滿足比隨機猜測要好。用SVM做基礎分類器時,為避免弱分類器錯誤高度相關,需通過核參數(shù)σ和規(guī)則化常數(shù)C的調整,來改變SVMRBF的分類性能復合要求。采用AdaBoost-SVM算法解決分類問題時,首先應調整參數(shù)C和σ初值對應較弱學習能力的SVM,保持合適的C值不變,在多輪循環(huán)中使用這一σ值,直至分類正確率低于閾值。此時,只需調節(jié)σ的數(shù)值來提高后續(xù)循環(huán)中所使用分類器的分類精度,依次繼續(xù)循環(huán),實現(xiàn)對SVM使用AdaBoost算法進行準確度的提高。
結合AdaBoost.SAMME算法和AdaBoost-SVM算法,以SVM作為基礎弱分類器,本文設計了一種多分類的AdaBoost算法用于航空發(fā)動機的故障診斷。
算法具體流程如圖2所示。
在輸入訓練樣本后,根據(jù)交叉驗證法,選定SVM參數(shù)范圍。設定適當訓練循環(huán)數(shù)M、規(guī)則化常數(shù)C值、σ初始值σini、σ下限值σmin以及σ減小步長σstep。采用AdaBoost.SAMME算法對分類器權重α(m)進行調整,使分類情況適用于發(fā)動機故障類型的多分類情況;并且以SVM為基礎分類器,以適應航空發(fā)動機故障診斷中故障樣本數(shù)量少、不對稱、高維度的特點。以此利用AdaBoost算法來提升單獨使用SVM進行發(fā)動機故障診斷的能力。
圖2 發(fā)動機故障診斷的多分類AdaBoost算法流程圖Fig.2 Flowchart of multi-classification AdaBoost algorithm for engine fault diagnosis
2.1.1 數(shù)據(jù)來源
發(fā)動機故障診斷指印圖(見圖3)是實際診斷中的重要工具,標識了不同故障對應的發(fā)動機主要性能參數(shù)的小偏差量。根據(jù)小偏差故障數(shù)據(jù)的線性關系,不同程度的同類故障數(shù)據(jù)之間存在比值關系。實際偏差數(shù)據(jù)與指印圖偏差數(shù)據(jù)比值為1時,表示該故障與指印圖中對應故障的類型和程度完全一致;當比值為N時,表示該故障與指印圖中對應故障的類型一致,但程度不同。所以在運用指印圖進行故障診斷時,還應考慮如何正確識別故障發(fā)展階段程度不同的同一故障。
為了使通過指印圖所得數(shù)據(jù)能夠用于實際診斷,應將指印圖中故障標識數(shù)據(jù)進行處理,以便得到適應范圍更廣的訓練數(shù)據(jù)。本文參考文獻[16]中的相關系數(shù)法和比值系數(shù)法,在此基礎上提出了單位向量法,由指印圖故障小偏差數(shù)據(jù)作為基礎訓練數(shù)據(jù)。
選取PW4000發(fā)動機指印圖作為基礎數(shù)據(jù),提取性能參數(shù)小偏差數(shù)據(jù),如表1所示。
為囊括不同程度的所有故障并得到模型所需訓練數(shù)據(jù),需對基礎數(shù)據(jù)進行擴充。比值系數(shù)法是將指印圖各故障偏差數(shù)據(jù)ΔEGT(排氣溫度偏差)、ΔFF(燃油流量偏差)、ΔN2(高壓轉子轉速偏差)、ΔN1(低壓轉子轉速偏差)轉換為ΔEGT/ΔFF、ΔN2/ΔFF、ΔN1/ΔFF,用故障數(shù)據(jù)的相對比值來表征故障類別。相關系數(shù)法是用原始故障偏差數(shù)據(jù)之間,某一故障與各故障之間的線性相關系數(shù),將4維表征數(shù)據(jù)變?yōu)?4維。
單位向量法是將指印圖中各偏差數(shù)據(jù)進行單位向量化,使各故障向量落于單位向量組成的“球”空間中,從而規(guī)避同一故障程度差異的影響,如表2所示。在圖3所示指印圖中,還存在一項數(shù)據(jù)ΔEGT/ΔFF作為診斷的指標,在單位向量法下,加入ΔEGT/ΔFF指標來擴充數(shù)據(jù)識別維度,作為該方法的補充。
圖3 發(fā)動機故障診斷指印圖Fig.3 Fingerprint map for engine fault diagnosis
故障序號故障類別ΔEGT/℃ΔFF/%ΔN2/%ΔN1/%1+5℃ TAT-17.0-1.4-1.0-1.02-5℃ TAT17.01.41.01.03+0.02MACH2.0-2.2-0.1-0.14-0.02MACH-2.02.20.10.15+500 ALT02.4006-500 ALT0-2.4007-2% HPC12.01.600?24-2% LPT-2.0-2.10.7-1.7
表2 單位向量法故障標識
2.1.2 數(shù)據(jù)噪聲的添加方法
噪聲的添加可以使診斷模型適應隨機偏差的影響,增加模型的魯棒性。利用指印圖故障偏差數(shù)據(jù)添加噪聲進行訓練時,存在2種噪聲添加思路:
1) 在表1所示原始偏差數(shù)據(jù)加入一定程度的隨機噪聲,然后用比值系數(shù)法等方法處理后所得數(shù)據(jù),作為訓練和測試樣本。診斷時,需要將實際參數(shù)的偏差數(shù)據(jù)進行比值方法等處理得到類似表2中的轉化數(shù)據(jù),再進行診斷。
2) 在表2的數(shù)據(jù)中,直接根據(jù)已經(jīng)轉化后的數(shù)據(jù)進行噪聲添加。此時如果直接引入同一程度的隨機誤差,顯然對各標識數(shù)據(jù)影響程度不同。因此應添加自身數(shù)值一定程度(比例)的偏差,來保證噪聲數(shù)據(jù)一定程度也呈故障的線性比例。
在第1種思路下,由于采用比值系數(shù)法相除后會將偏差放大,單位向量各故障標識數(shù)據(jù)之間差值較小。因此,原始數(shù)據(jù)不宜加入過大噪聲,而相關系數(shù)由于維數(shù)增多和故障類型增多會使問題復雜化,故障問題增多時不適合這一情況。在第2種思路下,可以加入較大的噪聲,但應根據(jù)具體故障標識數(shù)據(jù)采用不同程度的噪聲添加。
訓練數(shù)據(jù)準備方法的不同對訓練結果會產(chǎn)生較大的影響。為了能夠加入較大噪聲來體現(xiàn)AdaBoost算法的提升效果,采用第2種噪聲添加思路來進行診斷模型的分析。構造相應方法下的訓練集24×200組、測試集24×100組數(shù)據(jù)進行訓練和測試。在多分類AdaBoost診斷模型建立之前,要先用交叉驗證法,分別尋找3種方法的基礎分類器——SVM參數(shù)C與σ合適的取值范圍。這樣在多分類AdaBoost診斷模型訓練時,預設置訓練輪數(shù)M為50次來觀察訓練情況,由文獻[14]知,σ的減小步長σstep的設置對最終的性能影響不大,通常設置為1~3,實驗中設置其為1。
圖4 不同訓練數(shù)據(jù)下單個SVM模型的正確率Fig.4 Accuracy of single SVM under different training data
圖4顯示了在交叉驗證情況下,單個SVM采用不同的數(shù)據(jù)準備方法獲得的訓練數(shù)據(jù),所建4類診斷模型的診斷正確率。圖中:C=2c,σ=2g??梢钥闯?,由于添加了較大噪聲,各單一診斷模型正確率并不高。在訓練中,弱分類器選取最優(yōu)的C值和核參數(shù)σ情況下,單個弱分類器(高斯徑向基核函數(shù)C-支持向量分類機)的最高正確率如表3所示。通過圖4中單個SVM正確率隨核參數(shù)的變化范圍,可以對多分類AdaBoost算法中的相關參數(shù)進行設置。經(jīng)多分類AdaBoost算法訓練后,得到M個加權弱分類器進行診斷。以比值系數(shù)法中的訓練過程為例,在M=50時,第50次的迭代中產(chǎn)生的50個弱分類器的訓練誤差情況如圖5所示??梢钥吹?,采用的各個弱分類器的正確率均低于單個弱分類器的最高正確率。
在選定訓練數(shù)據(jù)和訓練方法后,弱分類器的個數(shù)選擇會直接影響到訓練時間和精度。圖6顯示了運用AdaBoost算法,不同診斷模型的錯誤率隨弱分類器個數(shù)增加的變化情況??梢钥闯觯跏紩r單個弱分類器的精度并不高,在弱分類器數(shù)量不多(小于5個)的情況下,弱分類器錯誤率明顯上升,當弱分類器個數(shù)增多時,錯誤率明顯下降,最后趨于相對穩(wěn)定的波動。AdaBoost算法之所以能提升正確率,在于訓練多個模型來診斷,模型增多增加了訓練時間,這一算法實質是以犧牲時間效率來提高正確率,因此可根據(jù)計算時間和診斷準確率綜合確定弱分類器的數(shù)量,如上例弱分類器個數(shù)為20即可。
注意到在圖6中,相關系數(shù)法和單位向量法的相關診斷模型錯誤率沒能隨著弱分類器個數(shù)的提升而進一步減小。對此進行分析發(fā)現(xiàn),與比值系數(shù)法相比,采用相關系數(shù)法和單位向量法準備的一些故障數(shù)據(jù)標識過于接近(如表4中第7、8、9類3種故障),導致某些故障與另一種故障容易混淆。而AdaBoost.SAMME算法雖然放寬弱分類器錯誤率限制,但其沒有關注到弱分類器的質量,不能保證每次被弱分類器正確分類的訓練樣本權值一定大于其錯分到其他任一類別的訓練樣本權重,從而不能確保最終強分類器正確率的提升[17],即算法中多個弱分類器將某一故障固定地診斷為另一種故障引起診斷錯誤。
通過第2種思路的噪聲添加處理后,各數(shù)據(jù)準備方法下用多分類AdaBoost算法在進行20次迭代訓練后,模型診斷正確率如表3所示。
通過表3能夠看出,不同訓練數(shù)據(jù)加入相同程度的噪聲后,單個SVM分類正確率并不高,由于單位向量法的訓練數(shù)據(jù)數(shù)值比較接近,因此其弱分類器的最高正確率比另外2種方法低,但在增加了一項維度后,正確率明顯有所提高。但在弱分類器最高正確率較低的情況下,多分類AdaBoost算法組合M個正確率較低的弱分類器的診斷結果后,卻能顯著地提升診斷的正確率。
由上述分析可知,采用多分類AdaBoost算法后模型診斷正確率均有顯著提升,同時發(fā)現(xiàn),初始訓練數(shù)據(jù)對診斷結果也會產(chǎn)生較大影響,這也反映了各種數(shù)據(jù)準備方法所構建的數(shù)據(jù)在反映不同故障特征時的差異。
綜上可知,在實際診斷中,只通過某種訓練數(shù)據(jù)所得模型進行診斷,可能診斷某些故障中出現(xiàn)錯誤。因此,為了全面反映故障的特征,在滿足指印圖數(shù)據(jù)所代表故障含義的基礎上,通過多種訓練數(shù)據(jù)進行建模,再將多種建模結果同時用于分析診斷,可以獲得比較可靠的診斷結果。
表3 交叉驗證法中最優(yōu)參數(shù)下的正確率和經(jīng)AdaBoost算法提升后的正確率
圖5 M=50時各弱分類器的訓練誤差Fig.5 Training errors of each weak classifier when M=50
圖6 不同模型診斷錯誤率隨弱分類器個數(shù)的變化Fig.6 Variation of diagnosis error rate of different models with number of weak classifier
故障序號123456789…2411-1-0.8030.8030.311-0.311-0.994-0.995-0.993…0.377?7-0.9940.9940.734-0.734-0.2080.20810.9990.999… -0.4358-0.9950.9950.740-0.740-0.2170.217111 …-0.4229-0.9940.9940.734-0.734-0.2080.2080.99911 …-0.405?240.377-0.3770.031-0.031-0.4140.414-0.435-0.422-0.405…1
選取某航空公司3起未造成嚴重后果,只引起特征參數(shù)不正常的故障案例進行診斷分析。通過監(jiān)控軟件觀察到發(fā)動機參數(shù)短時間有較大變化,表明發(fā)動機狀態(tài)不正常,由各參數(shù)與基線值的偏差分析,得到相應參數(shù)偏差值[18]。已知3起案例的性能參數(shù)小偏差值如下。案例1:ΔEGT=22℃,ΔFF=2.8%,ΔN2=1%,ΔN1=0.2%;案例2:ΔEGT=8℃,ΔFF=1%,ΔN2=0%,ΔN1=-0.2%;案例3:ΔEGT=-50.3℃,ΔFF=-1.13%,ΔN2=-2.7%,ΔN1=-22.57%。根據(jù)上述4個模型進行診斷,結果如表5所示(表5中(1)、(2)分別表示在第1種、第2種噪聲添加方法下所得診斷模型的診斷結果,診斷結果的編號值表示指印圖中標識的第幾種故障)。
由于一些故障標識數(shù)據(jù)間存在高度相似性(見表3)和一些故障類型存在相關性,各模型診斷正確率并不相同,因此模型診斷可能存在一定偏差。但通過表5中各分類模型診斷結果綜合分析,最有可能的故障為7、7、1,根據(jù)指印圖可知第7類故障為高壓壓氣機組件性能損失,第1種為總溫指示偏差。實際故障情況,案例1為高壓壓氣機葉片出現(xiàn)損壞(見圖7),案例2為某2.5級放氣活門連接曲柄與連接環(huán)出現(xiàn)脫落,案例3為Tt2探頭出現(xiàn)問題。案例1和案例3診斷結果完全正確。案例1中,當發(fā)動機高壓壓氣機葉片出現(xiàn)損傷時,發(fā)動機壓氣效率會降低,推力也會降低,為保持推力穩(wěn)定,需要增加燃油量使壓氣機轉速增加,來提高增壓比,因此各參數(shù)均出現(xiàn)增加;案例2中,2.5級放氣活門全開,會使引氣量減少,壓氣機效率表現(xiàn)出下降,因此會影響高壓壓氣機組件效率;案例3中,Tt2探頭出現(xiàn)問題時,由于測量參數(shù)需要利用總溫進行修正,在發(fā)動機EPR測量參數(shù)不改變時,這4個氣路參數(shù)會有同正負方向的偏差,且ΔEGT偏差過分異常表明了指示系統(tǒng)故障的可能性較高。
由上可見,根據(jù)上述方法所建立的模型,在實際診斷中診斷準確性很高,對于故障診斷具有較大的指導意義。由于指印圖中標識的一些故障只是相關單元體的性能問題,如案例2中并未指明導致故障具體原因,因此在實際故障診斷中仍需采用孔探等其他手段進一步的分析和探查。
表5 案例診斷結果
圖7 案例1的實際排故檢測結果Fig.7 Actual detection and troubleshooting results of Instance 1
運用多分類AdaBoost算法的綜合改進算法,以SVM為基礎分類器,顯著提高了診斷的準確率。在實際案例診斷中,采用不同訓練數(shù)據(jù)建立了多個AdaBoost診斷模型,將其用于實際故障的診斷,通過綜合分析診斷結果,可以更加準確地判斷故障種類。
需指出的是,本文采用的AdaBoost算法及其改進算法仍有改善空間[17],如對難以區(qū)分的樣本進行再處理等方法,可以在后續(xù)研究中加以完善,從而能夠進一步提高訓練模型的正確率。