王 鈺,郭蘭英,程 鑫
長安大學 信息工程學院,西安 710064
在智能交通的發(fā)展歷程中交通流量預測起著重要的作用。精確和實時的交通流預測能夠用來分析道路規(guī)劃,減少交通事故傷亡,提供合理的出行意見[1]。對不同的重要交通路口的車流量短時間段進行預測,得到盡可能準確的預測結(jié)果,可以為相關部門的交通管制和廣大居民的出行提供及時有效的參考,緩解不同時刻交通壓力,在極大限度下充分利用道路資源。
目前為止,已經(jīng)有大量的方法被應用到短時交通流的預測之中。短時交通流量的預測分為參數(shù)模型和非參數(shù)模型。參數(shù)模型包括自回歸移動平均模型(Autoregressive Integrated Moving Average,ARIMA)[2]和卡爾曼濾波[3]等。非參數(shù)模型包括KNN(K-Nearest Neighbors)[4]、SVR(Support Vector Regression)[5]、人工神經(jīng)網(wǎng)絡[6]等。
由于短時車流量的變化呈現(xiàn)出一定的非線性特征,且隨著時間變化這種非線性模型也十分靈活,為了能夠更好地擬合較為復雜的數(shù)據(jù),近年來更加關注于各種非線性預測模型。Oh 等[7]提出了基于KNN 的新的序列搜索算法來預測交通狀態(tài),該方法和傳統(tǒng)方法相比,顯著提高了預測的準確性、效率和穩(wěn)定性。丁棟等[8]基于影響模型,將交通網(wǎng)絡中每個節(jié)點當作一個馬爾科夫過程,整個網(wǎng)絡看成是多個馬爾科夫交互過程,再用EM算法訓練得出模型參數(shù),從而預測短時交通流。文獻[9]首次提到了用回歸樹和隨機森林模型預測城市工作區(qū)域的車流量,并與神經(jīng)網(wǎng)絡和KNN 預測模型進行比較,結(jié)果顯示隨機森林具有更高的預測準確度。但文獻中只分析了一個大的區(qū)域的車流量預測問題,并未具體分析各路段的車流量預測問題,且沒有對隨機森林的超參調(diào)節(jié)和優(yōu)化進行討論。支持向量機(Support Vector Machine,SVM)是一種通過尋求結(jié)構(gòu)化風險最小來提高泛化能力的模型,解決了一般算法難以解決的非線性、高維識別、過學習的問題,但是SVM 模型在對大規(guī)模訓練樣本求解二次規(guī)劃時會涉及到高階矩陣的計算,此時矩陣的存儲和求解會占用計算機的大量內(nèi)存,對硬件的要求比較高,而且傳統(tǒng)的支持向量機只能作二分類法,而無法處理實際應用中遇到的多分類問題。孟飛等[10]通過定義粒子群聚攏度使其服從隨機分布,使得粒子群算法避免了陷入局部最優(yōu)解,并使用被該算法優(yōu)化過參數(shù)的小波神經(jīng)網(wǎng)絡對車流量進行預測,證明了這種組合優(yōu)化算法的預測精度高于兩種單一算法。王洪德等[11]通過總結(jié)灰色系統(tǒng)不需要大規(guī)模原始數(shù)據(jù)的優(yōu)點和支持向量機良好的泛化能力,將灰色系統(tǒng)與支持向量機進行了組合,將其應用于地鐵客流量的預測上,取得了相對誤差僅3.61%的實驗結(jié)果。但灰色系統(tǒng)經(jīng)過累加合成之后就會失去有用的規(guī)律,而且在建模過程中沒有結(jié)合數(shù)據(jù)背后真正反映的特征與規(guī)律。文獻[12]首次在車流量預測中使用了深度學習模型,并結(jié)合多任務學習的方法預測整條道路的車流量,取得了較常見模型更好的預測準確度,但該文獻中使用的是較早的基于受限玻爾茲曼機(Restricted Boltzmann Machines,RBM)的深度置信網(wǎng)絡(Deep Belief Network,DBN)。深度網(wǎng)絡結(jié)構(gòu)由具有關聯(lián)關系的多個隱含層組成,使用神經(jīng)網(wǎng)絡的隱層參數(shù)作為深度網(wǎng)絡新頂層預訓練初始化參數(shù),映射上一個圖層的輸出得到抽象的輸入表示[13]。楊志勇[14]通過改進神經(jīng)網(wǎng)絡的權(quán)值修正函數(shù)與學習率的調(diào)整方式,將其應用在交通流量預測上。實驗結(jié)果表明,在交通流量預測上使用由灰色系統(tǒng)與神經(jīng)網(wǎng)絡組合的模型的預測精確度在一定程度上要高于兩種單一模型預測的精確度。
深度學習模型如深信度網(wǎng)絡[15]、堆疊自動編碼器[16]、LSTM(Long Short-Term Memory)遞歸神經(jīng)網(wǎng)絡[17]已經(jīng)用于車流量預測。但用LSTM 進行車流量預測時并未考慮到多種因素的影響及處理方法。為了能夠更加準確地預測短時交通車流量,本文提出了一種對車流量多種因素處理的Classify 方法,結(jié)合深度學習的LSTM遞歸神經(jīng)網(wǎng)絡對短時車流量進行預測,然后對結(jié)果進行誤差分析,提高了預測的精度。
為了提高短時車流量預測的準確度,本文考慮了多種因素,如天氣、節(jié)假日等的影響,提出了一種對車流量多因素處理的Classify 方法,然后通過Long Short-term Memory 神經(jīng)網(wǎng)絡對車流量數(shù)據(jù)進行訓練預測,取得了更佳的效果,能夠更好地應用到城市路口、收費站等重要交通要道的車流量預測。
本文依據(jù)陜西省高速公路收費站現(xiàn)場調(diào)查和歷史真實數(shù)據(jù),如表1所示2018年6月的收費站出口部分數(shù)據(jù),根據(jù)陜西省收費公路計重收費技術(shù)要求(數(shù)據(jù)字典)進行查詢。主要包括如下數(shù)據(jù):StartTime 表示開機時間;SerialNum 表示序列號;CardNetwork 表示卡網(wǎng)絡標號;ExitTime表示出口日期及時間;ExitDate表示統(tǒng)計日期等。通過數(shù)據(jù)字典知ExitTime 是操作發(fā)生時的自然時間(只增加),其數(shù)據(jù)是可用數(shù)據(jù),每條數(shù)據(jù)代表一輛車,然后通過Oracel數(shù)據(jù)庫按時間排序并導出ExitTime數(shù)據(jù),保存為.CSV文件。
根據(jù)上步提取到數(shù)據(jù),通過降采樣的方式,每隔15 min進行一次車流量統(tǒng)計。因為預測的準確度取決于數(shù)據(jù)粒度,更細的粒度可以提高模型的性能[18]。每隔15 min同時也符合短時交通流要求。
本文采用2018年6月份的出口數(shù)據(jù)進行實驗,通過上步的降采樣已經(jīng)統(tǒng)計出了每隔15 min 的短時車流量。通過查看文件,最后有一兩個7 月份的異常數(shù)據(jù),這時進行了刪除操作。
表1 2018年6月收費站出口部分數(shù)據(jù)
如若遇到缺失值,這里有多種插補方法,如均值/中位數(shù)/眾數(shù)插補、使用固定值插補、最近鄰插補、回歸插補以及插值法等。本文若遇缺失值使用的是拉格朗日插值法。該方法根據(jù)缺失值前后的數(shù)據(jù)值擬合一條多項式曲線來插值,該方法結(jié)果具有一般性。其原理大致如下:
對于一個平面上的已知n個點可以找到一個n-1次多項式,使該多項式曲線過這n個點。假設該多項式如下形式:
其中,ai為系數(shù),i∈[0,n-1],n為正整數(shù),x為橫坐標值,y為多項式曲線對應坐標點函數(shù)值。將n個點的坐標(x1,y1),(x2,y2)…(xn,yn)代入式(1)解出拉格朗日插值多項式為:
其中,L(x) 為多項式,(xi,yi) 為相應的坐標點,i∈[1,n],n為正整數(shù)。
通過上述的處理,如圖1 所示,選取了2018 年6 月19 號、2018 年 3 月 9 號、2017 年 10 月 2 號和 2018 年 6 月16號的數(shù)據(jù),繪出了當日的車流量隨時間的變化圖,橫坐標代表時間,縱坐標代表當前時刻的車流量信息。通過對車流量信息圖分析得,圖1 中(a)、(b)在正常情況下,早上8:00 左右和18:00 左右有兩個高峰,這大部分是由于上班早高峰和下班晚高峰引起的。而在8:00—18:00處于一定的穩(wěn)定狀態(tài)。這些現(xiàn)象符合車流量早晚高峰現(xiàn)象,通過對車流量的分析和預測,對交通部門和人們出行具有實際的指導意義。但是對于節(jié)假日和天氣影響下,與正常情況下的流量圖相比較,早晚高峰不明顯且在白天波動較大。如圖1(c)、(d)所示,(c)是在法定節(jié)假日中的交通流量圖,(d)是在雨天時候的交通流量圖。通過(c)、(d)對比也可發(fā)現(xiàn),法定節(jié)假日的車流量最高值明顯大于雨天的車流量最高值,因為雨天的不安全因素較多,所以駕駛車輛出行減少,而在節(jié)假日大多數(shù)人會選擇自駕游,因此駕駛車輛數(shù)量會增加。這些現(xiàn)象也符合平時人們的日常生活。
通過網(wǎng)絡查詢當?shù)貧夂蝾愋停靼矊儆跍貛О霛駶櫞箨懶约撅L氣候,四季分明,氣候溫和,雨量適中,雨季大部分集中于春夏兩季。因此本文選取的是六月份的數(shù)據(jù),且通過上面描述,已經(jīng)處理成為以15 min 為間隔的短時交通流數(shù)據(jù)。
圖1 車流量信息圖
2.3.1 天氣因素處理
通過天氣預報查詢天氣記錄,對短時交通流數(shù)據(jù)根據(jù)天氣記錄進行篩選,根據(jù)式(3)得到不同的天氣影響強度因子,將天氣影響強度因子大于天氣閾值的時間段劃為異常天氣時間段。
其中,Vi表示不同天氣情況下的車流量,T表示當月的總車流量,i代表不同天氣,例如晴天、陰天、小雨、中雨、大雨、霧天等,ci表示不同天氣的影響系數(shù),θi代表天氣影響強度因子,所述的天氣閾值為晴天時θi的取值。
通過分析,大雨天氣車流量明顯減少,此時c(ii代表大雨天)的取值與正常天氣情況下的取值相比較小,故ci越小,說明天氣影響程度越大。再由ci的導數(shù)求得θi,即天氣影響強度因子,θi越大,說明當日天氣情況對當日的車流量影響越大。例如,以2018年6月份收費站出口的部分數(shù)據(jù)為例,統(tǒng)計6 月份總車流量T為855 418輛,并通過上式計算得到不同天氣影響強度值,如表2所示。
表2 不同天氣影響強度表
通過表2,知道每天的日交通量Vi、天氣情況以及當月總車流量T=855 418 輛,于是分別求出影響系數(shù)ci,分別為0.032 606 281、0.032 351 435、0.029 995 862、0.030 846 908,考慮到天氣情況,分析得出天氣越不好(如小雨轉(zhuǎn)中雨),影響系數(shù)ci就越小。最后求出強度因子θi,其值分別為30.668 937 68、30.910 529 93、33.337 931 75、32.418 160 03,此時可以分析得出影響系數(shù)ci越小,強度因子θi越大。最終按照強度因子的大小,將天氣劃分為不同影響等級。如小雨天氣下強度因子為30.910 529 93,可將其影響等級劃分為1;小雨轉(zhuǎn)中雨天氣下強度因子為33.337 931 75,可將其影響等級劃分為2。
故通過θi的取值大小將i天氣(i可取晴天、陰天、雨天、霧天等)對短時交通車流量的影響劃分為4個等級:
0代表無影響;
1代表稍有影響;
2代表有影響;
3代表有較大影響。
保證車流量正常天氣狀況下的純潔度,對有影響的天氣下的數(shù)據(jù)進行篩選操作,并分類存儲,如表3所示。
表3 天氣分類存儲數(shù)據(jù)表
若出現(xiàn)除此之外的惡劣天氣,包括中雪、大雪、沙塵暴、暴雨、臺風等也可將其考慮進去,但對于當?shù)貋碚f,這些天氣極為罕見。
2.3.2 節(jié)假日因素處理
查詢節(jié)假日記錄,對得到的短時交通流數(shù)據(jù)根據(jù)節(jié)假日記錄進行篩選,根據(jù)式(4)得到節(jié)假日影響系數(shù),將節(jié)假日影響系數(shù)大于節(jié)假日閾值的時間段劃為節(jié)假日時間段。
其中,Ej表示不同節(jié)假日情況下的車流量,βj表示節(jié)假日影響系數(shù),j表示不同節(jié)假日,所述節(jié)假日閾值為非節(jié)假日時βj的取值。
通過分析,比如十一黃金周車流量在十月明顯增加,此時Ej(此時j代表十一假期)的取值與非節(jié)假日取值相比較大,而當月總的車流量T一定,故Ej的取值越大,則輸出βj越大,說明此時節(jié)假日對車流量的影響較大。根據(jù)法定節(jié)假日的放假天數(shù)及節(jié)日所在的季節(jié)及βj,可將影響等級劃分為3個等級:
等級1代表稍有影響;
等級2代表有影響;
等級3代表有較大影響。
為了使對車流量的預測更為準確,如若數(shù)據(jù)中包含了節(jié)假日的數(shù)據(jù),就對其進行篩選操作,如表4所示。
表4 節(jié)假日分類存儲數(shù)據(jù)表
循環(huán)神經(jīng)網(wǎng)絡常用來處理序列數(shù)據(jù)。循環(huán)神經(jīng)網(wǎng)絡因為有梯度消失這一問題,只有短期記憶。為了避免這一問題,循環(huán)神經(jīng)網(wǎng)絡產(chǎn)生了一個變體——長短期記憶網(wǎng)絡(LSTM)。LSTM在循環(huán)神經(jīng)網(wǎng)絡的基礎上增加了一些門結(jié)構(gòu),通過門的控制將短期記憶與長期記憶聯(lián)合起來,一定程度上解決了普通的循環(huán)神經(jīng)網(wǎng)絡梯度消失的問題。LSTM由Hochreiter & Schmidhuber于1997年提出,并在近期被Alex Graves 進行了改良和推廣。在很多問題上,LSTM 都取得了巨大的成功,并得到了廣泛的使用。
LSTM通過門結(jié)構(gòu)來控制和保護細胞狀態(tài)C,特點是使用了3個由乘法運算和sigmoid神經(jīng)網(wǎng)絡層構(gòu)成的門單元。第一步是通過遺忘門來實現(xiàn)的,可以理解為“記住之前內(nèi)容的多少”,這一步使用了sigmoid 函數(shù)和乘法操作來實現(xiàn),輸出為ft,然后輸入門單元決定需要更新的內(nèi)容,輸出為it,最后由輸出門單元在之前的基礎上進行濾出,輸出為ot。各個門單元的更新如式(5)~式(7)所示:
其中,Wf、bf、Wi、W0、b0分別是各門單元的權(quán)值和偏移量,δ表示激活函數(shù)sigmoid。除去3 個門單元外,細胞狀態(tài)ct在不斷隨著時間流動,根據(jù)式(8)得到,根據(jù)式(9)用和ct-1更新ct。這里的Wc、bc分表代表權(quán)值和偏移量,使用tanh作為激活函數(shù)。這一層神經(jīng)網(wǎng)絡的輸出值ht由輸出門單元與使用tanh激活后的細胞狀態(tài)控制,如式(10)所示。
上述表達式中所使用的sigmoid激活函數(shù)如式(11)所示,能夠?qū)崝?shù)域映射到[0,1]的范圍內(nèi)。
綜上所述,LSTM 利用門單元,增強了循環(huán)神經(jīng)網(wǎng)絡的記憶力,通過訓練數(shù)據(jù)不斷更新各個門單元的權(quán)值和偏移量,最終確定合適的值。在預測階段,利用訓練好的模型對輸入數(shù)據(jù)進行運算,得到最終的預測結(jié)果。
本文依據(jù)陜西省高速公路收費站現(xiàn)場調(diào)查和歷史真實數(shù)據(jù),通過Oracle 數(shù)據(jù)庫導出交通流的重要信息。本文考慮到天氣因素,取2018 年6 月份的數(shù)據(jù),以降采樣的方式每15 min統(tǒng)計一次,通過本文上面所述的數(shù)據(jù)預處理、多因素處理的Classify 方法對數(shù)據(jù)進行處理。在該網(wǎng)絡中模型參數(shù)如下:batch為512,epochs為1 000,validation_split為0.05,Dropout為0.2。
觀察數(shù)據(jù),在6月16號到18號,連續(xù)三天都是小雨轉(zhuǎn)陰。這時以6 月1 號到18 號的數(shù)據(jù)為訓練集,以6 月19號為測試集去預測6月19號的車流量情況,通過以往天氣數(shù)據(jù)得知6月19號也是以多云為主,天氣狀況與前三天不同,測試效果如圖2(b)所示,其中圖2(a)所示是訓練過程的損失可視化,其過程是波動下降,大約在400 epochs 左右趨于穩(wěn)定。再將6 月16 號到18 號的數(shù)據(jù)刪除,排除連續(xù)三天的小雨轉(zhuǎn)陰的情況,再將排除天氣之后的數(shù)據(jù)作為訓練集,以6 月19 號的數(shù)據(jù)為測試集,預測19 號的交通流量情況,預測效果如圖3(b)所示,其中圖3(a)是在排除天氣因素后訓練數(shù)據(jù)的損失可視化,其過程也是波動下降,在0~200 epochs時下降較快。
圖2 未排除天氣因素時預測結(jié)果圖
如圖4 所示,(a)是未排除天氣因素時訓練過程中的mean_absolute_percentage_error變化值;而(b)是排除天氣因素時訓練過程中的mean_absolute_percentage_error變化值。通過肉眼很難辨別出兩者的好壞,通過運行程序,得出(a)在1 000 epochs時最后的輸出值為25 965.045 9;(b)在訓練到1 000 epochs 時的輸出值為24 871.074 2;通過對mean_absolute_percentage_error 值比較,得出在排除天氣因素后訓練數(shù)據(jù)時效果會較好。
通過結(jié)果對比來看,圖2(b)的擬合度不如圖3(b)的效果好。表5是圖2和圖3的多個模型評價指標數(shù)據(jù)。
由于MAE、MSE、RMSE 使用的是平均誤差,而平均誤差對異常點較敏感,如果回歸器擬合的某個回歸值與真實值存在較大差異,將會導致平均誤差值較大,對最終的評估值產(chǎn)生較大影響,即平均值不具有魯棒性。通過分析比較以上的評估指標,選擇了MAPE、Explained_variance_score、R2作為最終的評估指標。通過對比分析,如果不進行多因素處理的Classify方法,此時的MAPE為 16.343 869%,Explained_variance_score 為 0.968 118,R2為0.968 096。而通過多因素處理的Classify 方法之后,MAPE降低了近5個百分點,Explained_variance_score提高了近1個百分點,同時R2值也提高了。即由實驗可得,通過多因素處理的Classify方法之后,預測精度有明顯的提高,能夠更為準確地反映道路交通流的變化特征。
圖3 排除天氣因素時預測結(jié)果圖
圖4 訓練過程中MAPE變化值
表5 不同評價指標數(shù)據(jù)
本文提出了一種結(jié)合深度學習的短時車流量預測優(yōu)化方法,對車流量的不同因素進行了分析,如天氣、節(jié)假日等,通過多因素Classify方法,對不同因素下的數(shù)據(jù)進行了分類,降低了多種因素對車流量預測的強度,更進一步保證了數(shù)據(jù)因素的單一性和純潔性。同時使用了深度學習的Long Short-Term Memory 神經(jīng)網(wǎng)絡,在一定程度上解決了時間序列的記憶問題。LSTM 通過門的控制將短期記憶與長期記憶聯(lián)合起來,解決了普通的循環(huán)神經(jīng)網(wǎng)絡梯度消失的問題。經(jīng)過多次實驗和測試,與傳統(tǒng)的車流量預測方法相比,通過多因素Classify方法對多種因素進行分析和處理,能夠很好地提高對不同情況下車流量預測的精度,使得預測更為準確,能夠更好地反映道路交通的變化特征,對交通管理部門和人們出行具有實際的指導意義。