肖 宇 趙建有 叱干都 劉清云
(1.長安大學(xué)運輸工程學(xué)院 西安 710064;2.長安大學(xué)汽車學(xué)院 西安 710064)
出租車是城市營運車輛的重要組成部分[1],出租車駕駛員能否規(guī)范行車對城市居民出行具有廣泛的影響。隨著信息獲取技術(shù)的持續(xù)發(fā)展和地理信息設(shè)備的廣泛應(yīng)用,通過裝載GPS設(shè)備,可以實時獲得出租車運行的速度和方向等信息,有利于準(zhǔn)確識別出租車駕駛員異常駕駛行為,并向駕駛員做出預(yù)警,能夠有效規(guī)避風(fēng)險,提高運營安全性。
現(xiàn)有的異常駕駛行為識別研究主要是基于車輛歷史軌跡數(shù)據(jù),對駕駛行為進(jìn)行事后分析與評價[2]?;蒿w等[3]基于車輛駕駛過程中行車數(shù)據(jù)的時序變化特征,建立了雙向長短記憶網(wǎng)絡(luò)及全連接神經(jīng)網(wǎng)絡(luò)的拓展模型,提高了車輛異常駕駛的識別準(zhǔn)確度。趙建東等[4]構(gòu)建了1 種基于時間序列符號化算法和多尺度卷積神經(jīng)網(wǎng)絡(luò)的組合模型,用于識別重點營運車輛的異常駕駛行為。但相較于事前分析,事后分析對保障出行安全存在一定的滯后性和模糊性,駕駛行為也往往局限于超速和疲勞駕駛等方面。出租車的運行地點一般是城市道路,車流量和人流量較多,易發(fā)生緊急避讓或交通擁堵等事件,駕駛員頻繁急加減速等行為較多,這會對乘客的出行體驗舒適度產(chǎn)生直接影響。因此,通過預(yù)測個體出租車速度,能夠?qū)︸{駛員異常駕駛行為提前發(fā)出提示或警告,降低城市交通風(fēng)險發(fā)生概率,是保障出租車行業(yè)規(guī)范駕駛亟待解決的問題。
傳統(tǒng)的交通流預(yù)測大多采用統(tǒng)計分析和機(jī)器學(xué)習(xí)方法。王進(jìn)等[5]總結(jié)了基于統(tǒng)計方法、非參數(shù)回歸和神經(jīng)網(wǎng)絡(luò)模型等7類交通流預(yù)測模型。Smith等[6]引入啟發(fā)式預(yù)測方法提升了非參數(shù)回歸的預(yù)測性能。Vlahogianni 等[7]采用基于遺傳算法的多層結(jié)構(gòu)優(yōu)化策略,進(jìn)而選擇合適的神經(jīng)網(wǎng)絡(luò)對單變量和多變量交通流數(shù)據(jù)進(jìn)行預(yù)測。Zhang 等[8]分別使用光譜分析、時間序列和波動分析對交通流時間序列多重分形特征進(jìn)行短期預(yù)測。同時,越來越多的學(xué)者使用深度學(xué)習(xí)的方法進(jìn)行短時交通流量的研究。羅文慧等[9]運用了卷積神經(jīng)網(wǎng)絡(luò)提取交通數(shù)據(jù)的時空特征,以此作為支持向量回歸預(yù)測模型的輸入向量。羅向龍等[10]使用K-最鄰近算法構(gòu)造交通流序列數(shù)據(jù)集,提出了基于1 種長短時記憶網(wǎng)絡(luò)的交通量預(yù)測方法。馮微等[11]建立了結(jié)合深度置信網(wǎng)絡(luò)的地點車速預(yù)測模型,其輸入和輸出層分別選取了高斯-伯努利受限玻爾茲曼機(jī)和Softmax 回歸模型。這些研究成果對路段交通運行的整體狀況能夠有較好的表征,但無法細(xì)致地描述個體出租車車速變化的趨勢。因此,通過預(yù)測個體車輛的速度,可以彌補(bǔ)傳統(tǒng)交通量預(yù)測的不足,為后續(xù)是否發(fā)生異常駕駛行為提供判別依據(jù)。
在個體車輛速度預(yù)測方面,城市出租車運行軌跡受人、車、路、環(huán)境等多種因素的影響,從時間角度分析具有顯著的時變性和復(fù)雜的非線性特征。Shi等[12]建立了非線性自回歸動態(tài)神經(jīng)網(wǎng)絡(luò)模型對實時車輛狀態(tài)進(jìn)行預(yù)測。Yeon 等[13]結(jié)合了車輛內(nèi)部數(shù)據(jù)、雷達(dá)傳感器數(shù)據(jù)和跟車距離,基于LSTM-RNN模型預(yù)測本車速度。Ladan 等[14]提出了進(jìn)化最小學(xué)習(xí)機(jī)模型來預(yù)測車速序列,從而改進(jìn)車輛動力控制系統(tǒng)。馮安琪等[15]基于射頻識別環(huán)境,采用了自適應(yīng)卡爾曼濾波的方法進(jìn)行高速車輛速度預(yù)測。郭興等[16]提出了改進(jìn)ARIMA車速短期預(yù)測模型,滿足了不同駕駛行為下的車速預(yù)測需求。連靜等[17]結(jié)合駕駛意圖識別和歷史車速預(yù)測,針對插電式混合動力汽車系統(tǒng)進(jìn)行未來行駛工況預(yù)測。以上模型對預(yù)測模型的輸入變量進(jìn)行了優(yōu)化改進(jìn),使得預(yù)測結(jié)果更為精確,但選取多個輸入變量會降低模型的輸入與運算效率,無法保障短時車速預(yù)測的實時性。且以往的預(yù)測方法針對模型本身的參數(shù)設(shè)定常選用經(jīng)驗法、網(wǎng)格搜索與隨機(jī)搜索的參數(shù)調(diào)整方法,具有搜索速度慢和可能忽略最優(yōu)值的缺點。XGBoost(extreme gradient boosting)算法[18]是以梯度提升為算法核心,具有運算速度快、魯棒性好、預(yù)測精度高等優(yōu)點,已在眾多預(yù)測領(lǐng)域取得了較好效果。鐘穎等[19]基于XGBoost模型對路段未來時段平均旅行時間進(jìn)行預(yù)測。葉景等[20]考慮時空特征,提出了CNN-XGBoost 交通流預(yù)測模型。宋瑞蓉等[21]建立了ABiLSTM 與XGBoost 的組合模型,提高了交通時間預(yù)測的準(zhǔn)確度。梁泉等[22]使用XGBoost 算法,分類構(gòu)建了公交通勤出行目的地預(yù)測模型。
考慮到現(xiàn)有預(yù)測方法針對個體出租車輛速度研究的內(nèi)容較少,以及存在無法兼顧預(yù)測速度與精度等問題,本文提出了1 種基于XGBoost 算法的短時出租車速度預(yù)測模型。將原始時間序列數(shù)據(jù)構(gòu)造得到可供監(jiān)督學(xué)習(xí)使用的數(shù)據(jù),作為預(yù)測模型輸入的參數(shù)變量,然后使用基于貝葉斯優(yōu)化的hyperopt 方法進(jìn)行參數(shù)優(yōu)化,采用深圳市GPS 出租車數(shù)據(jù)對模型進(jìn)行訓(xùn)練與測試。通過與當(dāng)前研究使用率較高的非參數(shù)回歸和神經(jīng)網(wǎng)絡(luò)模型的預(yù)測結(jié)果比較,驗證了XGBoost模型的預(yù)測精度。
XGBoost 算法由華盛頓大學(xué)陳天奇[18]在SIGKDD 2016大會上發(fā)表的論文中率先提出,能夠增強(qiáng)梯度提升性能。鑒于單棵回歸樹精度不足和使用場景受限的應(yīng)用背景,XGBoost 是在分類回歸樹算法的基礎(chǔ)上對提升樹算法進(jìn)行的改進(jìn)。XGBoost的原始模型見式(1)。
迭代前XGBoost的目標(biāo)函數(shù)見式(2)。
通過初始化1個預(yù)測值,每次迭代時添加1個新函數(shù),經(jīng)過多次迭代,XGBoost在追求殘差減小的方向上逐步生成新模型,從而不斷地減小殘差,直到滿足系統(tǒng)的誤差要求,達(dá)到提升(Boosting)的目的。
相較于以往的梯度提升算法,XGBoost 算法作出了許多優(yōu)化。經(jīng)過二階泰勒展開,XGBoost 算法能夠去除目標(biāo)函數(shù)中的常數(shù)項,由每個數(shù)據(jù)點的二階導(dǎo)數(shù)決定著最終目標(biāo)函數(shù)的形式。將正則化項進(jìn)行拆分也可進(jìn)一步簡化目標(biāo)函數(shù),泰勒展開和拆分正則化項均有助于更快地找到目標(biāo)函數(shù)最小的情況。針對分類、排序和回歸問題,XGBoost兼顧了速度和效率,采用并行樹提升的方法,加快了模型學(xué)習(xí)速度,可以在不同平臺和語言環(huán)境下運行,強(qiáng)化了非線性學(xué)習(xí)能力和可擴(kuò)展性,從而在許多預(yù)測問題與實際應(yīng)用中具有高效、輕便的顯著優(yōu)勢。
短時車速預(yù)測模型是聚焦速度值的時間序列自回歸模型,利用XGBoost 可以進(jìn)行對時間序列問題擬合、評估、預(yù)測等,若給定一系列時間序列數(shù)據(jù)集,可以進(jìn)行數(shù)據(jù)重構(gòu)。對于短時出租車速度預(yù)測模型,使用訓(xùn)練集固定步長的連續(xù)時間序列數(shù)據(jù)作為輸入變量,稱為歷史時間序列,將此后下1個步長的時間序列作為輸出變量,稱為當(dāng)前時間序列,歷史時間序列與當(dāng)前時間序列共同組成1個時間窗口。本模型為提高預(yù)測精度,以城市車輛由最高行駛速度50 km/h迅速降低為0所需時長為閾值,時間大約需要8 s,其他情況下車速以較小的加速度變化,車速發(fā)生較大變化的時間長度小于8 s。若采樣時間間隔為2 s,那么需要連續(xù)4次采樣的數(shù)據(jù)。因此,設(shè)置預(yù)測模型輸入數(shù)據(jù)的時間窗口長度L為5,即根據(jù)車輛前8 s 內(nèi)的歷史車速預(yù)測下1 個時刻的當(dāng)前車速。規(guī)定時間窗口每次向前滑動1 個時間步長,直到滑動到第1個時間窗口,示意圖見圖1。通過滑動窗口,將時間序列xi轉(zhuǎn)化為1個新的數(shù)據(jù)集,即若干個時間窗口。
圖1 時間窗口示意圖Fig.1 Time window diagram
通過將原本按時間順序排列的數(shù)學(xué)序列S=[(t,x)i],其中,t為時間,x為速度值,轉(zhuǎn)化為由輸入變量和輸出變量組成的監(jiān)督學(xué)習(xí)序列St=[((xi-4,…,xi-1),xi)],為有監(jiān)督學(xué)習(xí)的短時出租車速度預(yù)測模型創(chuàng)建了新的數(shù)據(jù)集。此外,由于XGBoost 中內(nèi)置的K 折交叉驗證方法中的測試集是由原始數(shù)據(jù)集隨機(jī)分割得到的,導(dǎo)致測試集與訓(xùn)練集的分布存在較大差距,而短時出租車速度預(yù)測模型是根據(jù)歷史數(shù)據(jù)預(yù)測未來數(shù)據(jù),因此模型評估階段使用前向驗證(walk-forward validation)方法。將數(shù)據(jù)集拆分為2個部分,較大的數(shù)據(jù)集用于進(jìn)行模型的訓(xùn)練,較小部分的數(shù)據(jù)集進(jìn)行預(yù)測驗證。從測試數(shù)據(jù)集的第1個時間窗口開始預(yù)測,將預(yù)測值自動反饋給XGBoost模型進(jìn)行調(diào)試,隨后繼續(xù)對測試數(shù)據(jù)集中的下1個時間窗口進(jìn)行預(yù)測,存儲、評估及調(diào)整模型性能指標(biāo),遍歷測試集以重復(fù)上述過程。
連續(xù)時段內(nèi)出租車速度呈明顯的時間序列特性,相鄰時間間隔的速度數(shù)據(jù)具有很強(qiáng)的相關(guān)性,因此可以根據(jù)時間窗口中歷史時間序列的速度數(shù)據(jù)預(yù)測下1 個時刻的速度值。XGBoost 模型構(gòu)建首先需要對原始數(shù)據(jù)集作進(jìn)一步預(yù)處理。對于數(shù)據(jù)集中存在個別時刻車速值缺失的問題,利用缺失點前后時刻車速值的平均值進(jìn)行插值,從而避免預(yù)測結(jié)果出現(xiàn)異常偏差。根據(jù)2.1中構(gòu)造的監(jiān)督學(xué)習(xí)序列,將前80%的數(shù)據(jù)量作為訓(xùn)練集,后20%的數(shù)據(jù)量作為測試集。
迭代后的短時出租車速度預(yù)測的數(shù)學(xué)模型見式(3)~(4)。
對目標(biāo)函數(shù)進(jìn)行泰勒展開得到式(5)~(7)。
采用貪心算法得到最佳分裂節(jié)點,對比節(jié)點分裂前后的差異,增益值Gain計算見式(9)。選取增益值最大的分裂節(jié)點進(jìn)行分裂,當(dāng)增益值大于0 或未達(dá)到樹的最大深度時,繼續(xù)分裂葉子節(jié)點;當(dāng)增益值小于0或已達(dá)到樹的最大深度時,樹停止分裂,函數(shù)得到權(quán)重最優(yōu)解和預(yù)測速度最優(yōu)值,此時預(yù)測模型避免了過擬合現(xiàn)象的出現(xiàn),提高了預(yù)測速度且擬合效果最佳。
采用XGBoost算法預(yù)測出租車輛車速的重要環(huán)節(jié)是設(shè)置不同參數(shù)的取值,以及指定學(xué)習(xí)任務(wù)和相應(yīng)的學(xué)習(xí)目標(biāo),以增強(qiáng)模型的可控性。各個參數(shù)取值會影響預(yù)測模型的精確程度和運算速度,不同的參數(shù)取值組合也會導(dǎo)致預(yù)測結(jié)果出現(xiàn)過擬合或者欠擬合的情況。XGBoost所有參數(shù)中對算法性能影響較大的參數(shù)包括學(xué)習(xí)率(learning rate)、樹的最大深度(max depth)和迭代次數(shù)(n-estimators)等。為得到最優(yōu)的參數(shù)組合,需要在訓(xùn)練模型前進(jìn)行調(diào)參。
根據(jù)經(jīng)驗進(jìn)行手動調(diào)參的方法容易導(dǎo)致模型錯過最優(yōu)參數(shù),而選取次優(yōu)參數(shù),無法保證模型選擇的合理性。與網(wǎng)格搜索和隨機(jī)搜索算法這類自動調(diào)參方法相比,貝葉斯算法能夠克服以上方法在參數(shù)尋優(yōu)速度和質(zhì)量方面的問題,基于Python 軟件的hyperopt 模塊可以實現(xiàn)貝葉斯優(yōu)化,通過內(nèi)置函數(shù)可指定輸入?yún)?shù)的范圍與取值,經(jīng)過隨機(jī)搜索初始空間后,根據(jù)目標(biāo)函數(shù)迭代的反饋,不斷調(diào)整縮小搜索空間,在大范圍內(nèi)對多個參數(shù)進(jìn)行優(yōu)化,最終獲得總體性能最優(yōu)的參數(shù)組合,文中所使用的XGBoost 模型最佳參數(shù)設(shè)置見表1。
表1 XGBoost 模型參數(shù)設(shè)置Tab.1 XGBoost model parameter settings
實驗在英特爾i5 2.11GHz,4 核8 線程CPU,8GB RAM,Windows 8操作系統(tǒng)的計算機(jī)進(jìn)行,仿真平臺為pycharm,使用sklearn,pandas,numpy,xgboost和hyperopt等python庫。以2013年10月22日00:00—24:00 的深圳市出租車GPS 數(shù)據(jù)為實驗數(shù)據(jù),采樣時間間隔以2~15 s 不等,采集信息特征包括:出租車ID、時間、經(jīng)度、緯度、占用狀態(tài)和速度等數(shù)據(jù),共計23 409 條數(shù)據(jù)。本數(shù)據(jù)僅用來驗證模型準(zhǔn)確性,不作為分析目前城市出租車運行特征的數(shù)據(jù),選取該出租車1 d內(nèi)最后100個樣本點作為模型預(yù)測精度可視化展示。利用高德開放平臺繪制該出租車運行軌跡見圖2。
圖2 某出租車運行軌跡Fig.2 Trajectory of a taxi
恰當(dāng)?shù)脑u價指標(biāo)可以準(zhǔn)確直觀地反映模型的預(yù)測效果,將模型預(yù)測值和數(shù)據(jù)集真實值作比較,達(dá)到量化分析模型性能的目的。評價指標(biāo)選取平均絕對誤差(MAE)和均方根誤差(RMSE)。MAE是對所有樣本的絕對誤差求平均,與平均誤差相比,平均絕對誤差由于誤差被絕對值化,不會出現(xiàn)正負(fù)抵消的情況,因而更能反映預(yù)測值誤差的真實情況;RMSE可以體現(xiàn)數(shù)據(jù)的離散程度,MSE和RMSE的計算見式(10)~(11)。
式中:n為訓(xùn)練集數(shù)據(jù)總量。
MAE和RMSE雖然可以較好地體現(xiàn)模型預(yù)測精度,但從二者的公式中可以看出,由于MAE和RMSE預(yù)測的是車輛速度值,而車速值在采集時的原始值在較大的范圍內(nèi)波動,因此造成MAE和RMSE值較大。為提高模型評價指標(biāo)的可讀性,去除測試集數(shù)值本身大小的影響,引入R2和調(diào)整后的R2(R2_adjusted)來判斷預(yù)測模型的優(yōu)劣,避免了自由度對預(yù)測結(jié)果的影響,計算見式(12)~(13)。R2_adjusted越大,表示模型擬合效果越好,其取值范圍為[0,1]。
將訓(xùn)練過后的XGBoost 模型對測試集進(jìn)行預(yù)測,分析預(yù)測值與實際值的差異,計算得到預(yù)測模型的MAE、RMSE和R2_adjusted。同時對比非參數(shù)回歸模型、神經(jīng)網(wǎng)絡(luò)模型、與XGBoost模型的預(yù)測結(jié)果,預(yù)測性能評價見表2,3 種模型的預(yù)測值與實際值的對比見圖3~5。
表2 模型預(yù)測性能評價Tab.2 Model prediction performance evaluation
圖3 非參數(shù)回歸模型預(yù)測結(jié)果Fig.3 Nonparametric regression model prediction results
圖4 神經(jīng)網(wǎng)絡(luò)模型預(yù)測結(jié)果Fig.4 Neural network model prediction results
圖5 XGBoost模型預(yù)測結(jié)果Fig.5 XGBoost model prediction results
通過表2及圖3~5可知:非參數(shù)回歸模型、神經(jīng)網(wǎng)絡(luò)和XGBoost模型的預(yù)測曲線與實際曲線的變化趨勢基本相符。但XGBoost 模型的MAE和RMSE分別為9.841和12.711,均小于非參數(shù)回歸模型和神經(jīng)網(wǎng)絡(luò)模型,3 種模型的R2 _adjusted 值為0.595,0.504,0.592,相差較小。綜合分析各評價指標(biāo),表明XGBoost 模型對出租車1 d 內(nèi)的車速變化情況具有更高的預(yù)測精度。
由于R2_adjusted 值越接近1 時,模型的擬合度越高,出現(xiàn)3 種模型R2_adjusted 值均較低的主要原因是出租車車速的變化受駕駛員主觀行為的影響較大,出租車實際運行中的上下客行為導(dǎo)致其速度值在時間序列上具有隨意性較大的特點。經(jīng)過數(shù)據(jù)預(yù)處理后,數(shù)據(jù)波動依然較大,缺少規(guī)律性,因此導(dǎo)致模型擬合存在一定內(nèi)部誤差,從而造成R2_adjusted值整體偏小,但評價指標(biāo)仍可體現(xiàn)模型對預(yù)測結(jié)果的解釋功能。
此外,相較其他2 種模型,XGBoost 模型在速度發(fā)生急劇變化的點附近的擬合程度更佳,當(dāng)出租車駕駛員出現(xiàn)急加減速操作時,可以及時進(jìn)行預(yù)警提示;當(dāng)出租車正常加減速時,避免了無效或錯誤提示,能夠更為準(zhǔn)確地進(jìn)行預(yù)測。同時對比3 種模型的預(yù)測結(jié)果可以發(fā)現(xiàn),非參數(shù)回歸模型和神經(jīng)網(wǎng)絡(luò)模型在第80 個樣本點附近的預(yù)測值車速在極短時間內(nèi)突變?yōu)樨?fù)數(shù),明顯與實際情況不符,這是由于上述2 種模型在訓(xùn)練過程中學(xué)習(xí)過于徹底,在測試階段無法更好地識別數(shù)據(jù),造成模型過擬合。而XGBoost模型由于引入了正則化的方法,降低了模型的復(fù)雜度,因此在該處的擬合效果較優(yōu),驗證模型具有較好的泛化能力。
任選取1 d 內(nèi)20 個時間點進(jìn)行預(yù)測,預(yù)測效果見圖6。由圖6可見:預(yù)測曲線與實際車速曲線間的誤差較小,因此當(dāng)數(shù)據(jù)采集的頻率足夠高,每個采集點時間間隔足夠小時,XGBoost 模型就可以對出租車短時運行的速度趨勢做出準(zhǔn)確預(yù)測。若給定急加速和急減速加速度設(shè)定閾值,可以計算得到單位時間內(nèi)速度變化閾值,當(dāng)預(yù)測時刻模型預(yù)測值與實際值的差大于變化閾值時,就可以認(rèn)為出租車輛出現(xiàn)急加速或急減速的情況,乘客乘車舒適性較差,同時存在駕駛安全隱患;當(dāng)預(yù)測時刻模型預(yù)測值與實際值的差小于變化閾值時,認(rèn)為認(rèn)出租車輛以正常加速度行駛,乘客乘車舒適性較好,同時車輛平穩(wěn)運行。
圖6 該出租車20個時間點預(yù)測結(jié)果Fig.6 Prediction results of the taxi at 20 time points
綜上所述,運用XGBoost 算法在城市交通管理中進(jìn)行出租車輛車速預(yù)測研究,能夠通過較少的速度時間序列得到更為精確的下一時刻速度預(yù)測結(jié)果,結(jié)合預(yù)測值與實際值之差和設(shè)定閾值,有助于判別個體出租車駕駛員是否出現(xiàn)異常駕駛行為,實現(xiàn)對駕駛員的及時預(yù)警,保障城市出租車的安全運行。
選取城市出租車個體車輛速度作為預(yù)測對象,相較于路段平均車速,能夠精確反映個體車輛的運行狀況,并將車速時間序列數(shù)據(jù)集轉(zhuǎn)化為有滑動窗口的監(jiān)督學(xué)習(xí)序列,實現(xiàn)了對出租車輛短時運行速度的預(yù)測,參數(shù)的尋優(yōu)處理能夠在保證計算效率的同時,提升模型的預(yù)測性能?;赬GBoost 算法的短時車速預(yù)測模型較非參數(shù)回歸模型和神經(jīng)網(wǎng)絡(luò)模型在預(yù)測精度方面有較為明顯的提升,是1 種較為有效的出租車速度預(yù)測方法。模型在出租車速度發(fā)生突變時刻附近的預(yù)測效果更加準(zhǔn)確。通過分析預(yù)測時刻的誤差值與相關(guān)閾值,分析得到出租車行駛過程中可能出現(xiàn)的速度異常情況,進(jìn)而判斷駕駛行為異常的發(fā)生,能夠?qū)Ξ惓q{駛行為進(jìn)行精細(xì)化識別和提前警示,規(guī)范了駕駛員的駕駛行為,提高了乘客出行滿意度,減少了道路事故發(fā)生可能性,為城市出租車運行提供實時監(jiān)測保障。
由于出租車輛短時速度預(yù)測對訓(xùn)練數(shù)據(jù)集的數(shù)據(jù)條采集精度要求較高,需要出租車輛GPS 設(shè)備的采集時間間隔更小,而目前已有的公開數(shù)據(jù)集的采集頻率較低或不固定,因此后續(xù)將提高原始數(shù)據(jù)精度,從而得到更好的預(yù)測效果。