馬榮影,韓 銳,艾曦鋒,李宏剛,儲江偉
(東北林業(yè)大學 交通學院,黑龍江 哈爾濱 150040)
汽車保有量的持續(xù)不斷增加,以至于石化能源消耗呈加速增長的趨勢。能源短缺和環(huán)境污染等一系列問題接踵而至。汽車燃油消耗的問題得到廣泛關注,國內(nèi)外的學者也不斷地致力于研究燃油消耗模型。文獻[1-2]使用主成分分析方法對影響汽車燃油消耗的變量進行壓縮,建立了BP神經(jīng)網(wǎng)絡的油耗組合預測模型。文獻[3]從影響油耗的道路和交通特性方面,并利用大量出租車油耗數(shù)據(jù)構建了BP神經(jīng)網(wǎng)絡的油耗模型。文獻[4]利用GPS位置、速度、高度等參數(shù)數(shù)據(jù),提出了一種基于BP神經(jīng)網(wǎng)絡并利用智能手機測量車輛的瞬時油耗。文獻[5]采用皮爾遜系數(shù)相關分析方法對與高油耗相關的駕駛行為指標進行濾波,由高度相關的駕駛行為指標生成了12個以上的聚合模型。文獻[6] 建立了城市道路工況下的平峰期和高峰期的油耗模型、不同道路類型的速度油耗模型以及不同速度、不同加速度下的瞬時油耗模型。文獻[7]使用質(zhì)量和速度因素對油耗影響獨立計算的方法,建立了客車燃油消耗量的計算模型。文獻[8]在穩(wěn)態(tài)油耗模型的基礎上引入瞬態(tài)修正模 塊,建 立 了 一 種 新 的 瞬 態(tài) 油 耗 模 型BIT-TFCM。文獻[9]使用車輛速度與加速度并憑借最小二乘法構建了一種瞬態(tài)燃油消耗模型。文獻[10]采用支持向量機(SVM)、人工神經(jīng)網(wǎng)絡和多元線性回歸3種統(tǒng)計模型來預測總油耗和瞬時油耗。文獻[11]利用決策樹數(shù)據(jù)挖掘方法構建了燃油消耗模型。文獻[12]利用快速路、主干路、次干路和支路道路油耗實測的數(shù)據(jù)建立了道路燃油經(jīng)濟性評價模型。文獻[13]使用汽車油耗的主要影響因素建立計算油耗的理論模型。文獻[14]建立了汽車燃油消耗和排放隨瞬時速度和行駛方式變化的數(shù)學模型。文獻[15]在不同速度下采集相應油耗數(shù)據(jù), 并借助統(tǒng)計軟件建立油耗回歸模型, 搭建了油耗測量系統(tǒng)。文獻[16]使用主成分分析和神經(jīng)網(wǎng)絡相結(jié)合的方法并基于行駛工況特征參數(shù),創(chuàng)建了燃油消耗預測模型。
因Python語言通俗易懂且其中含有豐富和功能強大的類庫,非常適于深入的數(shù)據(jù)處理和機器學習等領域。本研究運用Python語言,以采集到的7萬余條車輛運行狀態(tài)實時數(shù)據(jù)為基礎,提取對油耗有影響的車輛運行狀態(tài)特征參數(shù);基于特征參數(shù)分別建立多元線性回歸模型、多層感知器(MLP)神經(jīng)網(wǎng)絡回歸模型和集成回歸模型;通過對3種回歸模型進行十折交叉驗證,對比分析模型的誤差和平均得分,為進一步闡明汽車運行油耗與車輛運行狀態(tài)參數(shù)之間的關系提供理論依據(jù)。
本研究所用數(shù)據(jù)樣本是通過OBD檢測儀獲取的車輛多次短時運行的數(shù)據(jù)集,其實時記錄車輛運行狀態(tài)的相關參數(shù)有怠速時間IT、加速度a、負荷率L、冷卻液溫度CT、發(fā)動機轉(zhuǎn)速n、車速v、節(jié)氣門位置TP、進氣管絕對壓力P與平均油耗FC等,各參數(shù)相關含義見文獻[17]。采樣平均間隔為1.1 s,數(shù)據(jù)格式如表1所示。
表1 采集數(shù)據(jù)的格式Tab.1 Format of collected data
在數(shù)據(jù)預處理階段,對各項參數(shù)數(shù)據(jù)基本統(tǒng)計量進行統(tǒng)計,對不符合實際情況的數(shù)據(jù)進行調(diào)整或剔除,提高數(shù)據(jù)質(zhì)量為后續(xù)建模做好準備。導入Python中的數(shù)據(jù)分析包(pandas)進行數(shù)據(jù)預處理,使用read_csv函數(shù)讀取數(shù)據(jù)集。使用describe()函數(shù)可以對各個參數(shù)的基本統(tǒng)計量進行描述,包括數(shù)量Q、平均值M、標準差Std、最小值Min、上四分位數(shù)Uq、中位數(shù)Median、下四分位數(shù)Lq、最大值Max?;诓杉膶崟r運行狀態(tài)數(shù)據(jù)的基本統(tǒng)計量,如表2所示。
表2 采集數(shù)據(jù)的基本統(tǒng)計量Tab.2 Basic statistics of collected data
從表2的數(shù)據(jù)統(tǒng)計描述中可看出,樣本中各項參數(shù)計數(shù)均為70 162條,無空缺值且無異常值。但是存在著數(shù)據(jù)的量值范圍差距大、位數(shù)不統(tǒng)一、有正負值等情況,需要對數(shù)據(jù)進行預處理。以使原始數(shù)據(jù)轉(zhuǎn)化為無量綱化、同量級的參數(shù)以進行綜合分析。
影響車輛油耗的參數(shù)眾多,且每個影響參數(shù)都有各自的量綱和數(shù)量級,單純依靠方差判斷影響程度的效果可能不理想。因此,為減少建立模型的計算量和使模型泛化能力更強,需要進行特征參數(shù)選擇。調(diào)用Python中的特征選擇庫,使用其中的SelectKBest函數(shù),通過設定閾值n,選出n個最佳特征參數(shù)進行建模。從試驗中可獲取的怠速時間、冷卻液溫度、速度、加速度、負荷率、轉(zhuǎn)速、節(jié)氣門位置和進氣管絕對壓力等對油耗有影響的實時運行參數(shù)數(shù)據(jù),進行特征提取選出特征參數(shù)。分別設置n=1,2,…,8,則可將參數(shù)按與因變量的相關性強弱順序排出:冷卻液溫度(1)、車速(2)、節(jié)氣門位置(3)、發(fā)動機轉(zhuǎn)速(4)、怠速時間(5)、負荷率(6)、加速度(7)、進氣管絕對壓力(8)。
選取參數(shù)個數(shù)n所對應的模型得分(模型得分由score函數(shù)計算所得),如圖1所示。
圖1 參數(shù)個數(shù)所對應的模型得分Fig.1 Model score corresponding to number of parameters
從圖1中可看出,對于多元線性回歸模型,當選取前2個參數(shù)時線性回歸模型平均得分為0.68,且再增加建模參數(shù)個數(shù)n時模型得分也無明顯變化。對于MLP回歸模型和集成回歸模型,當選取前5個參數(shù)時模型平均得分分別為0.84和0.86,且再增加建模參數(shù)個數(shù)n時模型得分也無明顯變化,即建立MLP回歸模型和集成回歸模型時可選取前5個參數(shù)。
2.2.1模型構建簡介
回歸與預測方法是在分析自變量與因變量相關性的基礎上,建立變量之間的回歸模型,并以回歸模型為預測方法。本研究將基于機器學習庫分別建立多元回歸線性模型和非線性回歸模型兩種,在分析回歸誤差的基礎上評價其精度。
在構建模型時,將數(shù)據(jù)集劃分成訓練集和測試集,其中訓練集用來構造模型,測試集則用來檢驗最終選擇最優(yōu)模型的性能。建立的3種回歸模型中的共同設置條件為,機器學習函數(shù)庫對數(shù)據(jù)集進行劃分,調(diào)用train_test_split函數(shù)對數(shù)據(jù)集進行樣本劃分,并使用隨機數(shù)種子33進行隨機分割,訓練集與測試集樣本的比例是9∶1。
2.2.2線性模型的構建
使用機器學習函數(shù)庫中的Linear Regression來建立線性多元回歸預測模型,針對非線性問題,提出了一種線性化方法,使用fit()分析模型參數(shù),predict()是通過fit()算出的模型參數(shù)構出的模型,對自變量進行預測來獲得其值并使用predict函數(shù)預測出油耗值,再對預測值進行綜合分析,確定最后的預測值。使用lr.intercept函數(shù)計算出截距,使用lr.coef函數(shù)計算出油耗FC、冷卻液溫度CT、車速v各個參數(shù)的系數(shù),求出的油耗多元線性回歸的方程為:
FC=-6.67×CT-1.39×v+12.41。
(1)
2.2.3非線性模型的構建
多層感知器神經(jīng)網(wǎng)絡模型的構建,調(diào)用Python機器學習庫中的MLP Regressor()對油耗進行MLP回歸建模。MLP回歸模型是感知器的推廣,當輸出層有輸出的時候,可以將其與已知值進行比較,并相應地調(diào)整權重;重復此過程,直至達到允許迭代的最大數(shù)量或可接受的錯誤率,解決了單層感知器非線性不可分的缺點。輸入層神經(jīng)元數(shù)為輸入變量的數(shù)量n為8,輸出層神經(jīng)元數(shù)為輸出變量的數(shù)量m為1。有關研究表明,一個隱含層的神經(jīng)網(wǎng)絡,只要隱層的神經(jīng)元數(shù)量足夠多,就可以任意精度逼近一個非線性函數(shù),調(diào)用hidden_layer_sizes 函數(shù)設置神經(jīng)網(wǎng)絡參數(shù);在MLP回歸模型中,隱層的神經(jīng)元數(shù)量的設定與實際問題的復雜程度、輸入和輸出層的神經(jīng)元數(shù)量以及對期望誤差有直接的聯(lián)系,其可以使用經(jīng)驗公式來確定[18]:
(2)
式中,L為隱層的神經(jīng)元數(shù)量;n為輸入層的神經(jīng)元數(shù)量;m為輸出層的神經(jīng)元數(shù)量;a為[1,10]之間的常數(shù)。本研究中選取a為6,即L=10。解決器設置為adam,學習率設置為adaptive,激活函數(shù)選擇relu,其他參數(shù)使用機器學習庫中的默認參數(shù)。
集成回歸模型的構建,一些簡單模型對于數(shù)據(jù)量大或很難訓練的數(shù)據(jù)集只能學習到一部分,而集成學習方法可以有策略地將數(shù)據(jù)集劃分成一些小數(shù)據(jù)集,并分別進行訓練,之后再根據(jù)一些策略進行組合,集成學習就是組合很多子模型以得到一個預測效果較好的強模型。子模型的數(shù)量設置對模型的預測能力有著直接的影響,數(shù)量少容易欠擬合,數(shù)量多計算量大并導致過擬合的問題,所以一般選擇一個適中的數(shù)值,默認是100。在數(shù)據(jù)少或者特征少的時候可忽略樹的深度值,則決策樹在建立子樹的時候不限制子樹的深度。反之則推薦限制最大深度,一般取值為10~100之間。葉節(jié)點最小樣本值默認是1,其值的設定限制了葉節(jié)點最少的樣本數(shù)。如果樣本量不大,則可忽略這個值,反之則應增大這個值。
本研究使用的集成模型的子模型數(shù)量為100,樹的最大深度為10,葉節(jié)點最小樣本數(shù)為14,學習率為0.001,其他參數(shù)使用機器學習庫中的默認參數(shù)。
構建的回歸預測模型是否可應用于實際,需要對回歸預測模型進行檢驗和對預測誤差計算。只有通過各種檢驗且預測誤差較小,才能將回歸方程作為預測模型應用。因此有必要使用cross_val_score函數(shù)對數(shù)據(jù)集進行指定次數(shù)的交叉驗證,從樣本中隨機按比例選取訓練集和測試集,對模型得分進行10次交叉驗證。用metrics.mean_squared_error函數(shù)計算的結(jié)果開方即得均方根誤差(RMSE),是觀測值與真值偏差的平方和與觀測次數(shù)m比值的平方根,其是用來衡量觀測值同真值之間的偏差。用metrics.mean_absolute_error函數(shù)計算平均絕對誤差(MAE)。上述驗證模型的結(jié)果如表3所示。
表3 模型驗證結(jié)果Tab.3 Model verification result
截取使用Python繪圖庫matplotlib繪出的部分油耗預測值與實際值二者之間的關系圖,如圖2所示。
圖2 預測值與真實值Fig.2 Predicted values and real values
本研究利用OBD實時檢測車輛運行狀態(tài)參數(shù)和瞬時油耗數(shù)據(jù),并調(diào)用Python機器學習庫中的相關算法,對構建汽車運行油耗多參數(shù)回歸模型的方法進行了相關研究。但是,作為研究油耗影響因素的一種方法,在實際應用中還與車型種類、主要總成配置、裝載情況、駕駛行為等有關。依據(jù)本研究采樣數(shù)據(jù)處理分析得出的主要結(jié)論為:
(1)調(diào)用Python的特征選擇庫,得到的影響車輛運行油耗的運行狀態(tài)參數(shù)的排序結(jié)果為:冷卻液溫度、車速、節(jié)氣門位置、發(fā)動機轉(zhuǎn)速、怠速時間、負荷率、加速度、進氣管絕對壓力。
(2)基于Python的機器學習庫,建立的多元線性回歸模型的平均絕對誤差為3.01,均方根誤差為4.80,模型平均得分為0.68,這表明車輛運行油耗與運行狀態(tài)參數(shù)之間的線性關系不明顯。
(3)基于Python的機器學習庫,對非線性的多層感知器(MLP)神經(jīng)網(wǎng)絡回歸模型和集成回歸模型進行十折交叉驗證的結(jié)果表明,MLP神經(jīng)網(wǎng)絡回歸模型平均絕對誤差為0.30,均方根誤差為0.48,模型平均得分為0.84;集成回歸模型平均絕對誤差為0.23,均方根誤差為0.38,模型平均得分為0.86,這表明車輛運行油耗與運行狀態(tài)參數(shù)之間的非線性關系明顯,適宜建立非線性回歸模型。