馬榮影,韓 銳,艾曦鋒,李宏剛,儲江偉
(東北林業大學 交通學院,黑龍江 哈爾濱 150040)
汽車保有量的持續不斷增加,以至于石化能源消耗呈加速增長的趨勢。能源短缺和環境污染等一系列問題接踵而至。汽車燃油消耗的問題得到廣泛關注,國內外的學者也不斷地致力于研究燃油消耗模型。文獻[1-2]使用主成分分析方法對影響汽車燃油消耗的變量進行壓縮,建立了BP神經網絡的油耗組合預測模型。文獻[3]從影響油耗的道路和交通特性方面,并利用大量出租車油耗數據構建了BP神經網絡的油耗模型。文獻[4]利用GPS位置、速度、高度等參數數據,提出了一種基于BP神經網絡并利用智能手機測量車輛的瞬時油耗。文獻[5]采用皮爾遜系數相關分析方法對與高油耗相關的駕駛行為指標進行濾波,由高度相關的駕駛行為指標生成了12個以上的聚合模型。文獻[6] 建立了城市道路工況下的平峰期和高峰期的油耗模型、不同道路類型的速度油耗模型以及不同速度、不同加速度下的瞬時油耗模型。文獻[7]使用質量和速度因素對油耗影響獨立計算的方法,建立了客車燃油消耗量的計算模型。文獻[8]在穩態油耗模型的基礎上引入瞬態修正模 塊,建 立 了 一 種 新 的 瞬 態 油 耗 模 型BIT-TFCM。文獻[9]使用車輛速度與加速度并憑借最小二乘法構建了一種瞬態燃油消耗模型。文獻[10]采用支持向量機(SVM)、人工神經網絡和多元線性回歸3種統計模型來預測總油耗和瞬時油耗。文獻[11]利用決策樹數據挖掘方法構建了燃油消耗模型。文獻[12]利用快速路、主干路、次干路和支路道路油耗實測的數據建立了道路燃油經濟性評價模型。文獻[13]使用汽車油耗的主要影響因素建立計算油耗的理論模型。文獻[14]建立了汽車燃油消耗和排放隨瞬時速度和行駛方式變化的數學模型。文獻[15]在不同速度下采集相應油耗數據, 并借助統計軟件建立油耗回歸模型, 搭建了油耗測量系統。文獻[16]使用主成分分析和神經網絡相結合的方法并基于行駛工況特征參數,創建了燃油消耗預測模型。
因Python語言通俗易懂且其中含有豐富和功能強大的類庫,非常適于深入的數據處理和機器學習等領域。本研究運用Python語言,以采集到的7萬余條車輛運行狀態實時數據為基礎,提取對油耗有影響的車輛運行狀態特征參數;基于特征參數分別建立多元線性回歸模型、多層感知器(MLP)神經網絡回歸模型和集成回歸模型;通過對3種回歸模型進行十折交叉驗證,對比分析模型的誤差和平均得分,為進一步闡明汽車運行油耗與車輛運行狀態參數之間的關系提供理論依據。
本研究所用數據樣本是通過OBD檢測儀獲取的車輛多次短時運行的數據集,其實時記錄車輛運行狀態的相關參數有怠速時間IT、加速度a、負荷率L、冷卻液溫度CT、發動機轉速n、車速v、節氣門位置TP、進氣管絕對壓力P與平均油耗FC等,各參數相關含義見文獻[17]。采樣平均間隔為1.1 s,數據格式如表1所示。

表1 采集數據的格式Tab.1 Format of collected data
在數據預處理階段,對各項參數數據基本統計量進行統計,對不符合實際情況的數據進行調整或剔除,提高數據質量為后續建模做好準備。導入Python中的數據分析包(pandas)進行數據預處理,使用read_csv函數讀取數據集。使用describe()函數可以對各個參數的基本統計量進行描述,包括數量Q、平均值M、標準差Std、最小值Min、上四分位數Uq、中位數Median、下四分位數Lq、最大值Max。基于采集的實時運行狀態數據的基本統計量,如表2所示。

表2 采集數據的基本統計量Tab.2 Basic statistics of collected data
從表2的數據統計描述中可看出,樣本中各項參數計數均為70 162條,無空缺值且無異常值。但是存在著數據的量值范圍差距大、位數不統一、有正負值等情況,需要對數據進行預處理。以使原始數據轉化為無量綱化、同量級的參數以進行綜合分析。
影響車輛油耗的參數眾多,且每個影響參數都有各自的量綱和數量級,單純依靠方差判斷影響程度的效果可能不理想。因此,為減少建立模型的計算量和使模型泛化能力更強,需要進行特征參數選擇。調用Python中的特征選擇庫,使用其中的SelectKBest函數,通過設定閾值n,選出n個最佳特征參數進行建模。從試驗中可獲取的怠速時間、冷卻液溫度、速度、加速度、負荷率、轉速、節氣門位置和進氣管絕對壓力等對油耗有影響的實時運行參數數據,進行特征提取選出特征參數。分別設置n=1,2,…,8,則可將參數按與因變量的相關性強弱順序排出:冷卻液溫度(1)、車速(2)、節氣門位置(3)、發動機轉速(4)、怠速時間(5)、負荷率(6)、加速度(7)、進氣管絕對壓力(8)。
選取參數個數n所對應的模型得分(模型得分由score函數計算所得),如圖1所示。

圖1 參數個數所對應的模型得分Fig.1 Model score corresponding to number of parameters
從圖1中可看出,對于多元線性回歸模型,當選取前2個參數時線性回歸模型平均得分為0.68,且再增加建模參數個數n時模型得分也無明顯變化。對于MLP回歸模型和集成回歸模型,當選取前5個參數時模型平均得分分別為0.84和0.86,且再增加建模參數個數n時模型得分也無明顯變化,即建立MLP回歸模型和集成回歸模型時可選取前5個參數。
2.2.1模型構建簡介
回歸與預測方法是在分析自變量與因變量相關性的基礎上,建立變量之間的回歸模型,并以回歸模型為預測方法。本研究將基于機器學習庫分別建立多元回歸線性模型和非線性回歸模型兩種,在分析回歸誤差的基礎上評價其精度。
在構建模型時,將數據集劃分成訓練集和測試集,其中訓練集用來構造模型,測試集則用來檢驗最終選擇最優模型的性能。建立的3種回歸模型中的共同設置條件為,機器學習函數庫對數據集進行劃分,調用train_test_split函數對數據集進行樣本劃分,并使用隨機數種子33進行隨機分割,訓練集與測試集樣本的比例是9∶1。
2.2.2線性模型的構建
使用機器學習函數庫中的Linear Regression來建立線性多元回歸預測模型,針對非線性問題,提出了一種線性化方法,使用fit()分析模型參數,predict()是通過fit()算出的模型參數構出的模型,對自變量進行預測來獲得其值并使用predict函數預測出油耗值,再對預測值進行綜合分析,確定最后的預測值。使用lr.intercept函數計算出截距,使用lr.coef函數計算出油耗FC、冷卻液溫度CT、車速v各個參數的系數,求出的油耗多元線性回歸的方程為:
FC=-6.67×CT-1.39×v+12.41。
(1)
2.2.3非線性模型的構建
多層感知器神經網絡模型的構建,調用Python機器學習庫中的MLP Regressor()對油耗進行MLP回歸建模。MLP回歸模型是感知器的推廣,當輸出層有輸出的時候,可以將其與已知值進行比較,并相應地調整權重;重復此過程,直至達到允許迭代的最大數量或可接受的錯誤率,解決了單層感知器非線性不可分的缺點。輸入層神經元數為輸入變量的數量n為8,輸出層神經元數為輸出變量的數量m為1。有關研究表明,一個隱含層的神經網絡,只要隱層的神經元數量足夠多,就可以任意精度逼近一個非線性函數,調用hidden_layer_sizes 函數設置神經網絡參數;在MLP回歸模型中,隱層的神經元數量的設定與實際問題的復雜程度、輸入和輸出層的神經元數量以及對期望誤差有直接的聯系,其可以使用經驗公式來確定[18]:
(2)
式中,L為隱層的神經元數量;n為輸入層的神經元數量;m為輸出層的神經元數量;a為[1,10]之間的常數。本研究中選取a為6,即L=10。解決器設置為adam,學習率設置為adaptive,激活函數選擇relu,其他參數使用機器學習庫中的默認參數。
集成回歸模型的構建,一些簡單模型對于數據量大或很難訓練的數據集只能學習到一部分,而集成學習方法可以有策略地將數據集劃分成一些小數據集,并分別進行訓練,之后再根據一些策略進行組合,集成學習就是組合很多子模型以得到一個預測效果較好的強模型。子模型的數量設置對模型的預測能力有著直接的影響,數量少容易欠擬合,數量多計算量大并導致過擬合的問題,所以一般選擇一個適中的數值,默認是100。在數據少或者特征少的時候可忽略樹的深度值,則決策樹在建立子樹的時候不限制子樹的深度。反之則推薦限制最大深度,一般取值為10~100之間。葉節點最小樣本值默認是1,其值的設定限制了葉節點最少的樣本數。如果樣本量不大,則可忽略這個值,反之則應增大這個值。
本研究使用的集成模型的子模型數量為100,樹的最大深度為10,葉節點最小樣本數為14,學習率為0.001,其他參數使用機器學習庫中的默認參數。
構建的回歸預測模型是否可應用于實際,需要對回歸預測模型進行檢驗和對預測誤差計算。只有通過各種檢驗且預測誤差較小,才能將回歸方程作為預測模型應用。因此有必要使用cross_val_score函數對數據集進行指定次數的交叉驗證,從樣本中隨機按比例選取訓練集和測試集,對模型得分進行10次交叉驗證。用metrics.mean_squared_error函數計算的結果開方即得均方根誤差(RMSE),是觀測值與真值偏差的平方和與觀測次數m比值的平方根,其是用來衡量觀測值同真值之間的偏差。用metrics.mean_absolute_error函數計算平均絕對誤差(MAE)。上述驗證模型的結果如表3所示。

表3 模型驗證結果Tab.3 Model verification result
截取使用Python繪圖庫matplotlib繪出的部分油耗預測值與實際值二者之間的關系圖,如圖2所示。

圖2 預測值與真實值Fig.2 Predicted values and real values
本研究利用OBD實時檢測車輛運行狀態參數和瞬時油耗數據,并調用Python機器學習庫中的相關算法,對構建汽車運行油耗多參數回歸模型的方法進行了相關研究。但是,作為研究油耗影響因素的一種方法,在實際應用中還與車型種類、主要總成配置、裝載情況、駕駛行為等有關。依據本研究采樣數據處理分析得出的主要結論為:
(1)調用Python的特征選擇庫,得到的影響車輛運行油耗的運行狀態參數的排序結果為:冷卻液溫度、車速、節氣門位置、發動機轉速、怠速時間、負荷率、加速度、進氣管絕對壓力。
(2)基于Python的機器學習庫,建立的多元線性回歸模型的平均絕對誤差為3.01,均方根誤差為4.80,模型平均得分為0.68,這表明車輛運行油耗與運行狀態參數之間的線性關系不明顯。
(3)基于Python的機器學習庫,對非線性的多層感知器(MLP)神經網絡回歸模型和集成回歸模型進行十折交叉驗證的結果表明,MLP神經網絡回歸模型平均絕對誤差為0.30,均方根誤差為0.48,模型平均得分為0.84;集成回歸模型平均絕對誤差為0.23,均方根誤差為0.38,模型平均得分為0.86,這表明車輛運行油耗與運行狀態參數之間的非線性關系明顯,適宜建立非線性回歸模型。