任小強,王官云
(西南交通大學希望學院信息工程系,四川 成都 610400)
隨著人民生活水平的提高,汽車數量越來越多,車輛碰撞問題時有發生,往往造成財產損失和人員傷亡。如何精準檢測車輛是否發生碰撞具有重要研究意義。但是車輛信息非常多,而用戶路況信息和用戶使用偏好不同,很難找到一種準確識別碰撞的方法。郭烈等人[1]采用圖像檢測和分割算法對車輛碰撞進行檢測識別,馬小龍等人[2]通過廣義帕累托分布(Generalized Pareto Distribution,GPD)建立制動減速度分布模型,得到車輛的碰撞概率,高利等人[3]建立環境復雜度量化模型,使得碰撞預警的正確率達92%,宋鑫[4]利用智慧燈桿物聯網數據采集平臺,解決極端復雜環境下的車輛碰撞檢測這一難題。傳統的車輛碰撞識別方法需要大量的人力物力,周期長,成本高。近年來,機器學習的快速發展促進了相關算法在智能交通領域中應用研究,國內外學者提出了集成學習模型作為一種低廉高效的車輛碰撞檢測方法,如Random Forest、AdaBoost和XGBoost等。例如,彭一川等人[5]提出一種新的基于權重的欠采樣提升算法(weight-based under sampling boost, WUSBoost),計算車輛的平均碰撞風險;申海洋等人[6]提出一種基于機器視覺和深度學習的車輛碰撞預警算法。雖然這些模型在車輛碰撞檢測中取得了不錯的效果,但是相對而言,增加了算法復雜度,預測精度也還有較大的改進空間。輕量化梯度促進機(Light Gradient Boosting Machine,LightGBM)[7]是一種基于決策樹的集成算法(Gradient Boosting Decision Tree,GBDT),支持并行學習,可以高效處理大數據,解決了計算效率低、實時性差等問題,廣泛應用在各個領域[8-15],文獻研究表明LightGBM相較傳統算法具有較高的精度,同時還兼顧提升了模型的訓練效率。但是,LightGBM算法的分類模型也存在一些挑戰,如LightGBM算法模型中的關鍵參數需要調整以獲得理想的準確率,傳統優化算法容易達到局部最優解,甚至導致早熟收斂。本文借鑒上述文獻中的觀點,首先利用公開數據集構建碰撞特征,其次提出一種經貝葉斯優化的改進LightGBM算法,最后使用該算法解決車輛碰撞檢測問題。
在數據挖掘領域,特征往往起著很重要的作用,不同特征集決定了機器學習預測模型的質量,好的特征集可以挖掘更多的關聯信息,從而得到更加精準的機器學習預測模型。
車輛碰撞是一個連續瞬間過程,瞬間速度變化很快,其它時刻速度變化較小,因此本文通過移位(shift)、運算(diff)、滑動窗口(rolling)運算和原始特征構建車輛碰撞的統計特征,如碰撞時間、主負繼電器狀態和速度特征,并以速度特征構造車輛瞬時加速度,局部加速度,統計加速度、統計速度等特征描述碰撞過程。三種運算的定義如下,通過這三種運算,利用初始特征,構建的特征如表1所示。

表1 特征名稱及其構建方法
shift(x):數據平移,x表示移動的幅度,可正可負,默認值是1,表示數據向前移動一次,移動之后索引位置沒有值的,值為NaN。
diff(x):一階差分,是指數據與平移后數據進行比較得出的差異數據,根據計算差值的方向不同分為向前差分和向后差分。
rolling(x):x為樣本點數目,窗口從上到下依次滑動時,會將每個窗口里面的元素按照相應運算進行計算。
本文選擇Pearson相關系數從原始連續型特征集中提取特征子集,去除冗余特征和無關特征,相關系數計算公式如式(1)所示,X和Y為一對連續變量,σX和σY為X和Y的標準差;cov(X,Y)為X與Y的協方差。
分析發現整車當前總電流、整車當前總電壓與車速、構造特征a_min5的相關性很高,為了避免訓練模型過擬合,相關性系數高的特征中僅保留一個特征,數據特征選擇后有效特征由最初數據集的20個特征變為14 個,其中包括表1中構建的特征。為了尋找模型的最優輸入特征集,本文利用森林算法(Random Forest,RF)對篩選后的特征進行重要性排序,其中a_min5,a_mean5,v_diff1,a_max3,if_off和if_on的重要性程度較高,約占全部特征的95%左右,使用上述6個特征,通過LightGBM算法進行模型訓練,車輛碰撞識別結果能夠達到98 %左右,因此本文選用這6個特征作為識別車輛碰撞模型的輸入,后續超參數的優化都是基于篩選后的特征。
GBDT是一種流行的、有競爭力的、高度穩健且可解釋的機器學習算法。它被廣泛用于許多機器學習任務,并且優于其他傳統模型。但是,在處理海量樣本數據時,GBDT運算會消耗大量的時間,效率較低。為了克服這些限制,微軟提出LightGBM算法,它是一種新穎的GBDT算法,基于Histogram對特征的分裂進行優化,如圖1所示。LightGBM被認為是一種高效的模型,可以處理大規模數據并以更快的訓練速度和最小的內存使用量獲得更好的準確性,它還支持并行和分布式學習。

圖1 直方圖優化
LightGBM算法包含兩種新技術,分別是基于梯度的單側采樣和專有特征捆綁。給定一個訓練數據集,其中x代表樣本數據,y代表類別標簽,f(x)代表估計函數,損失函數定義如式(2)所示:
決策樹可以表示為wq(x),q∈{1,2,┅,J},其中J表示葉子的數量,q代表決策樹的決策規則,w是一個向量,表示葉子節點的樣本權重。因此,LightGBM將在第t次迭代時以加法形式進行訓練,如式(4)所示:
在LightGBM中,目標函數用牛頓法快速逼近,為簡單起見,去掉式(4)中的常數項后,公式簡化為式(5):
其中gi和hi表示損失函數的一階和二階梯度統計量。Ij表示葉子的樣本集,并且式(5)可以轉換為式(6):
其中IL和IR分別是左右分支的樣本集,與傳統基于GBDT的技術不同,LightGBM利用帶深度限制的Leaf-wise葉子生長策略替代傳統的層生長決策樹策略,最大程度避免了過擬合,Leaf-wise和Levelwise的對比如圖2所示。

圖2 Level-wise和Leaf-wise葉子生長策略的對比
對碰撞樣本使用特征向量表示并標記,得到帶標簽的碰撞樣本,在此基礎上進行二分類的有監督學習,這樣就將碰撞檢測特殊問題,轉換為機器學習中的通用問題。該模型如圖3所示,通過數據清洗及特征提取、特征選擇、模型訓練和模型碰撞檢測幾個步驟來實現。首先,進行數據清洗及特征提取,其次是特征選擇,選擇了合理特征參數,提高模型訓練精度,然后使用貝葉斯優化LightGBM超參數,通過輸入最優的LightGBM超參數得到最終模型。最后應用測試數據集進行性能評估指標。

圖3 碰撞識別模型
從本文構造的特征來看,發生強烈碰撞的分類標簽是容易區分的,考慮到模型的泛化能力,分隔閾值設得很大,取非碰撞車輛瞬時加速度v_diff1、局部加速度v_diff2和瞬時速度差v_diff3中最小值的2倍為分割閾值,目的是為了避免過擬合。此外,為了增強樹模型的預測能力和增加特征之間的非線性,我們對特征進行交叉修正,如式(10)-(13)所示,使得主要特征與分類特征的相關性更為明顯,具有實際意義。
不同超參數組合會導致模型在預測性能上存在很大的差別,因此必須對模型進行調參,搜索出能使模型性能更佳的超參數,常用方法包括人工搜索、網格搜索和隨機搜索等[16-18],網格搜索支持并行計算,很消耗內存,隨機搜索則不能確保得到全局最優解。貝葉斯優化(Bayesian Optimization,BO)是一種自適應的超參數搜索方法[19],利用目標函數的過去評估結果建立概率模型,尋找最小化目標函數的參數,在效率和精度上都獲得更好的效果。本文使用TPE(Tree Parzen Estimator)代理模型和期望改善(Expected Inprovement,EI)采集函數構造貝葉斯算法優化LightGBM參數[20],TPE算法的概率分布定義如式(14)所示,其中e(x)為觀測值{x(i)}形成的密度,g(x)為除{x(i)}外剩余觀測值形成的密度。
從式(15)可看出,為了能獲得最大期望提升,超參數x在e(x)的概率要盡可能大,而在g(x)的概率要盡可能小。通過g(x)/e(x)評估每一個超參數x,在每次迭代中,算法將返回具有最大EI的超參數值。
數據集來源于公共數據集Kaggle,主要包括車號、采集時間、加速踏板位置、電池包主負繼電器狀態、電池包主正繼電器狀態、制動踏板狀態、整車當前總電流、整車當前總電壓、車速等20個原始特征[21]。其中訓練數據集有3 928 449條數據,其中第20位Label列為標簽屬性,代表是否碰撞,1表示碰撞,0代表無碰撞,測試數據集有4 285 948條數據。數據清洗對提高模型性能非常重要,包括缺失值處理、異常值處理、刪除重復值、類型轉化和特征編碼等。對于連續性特征變量,缺失值和異常值使用均值填充;對于分類變量,直接刪除異常數據。數據集中的數據通常以字符串類型存儲,特征編碼將字符串類型數據轉化為數值類型。對于只有兩種取值的特征使用標簽編碼(LabelEncoder),例如電池包主負繼電器狀態、制動踏板狀態等,用0、1表示兩種狀態,整車鑰匙狀態含有三種取值,可以使用獨熱編碼(One-Hot Encoding),它會增加數據特征的數量,經過數據清洗和特征提取后,樣本數為19 950條。為了平衡樣本數據,對樣本數據進行欠采樣和過采樣,數據欠采樣滿足以下三個條件:(1)汽車碰撞后電池包主負繼電器處于斷開狀態,即電池包主負繼電器狀態恒等于0;(2)訓練集的所有標簽均分布在繼電器斷開瞬間附近,if_off處于-3~-5的區間,考慮到停車時被追尾,增加車速大于零這個條件;(3)刪除啟動階段低于正常車速的數據,這里要求車速在20km/h以上。通過這三個刪選條件,測試樣本數由3 928 449條變為29 23 559條。此外,車輛碰撞是一個連續過程,將碰撞時間前后5秒內樣本標簽均標記為碰撞,對訓練集標簽進行過采樣,過采樣后訓練集碰撞標簽由49個變為154個。本實驗仿真所用電腦為Windows7系統,配備4GB內存,處理器為英特爾第七代酷睿i5-7200U@2.50GHz。
為了探究特征個數對模型性能的影響,將特征工程得到的特征,使用本文模型進行訓練,并在測試集上采用F1-score、查準率(precision)、查全率(recall)進行模型評估,結果如圖4所示,當特征個數小于8個時,模型評價指標總體呈上升趨勢,此時模型欠擬合;當特征個數大于8個后,因為模型過擬合導致模價指標呈下降趨勢;當特征個數為8個時,模型性能最優。

圖4 特征數與評價指標的關系
為了建立一個有效的預測模型,將文獻[22]中的支持向量機模型(Support Vector Machine,SVM)、文獻[23]中的隨機森林模型(Random Forest,RF)、文獻[24]中的梯度提升決策樹模型(eXtreme Gradient Boosting,XGBoost)和本文LightGBM模型進行對比研究。為了結果更加可靠,分別進行3組試驗,每組重復測試10次,取其平均值作為模型最終評價指標。各模型預測結果如圖5所示,LightGBM模型在實驗中的評價指標優于其它模型,其平均準確值約為0.94,平均查準率約為0.97,F1-score值約為0.93。

圖5 不同分類器的預測結果
LightGBM參數較多,基于交叉驗證的手動調參操作復雜且易影響預測效果,本文采用貝葉斯優化方法調整最佳參數。為了驗證貝葉斯優化算法的優越性,將貝葉斯優化與網格搜索、隨機搜索以及LightGBM的默認參數進行對比,不同的優化方法選擇相同范圍的參數空間,并使用運行時間與均方誤差MSE作為評估指標。實驗結果如圖6所示,表中網格搜索的運行時間為其搜索完待選參數空間所需的時間,隨機搜索的運行時間為其迭代5 000次的時間,貝葉斯優化的運行時間為其精度不再變化后的時間,即完成收斂所需的時間。超參數列表的順序為learning_rate、feature_fraction、bagging_fraction、bagging_freq、num_leaves和min_data_in_leaf。

圖6 LightGBM超參數優化方式對比
由圖6中可以看出,默認參數的碰撞檢測精度低,運行時間較長;網格搜索雖然有精度上的提升,但是會花費大量的時間成本;隨機搜索的運行時間相比網格搜索大大減少了,而且在精度上也比網格搜索略好一些;貝葉斯優化算法相比網格搜索與隨機搜索,在精度上有顯著的提升,而且運行時間遠遠小于網格搜索與隨機搜索,所以使用貝葉斯優化算法尋找超參數是有效的。貝葉斯優化LightGBM算法在進行模型預測時,隨著不斷迭代,模型的均方誤差MSE趨于平穩,當迭代次數為200次時,均方誤差MSE達到了最小值,此時對應的超參數 learning_rate=0.005,num_leaves=80,max_depth=7,min_data_in_leaf=210,bagging_fraction=0.9,feature_fraction=0.7。貝葉斯優化后的LightGBM模型評價指標提升比較明顯,可以滿足車輛碰撞識別的要求,對交通管理部門和汽車生產商具有重要的參考價值。
數據集的正負樣本不平衡會導致模型預測出現偏差。這里使用數據樣本欠采樣和碰撞標簽過采樣技術平衡樣本,平衡數據集和不平衡數據集分別輸入LightGBM進行分類,實驗結果如圖7所示,平衡數據集后Precision指標從97.01%提升到98.99%,Recall指標從88.67%提升到98.86%,F1-score從88.64%提升到97.98%,這些結果表明平衡數據集樣本可以提升模型的預測性能。

圖7 平衡數據集優化方式對比
針對車聯網大數據碰撞識別問題,本文提出一種基于LightGBM算法的碰撞檢測模型。通過數據清洗與特征工程刪選特征,欠采樣、重采樣提高碰撞識別預測的準確性,有效利用了各個特征與碰撞之間的相關性,同時使用LightGBM模型進行車輛碰撞進行識別,運行總時間為300~450 s左右。