顏詩旋,朱 平,劉 釗
(1.上海交通大學,機械系統與振動國家重點實驗室,上海 200240; 2.上海市復雜薄板結構數字化制造重點實驗室,上海 200240;3.上海交通大學設計學院,上海 200240)
機器學習、大數據等人工智能技術與汽車行業的聯系日益緊密,一個典型的應用場景[1]是對采集的汽車故障數據集建立機器學習模型,以數據驅動的方式,預測汽車是否發生故障,從而及時對發生故障的車輛進行維修。使用機器學習模型預測汽車故障的發生,對于降低安全事故風險、保障生命財產安全等具有重要意義。
隨著汽車故障數據的采集與存儲能力的提升,汽車故障數據集逐步向大樣本、高維度發展,XGBoost、LightGBM等最新的機器學習模型開始應用于故障預測中。李衛星等[2]使用XGBoost模型,對4種工況下柴油機失火故障的平均預測準確率達90%以上。楊正森[3]使用 XGBoost和LightGBM模型對包含100多萬個樣本的工業產品數據集進行故障預測,結果優于經典的隨機森林模型。Ke等[4]基于多個案例測試的結果,推薦在大規模數據集上使用訓練速度快、預測能力好的LightGBM模型。然而,實際收集到的汽車故障數據普遍存在類別不平衡[5]的特點:無故障的樣本數量多于有故障的樣本數量,前者所能提供的信息量更多,使模型偏向于預測新的樣本為無故障,導致故障查全率較低。針對類別不平衡的特點,Costa等[6]在模型損失函數中加入類別權重,將故障樣本的類別權重設置為不平衡比(無故障樣本數與有故障樣本數的比值),降低了類別不平衡對故障查全率的影響,但其人為指定了類別權重,并未考慮其他可能的取值。Biteus等[7]將采用機器學習模型進行預測時的分類閾值降低至0.062,提高了對汽車故障樣本的預測能力,但其選用的隨機森林模型訓練時間長達80 min,有必要使用更為高效的模型以提升效率。
LightGBM模型在大樣本、高維度的故障預測任務中呈現出訓練速度快的優勢,但現有研究在使用LightGBM模型時未考慮類別不平衡對故障查全率的影響。雖然有研究通過設置類別權重來提高對類別不平衡數據集的預測能力,但類別權重的設定多依賴于人工經驗直接指定,未考慮如何使用優化的方法進行設定。
為增強對大規模、類別不平衡的汽車故障數據集的預測能力,本文中提出一種基于改進LightGBM模型的汽車故障預測方法:設置類別權重和L1正則化項修正模型的損失函數,并通過貝葉斯優化得到修正項參數的取值;降低模型預測時的分類閾值,提高樣本被分為故障樣本的概率。通過在斯堪尼亞貨車故障數據集上的實驗,驗證了本文方法的有效性。
LightGBM(light gradient boosting machine)模型由Ke等人在2017年提出[4],是一種以決策樹為基學習器的集成學習模型,相比于 GBM[8]和 XGBoost[9]等模型,通過使用直方圖算法、帶深度限制的按葉生長策略等改進,顯著提高了模型訓練速度,在面對大樣本、高維度的數據集時具備訓練速度快的優勢。
決策樹在尋找最佳分裂結點時,對每個特征需要遍歷所有的樣本點來計算信息增益,即便有XGBoost等模型使用了預排序算法優化此過程,在面對大規模數據時仍極其耗時。
LightGBM模型使用了直方圖算法尋找最佳分裂結點,其原理如圖1所示。直方圖算法的流程為:首先,對每個特征的取值用分桶的方法離散化,將在某個范圍內的取值劃分到某一段(bin)中,例如將[0,1.5)范圍的取值變為 0,[1.5,3.0)范圍內的取值變為1等,從而實現將取值離散化為k個整數;然后,構建一個寬度為k的直方圖,實現用直方圖代替原有的數據;最后,將借助于構建的直方圖遍歷數據,計算每個bin中樣本的梯度、樣本數量等以尋找最優分裂結點,無需再逐個遍歷所有的數據,從而顯著減少了計算量,提高了訓練速度。

圖1 直方圖算法示意圖
此外,LightGBM模型使用基于梯度的單邊采樣(gradient-based one-side sampling,GOSS)進行數據采樣,使用互斥特征捆綁(exclusive feature bundling,EFB)進行特征采樣,在進一步加快模型訓練效率的同時,對數據和特征進行采樣也增加了學習器的多樣性,從而潛在地提升了模型的泛化能力[10]。
決策樹在生長時,大多采用按層生長的策略,如圖2所示。按層生長遍歷全部數據計算各結點的增益,進而對同一層的葉子全部進行分裂。這一方法并行性很好,但效率較低:很多葉子的增益已經足夠小,不再有必要進行分裂,而那些增益大的結點才是應進行分裂的結點。

圖2 按層生長策略示意圖
LightGBM模型使用按葉生長策略,如圖3所示。在計算各結點的增益后,僅對增益最大的一個葉子繼續進行分裂,而其他結點不再分裂。在一樣的分裂次數下,按葉生長策略更加快速高效。但這樣可能會生長出非常深的決策樹,導致過擬合,即對訓練集進行了過度的學習,影響在測試集上的泛化能力。因此,在LightGBM模型中設置樹的最大深度(max_depth)這一參數,以限制決策樹的深度,即決策樹的層數,以控制模型的復雜度,降低過擬合的風險。

圖3 按葉生長策略示意圖
考慮到真實場景下的汽車故障數據集常具有類別不平衡的特點:無故障的樣本數量占多數,導致模型對故障樣本的查全率較低。為增強機器學習模型對汽車故障的預測能力,對LightGBM模型進行兩方面的改進:在模型訓練時,修正模型損失函數,引入類別權重和L1正則化項,并通過貝葉斯優化,獲得修正項參數的最優取值,從而加強對故障樣本的學習;在模型預測時,降低分類閾值,以提高測試樣本被分為故障樣本的概率。具體改進如下。
(1)修正損失函數
損失函數反映了模型訓練過程中模型的預測類別與真實類別之間的差異。模型訓練的過程,即是損失函數最小化的過程,損失函數的度量關乎模型訓練的好壞[11]。對一個數據集 D=(x1,x2,x3,…,xm),共有m個樣本,其中第i個樣本xi的類別為yi,yi=0為無故障,yi=1為有故障,標準 LightGBM模型的損失函數為

由于樣本數量的差異,有故障樣本所累積的損失小于無故障樣本所累積的損失,使無故障樣本所累積的損失在LightGBM模型的損失函數中占據主導地位,導致模型對無故障樣本的學習更為充分:模型總是在學習如何正確地預測出無故障樣本。這偏離了使用機器學習技術預測有故障樣本的初衷。此外,考慮到收集的數據僅是真實場景下的部分數據,不可能囊括所有可能的工況,須防止模型對收集到的訓練集進行過度的學習,降低過擬合風險。
本文中對LightGBM模型的損失函數進行如下修正:引入類別權重,為有故障樣本設置更大的權重,從而在損失函數中放大有故障樣本的損失;同時引入L1正則化項來控制模型的復雜度,以降低過擬合風險。正則化手段主要有L1正則化和L2正則化兩種,本文中使用L1正則化的原因是:L1正則化比L2正則化更易得到稀疏解,從而使模型參數ω=0的數量更多,以便更顯著地控制模型復雜度,降低過擬合風險[12]。經修正后的損失函數為

式中:δ‖ω‖1為L1正則化項;ω為該樹的參數,可由決策樹自動獲得;δ為L1正則化系數;ai為類別權重系數;γ為少數類權重系數,出于放大少數類損失的目的,γ應設置為一個大于1的整數。
對于少數類的權重系數γ和L1正則化系數δ,本文中通過貝葉斯優化獲得其取值。貝葉斯優化方法[13]假設待優化的參數與目標函數(即模型的損失函數)之間符合某種先驗分布,然后通過采集函數不斷地加入新的參數樣本點,更新擬合出分布形狀,找出使分布函數取最小值的參數,它在效率上優于網格搜索,與隨機搜索相比,較不容易陷入局部最優。由Bergstra等[14]提出的TPE算法比高斯過程等傳統的貝葉斯優化方法可更加高效地找到最優參數,因而本文中使用TPE算法搜索出γ、δ兩個參數的最優取值。
(2)降低分類閾值
使用機器學習模型進行預測時,對于每個樣本類別的預測結果ypredk為0(無故障)或1(有故障)。實際上,模型對每一個測試樣本的預測結果ypredk,是與分類閾值T進行比較后得出的:模型先計算出樣本的預測值youtk,它是一個[0,1]區間內的實數值;然后將它與分類閾值T進行比較,若小于閾值則分類為0,否則為1。通常情況下,分類閾值T設置為0.5,因此,標準LightGBM模型的預測結果為

對于式(4),可以理解為:youtk實際上表達了樣本為1的可能性;而分類閾值T設置為0.5,意味著模型認為該樣本為無故障和有故障的機率相等。然而當數據集中不同類別的樣本數量不同時,將閾值設置為0.5顯然忽視了數據集類別不平衡的特點。因而,使用“閾值移動”的方法[11],將分類閾值T降至0.5以下,使預測結果盡可能地被分為1,即模型傾向于認為新樣本更可能是有故障。本文中將分類閾值T降低至0.01,改進后的LightGBM模型的預測結果為

本文中所使用的汽車故障數據集由斯堪尼亞貨車公司發布[15],包括60 000個訓練集樣本和16 000個測試集樣本,記錄了汽車行駛過程中的速度和行駛里程等170個特征,體現出大樣本、高維度的特點。樣本的類別為有故障和無故障兩類,其中有故障樣本占少數,例如,訓練集中只有1 000個有故障樣本,僅占訓練集的1/60,所提供的信息量遠少于59 000個無故障樣本,給汽車故障樣本的預測帶來很大難度。訓練集中的部分數據如表1所示。

表1 訓練集中的部分數據
在斯堪尼亞貨車故障數據集上進行實驗,實驗流程如圖4所示。改進后的LightGBM模型稱為cLightGBM模型,另使用 LightGBM、XGBoost、GBM機器學習模型作為對比。各模型的參數,除設置決策樹的個數(n_estimaotrs)為100外,模型的其他參數均使用默認值。運算設備使用3.40 GHz主頻、i7中央處理器和8 GK內存的計算機,編程語言為Python。
本實驗具體流程如下。

圖4 實驗流程圖
步驟1:讀入數據。讀取已經劃分好的訓練集60 000個樣本和測試集16 000個樣本,檢查數據格式。
步驟2:數據預處理。首先進行類別編碼,將無故障的樣本的類別編碼為0,將有故障的樣本的類別編碼為1。其次處理數據缺失項,刪除數據缺失的比例大于70%的7個特征,對于數據缺失比例低于70%的特征,對GBM模型所用數據使用中位數補全,對cLightGBM、LightGBM、XGBoost模型使用缺省方法。
步驟3:交叉驗證訓練模型。對于訓練集的60 000個樣本,按照5折交叉驗證,分別訓練cLight-GBM、LightGBM、XGBoost、GBM模型,并記錄訓練時長Time。其中,cLightGBM模型少數類權重系數γ、L1正則化系數δ經TPE算法調參后分別設置為57和0.001。
步驟4:預測測試集樣本類別。在測試集上,使用訓練好的機器學習模型,預測16 000個測試集樣本的類別。
完成上述4個步驟后,使用查全率Recall、總體代價Cost作為評價指標,評估預測類別與實際類別之間的差異,驗證汽車故障預測模型的有效性。
評價指標通過表2的混淆矩陣[12]定義。混淆矩陣中:TP是被正確分類為有故障的樣本數,即有故障的樣本被成功預測為有故障;FP是被錯誤分類為有故障的樣本數,即無故障的樣本被誤認為有故障;TN是被正確分類為無故障的樣本數,即無故障的樣本被成功預測為無故障;FN是被錯誤分類為無故障的樣本數,即有故障的樣本被誤認為無故障。可見,TP、TN是被成功預測的樣本數,FN、FP是被錯誤預測的樣本數。

表2 混淆矩陣

總體代價Cost度量了被錯誤預測的樣本FN、FP所造成的后果[12]。無故障的樣本被誤認為有故障,將帶來不必要的檢修,其分類代價較小,斯堪尼亞貨車公司根據其商業經驗[7],將FP的分類代價定義為10;有故障的樣本被誤認為無故障,導致故障車輛繼續行駛,其分類代價很大,將FN的代價定義為500。總體代價綜合考慮了FN、FP兩種錯誤所造成的后果,總體代價越小,越有助于降低企業運營成本,發揮工程價值。

在測試集上,本文中提出的cLightGBM模型的預測結果如表3所示。測試集的16 000個樣本中,共有375個實際有故障的樣本,最理想的狀態是將375個實際有故障樣本全部預測為有故障,即故障查全率Recall為1。使用cLightGBM模型,預測出了370個故障樣本的存在,故障查全率 Recall為0.987,接近于理想值。按照式(7),cLightGBM模型的總體代價 Cost為9 030,亦是一個比較理想的數值。
查全率Recall又稱之為召回率[12],是實際有故障的樣本被機器學習模型預測到的概率,反映了模型對汽車故障樣本的預測能力。查全率的取值區間為[0,1],查全率越大,說明模型對汽車故障的預測能力越強。

表3 cLightGBM模型的混淆矩陣
cLightGBM模型與 LightGBM、XGBoost、GBM模型的預測結果對比如表4所示。從查全率Recall來看,cLightGBM模型最高,相比標準型LightGBM模型高出0.235,明顯優于其他的機器學習模型,實現了對汽車故障的有效預測。從總體代價的角度,cLightGBM將工程實踐中的總體代價降低至9 030,在4種模型中總體代價最小,有助于降低企業的實際運營成本,發揮工程實踐價值。此外,從模型訓練所需時間可看出,cLightGBM、LightGBM、XGBoost模型在面向大樣本、高維度數據時的訓練速度比傳統的GBM模型均有顯著的優勢,尤其是cLightGBM、LightGBM模型,兩者可在不到15 s內完成對具備170個特征的60 000個樣本的訓練,體現出很高的訓練效率。

表4 不同模型預測結果對比
本文中針對汽車故障數據集規模大、類別不平衡引起的模型訓練速度慢、故障查全率低的問題,提出一種基于改進LightGBM模型的汽車故障預測方法,得出結論如下。
(1)從模型訓練和模型預測兩個層面對Light-GBM模型進行改進:通過設置類別權重和引入L1正則化項修正模型損失函數,并使用TPE算法得到修正項系數的取值;在模型預測時,使用閾值移動技術,將分類閾值調整為0.01,提高樣本被分為故障樣本的概率。
(2)在斯堪尼亞貨車故障數據集上進行實驗,結果表明,本文中提出的改進LightGBM模型故障查全率達0.987,總體代價為9 030,實現了對汽車故障的有效預測,具備工程應用價值。
(3)與 LightGBM、XGBoost、GBM等模型相比,本文中提出的改進LightGBM模型的故障查全率高,總體代價小,且具備LightGBM模型訓練快的優勢,展現出一定的先進性。