鄭日暉,岑 健,陳志豪
(1. 廣東技術師范大學, 廣東 廣州 510665;2. 廣東水利電力職業技術學院, 廣東 廣州 510635)
隨著工業的發展,故障診斷已經成為生產過程中不可或缺的重要環節。工業4.0時代的到來,推動人工智能在各行各業中得到廣泛應用。智能故障診斷的其中一個研究領域,就是運用機器學習的方法,希望機器不但具有人類的思維,并且可以做出比人類更快、更準的診斷。然而機器學習的算法繁多且每種算法均帶有影響模型性能的參數,在實際應用中不僅要適當地選用模型,并且要結合數據收集的情況對算法的參數進行尋優。如王丹妮等[1]采用粒子群算法對BP神經網絡算法的初始權值和閾值進行優化;張文雅等[2]采用網格搜索法對支持向量機的懲罰系數和核函數參數進行尋優;李剛等[3]采用遺傳算法對隨機森林的參數進行優化。粒子群算法更適用于對實數進行尋優,對于整數的尋優精度不高;網絡搜索法對于多參數尋優往往開銷大、耗時長;遺傳算法編程比較復雜、收斂速度慢。
決策樹算法具備容易實現、便于理解等優點[4],并且其參數較少,方便尋優。本文通過控制決策樹葉子節點最小樣本數來控制決策樹的生長,尋找合適的參數進行建模并將其用于智能故障診斷。
決策樹是用于實現數據分類或回歸預測的算法。決策樹的運算過程是將實測數據樣本從根節點輸入,在每個父節點中進行分裂選擇子節點,從根節點開始通過唯一的一條路徑一直到葉節點,實現最終的分類。
早期的決策樹分類器采用CLS算法,該算法的主要思想是在每個節點處從當前剩下的候選屬性中隨機選取。由于每個屬性對最終類別的影響程度不同,因此該方法存在一定的盲目性,缺乏科學有效的規則來選取分裂屬性,擬合效果難以保證。所以決策樹建樹過程需要解決的關鍵問題是每個節點分裂屬性的選擇。為了解決選取最優分裂屬性的問題,J.Ross Quinlan根據信息理論提出了ID3決策樹算法[5]。在信息理論中,用信息熵H(x)(單位為bit,以下省略)來度量一個隨機變量x的不確定度,有

其中,pi為隨機變量x出現的概率。
選取某個屬性A作為分裂屬性時,由于產生了條件約束,減少了不確定性,故而產生了信息增益。顯而易見,信息增益越大,不確定度減少幅度越大,所以ID3算法核心思想是通過計算當前節點的最大信息增益來選取最優分裂屬性。
設樣本D的類別種數為k,在沒有任何屬性約束的情況下,樣本D的信息熵為

設屬性A中有n個分支,a為第j個分支類別屬性序號,則A屬性條件約束下的信息熵為

信息增益的計算公式為:

相對CLS算法而言,ID3算法確定了選擇分裂屬性的方向,使決策樹生長集約化、合理化。但由于信息增益會偏好取值較多的屬性,導致分類器出現局部最優解。針對ID3算法的不足,Quinlan于1993年提出了C4.5決策樹算法[6]。C4.5算法是在ID3算法的基礎上進行改進優化,引入一個參數HC(D)對信息增益進行懲罰,懲罰參數計算如下:

其中v為屬性A的取值個數,此時將衡量分裂屬性優劣順序的指標

稱為信息增益率。
CART算法[7]是早在1984年由Brei-man等人提出的另一種經典算法,其核心思想是基于Gini系數對分裂屬性進行選取。樣本集合D的Gini系數為

其中pi代表類別第i個類別被選中的概率。如果集合D被劃分成兩個子集D1和D2,則此次劃分的Gini系數為

ID3算法只適用于處理屬性為有限離散值的情況,對屬性為連續實數的情況無能為力,雖然C4.5可以對屬性為連續實數的情況進行處理,但其計算過程相對復雜;由于CART算法不僅適合處理屬性為連續實數的情況,并且其計算過程簡單,所以本文的決策樹模型均采用CART算法。
決策樹算法雖然易于實現且運算速度快,但在建樹過程中如果任其生長而不加以控制,將可能造成訓練過擬合,不僅增加運算開銷和時耗,同時使得模型的泛化能力變差。控制決策樹生長一般采用剪枝的方法,而剪枝有預剪枝和后剪枝之分。預剪枝是在決策樹生長過程中同時采用一些指標來決定節點是否不再分裂并用葉子節點代替;后剪枝是在決策樹充分生長后采用一些指標來決定是否剪去子樹而用葉子節點代替。預剪枝的風險是可能導致決策樹欠擬合;后剪枝一般不會導致欠擬合,但是由于后剪枝是在決策樹充分生長之后進行的,所以其運算開銷遠大于預剪枝。
本文優化決策樹的思路是采用預剪枝的方法,在決策樹節點上設定一個閾值,將該閾值定義為葉子節點最小樣本數。當決策樹的節點中所含的樣本數少于該閾值時則停止分裂,并將該節點設定為葉子節點,從而控制決策樹的生長深度。由于決策樹節點中的樣本數為自然數且變化范圍不大,所以采取可行域內遍歷尋優的方法尋找合適的葉子節點最小樣本數。
值得一提的是,決策樹的生長深度并不與葉子節點最小樣本數一一對應,葉子節點最小樣本數在一定的變化區間內,決策樹將保持相同的深度及相應的分類準確度。因此,本文調參尋優的思路是為參數尋找一個合理的區間使得模型最佳。
對模型參數進行優化的過程中,需要定義一個優化的目標。對于決策樹而言,優化的目標不僅是希望提高分類準確率p,同時也希望模型不要因為過于復雜而增加運算開銷、影響實時性。考慮到決策樹算法的節點數N與決策樹的深度是指數關系,反過來決策樹的深度與節點數N為對數關系,因此采用log2N來表征決策樹的復雜程度,也就是說,N越大模型越復雜,N越小模型越簡單。綜合以上分析,優化的目標是希望p越大、log2N越小則效果更理想,所以定義f=p/log2N為評價函數,將其作為優化目標,將葉子節點最小樣本數k作為優化對象,則優化的過程就是尋找合適的k的取值范圍使得f=p/log2N越大越好。需要說明的是,本文采用五折交叉驗證對分類準確率p進行計算。
綜合2.1、2.2的分析,本文調參優化的方法是通過在設定區間內搜索理想的葉子節點最小樣本數k的取值范圍,使得同時兼顧分類準確率與模型復雜程度的評價函數f=p/log2N盡可能大,流程如圖1所示。

圖1 調參優化流程
為了驗證本文調參優化方法的有效性,采用某機械故障數據樣本集進行實驗,數據樣本集共包含4類故障狀態,每類故障狀態均含有100個樣本,每個樣本均含有36個特征。基于優化決策樹的智能故障診斷方法流程如圖2所示:首先通過調參優化步驟獲得最優參數的取值區間,然后在該區間內任選1個優秀參數k’并采用劃分好的訓練集建立優化后的決策樹,最后采用測試集進行分類準確率的測試。

圖2 基于優化決策樹的智能故障診斷方法流程
初始化葉子節點最小樣本數為k=1,設定其最大值K=70,遍歷k從1-70進行建模并考察相應的評價函數,實驗結果如圖3所示。

圖3 調參優化實驗結果
由圖3可知,當葉子節點最小樣本數k小于8時,由于從不受約束開始到逐步控制,評價函數從數值0.2呈現逐漸增大的趨勢;當葉子節點最小樣本數k大于62時,對決策樹生長的限制過度,出現了欠擬合,分類準確明顯下降,從而導致評價函數遞減;當葉子節點最小樣本數k落在區間[8,62]內時,評價函數較平穩地保持在高位數值0.33左右。由以上分析可得,當葉子節點最小樣本數k在[8,62]內取值時,可以獲得較理想的決策樹模型。
為了驗證優化后模型的性能,將決策樹最小樣本數設置為40,采用數據集進行建模并測試,決策樹算法模型如圖4所示。
采用留出法,使用數據集建模并測試:將400個數據樣本隨機劃分出300個作為訓練集,留出100個樣本進行測試,實驗分類結果如圖5所示。
由圖5可見,優化后的決策樹模型對于第一種故障的21個數據樣本全部分類正確;第二種故障的23個數據樣本中,有16個分類正確,有4個被錯誤識別為第三種故障,有3個被錯誤識別為第四種故障;第三種故障的30個數據樣本全部分類正確;第四種故障的26個數據樣本中,有25個分類正確,有1個被錯誤識別為第一種故障。統計四種故障情況的100個數據樣本中,共有8個數據樣本分類錯誤,分類準確率為92%。
如果不對決策樹算法進行優化,決策樹算法模型則如圖6所示,實驗分類結果如圖7所示。

圖4 優化的決策樹算法模型

圖5 優化的決策樹算法分類結果

圖6 沒有優化的決策樹算法模型

圖7 沒有優化的決策樹算法實驗結果
由圖7可見,未經過優化的決策樹模型對于第一種故障的21個數據樣本中有20個分類正確,有1個被錯誤識別為第四種故障;第二種故障的23個數據樣本中,有16個分類正確,有1個被錯誤識別為第一種故障,有4個被錯誤識別為第三種故障,有2個被錯誤識別為第四種故障;第三種故障的30個數據樣本全部分類正確;第四種故障的26個數據樣本中,有23個分類正確,有3個被錯誤識別為第一種故障。統計四種故障情況的100個數據樣本中,共有11個數據樣本分類錯誤,分類準確率為89%。
此外對比圖4、6可知,沒有進行優化的決策樹模型共有5層、21個節點;優化后的決策樹模型只有3層且僅有7個節點。

表1 優化前后的決策樹模型對比
表1顯示:優化后的決策樹模型不僅提高了分類準確率,并且很大程度地減小了決策樹模型的復雜程度。
本文針對決策樹性能受其參數影響問題,提出了一種基于優化決策樹的智能故障診斷方法。
(1)分析了決策樹節點最小樣本數對決策樹算法性能的影響,提出了以決策樹節點最小樣本數為優化對象的優化思路。(2)分析了影響決策樹算法性能的因素,構建了同時兼顧分類準確率和模型復雜程度的模型性能評價函數。(3)設計了以決策樹節點最小樣本數為優化對象、以模型性能評價函數為優化目標的優化流程。(4)通過實驗證明,未進行優化的決策樹模型共有5層、21個節點,分類準確率為89% ;優化后的決策樹模型只有3層且僅有7個節點,分類準確率為91%。這說明本文提出的優化方法應用于智能故障診斷中不僅可簡化模型,還可提高模型分類準確率。