葉 景,李麗娟,唐臻旭
(南京工業(yè)大學 電氣工程與控制科學學院,江蘇 南京 211816)
快速、精準的短時交通流預測技術的研究和應用具有重要的現實意義[1]。其定義為對時間間隔小于15 min的交通流數據實施下一階段評估。從20世紀60年代開始,國內外學者就開發(fā)了多種模型和方法用于短時交通流預測,主要可分為傳統(tǒng)的數理統(tǒng)計模型以及非線性理論預測下機器學習模型。其中數理統(tǒng)計模型包括人時間序列預測模型[2]、卡爾曼濾波模型[3]、灰色理論模型[4]、自回歸模型[5]、傅里葉變換模型[6]等。近年來隨著交通流數據量不斷擴大加之人工智能快速發(fā)展,機器學習模型在交通流預測的研究中儼然成為主流,康亞男[7]采用改進的布谷鳥搜索算法對BP網絡參數進行優(yōu)化,建立交通流量的預測模型,提高了預測的準確性;Fusco等[8]將具體的貝葉斯網絡與人工神經網絡進行融合建模,并利用浮動車大樣本數據驗證模型有效性;Yang等[9]提出了一種基于空間的最小二乘支持向量回歸的預測模型方法。同時基于支持向量機的模型在短時交通流量預測中的多次應用均取得良好的預測精度[10,11];Tian等[12]將長短時記憶神經網絡(LSTM)應用在短時交通流量的預測之中,并證明了該方法優(yōu)于大部分其它模型。
現有研究中,基于統(tǒng)計模型考慮因素較為簡單,不能準確反映交通流變化的非線性和不確定性特點?;诜蔷€性理論預測下機器學習模型大多只考慮到交通流數據的時間相關性或空間相關性,沒有將二者結合。本文在上述研究的基礎上,提出一種時間與空間構造下的交通流數據預測方法,利用CNN神經網絡進行特征提取結合優(yōu)化后的機器學習模型XGBoost對短時交通流預測實施研究,望能為智能交通提供一定科學依據并為后續(xù)研究提供參考。
城市交通流數據具有時間相關性和空間互相關性[13]。時間上交通流量可看作上一時間節(jié)點交通流的延續(xù),長時間尺度交通流數據具有一定周期性,短時間內則具有時變性和相關性[14]。空間上相近路段交流呈現較高相關性,任意一點都具有可達性,從空間角度出發(fā),兩點距離越近,則相識度越高[15]。本文為結合兩種相關性數據對交通流數據進行預測,進行原始數據重構,將數據整合為矩陣形式作為預測輸入。構造方式如下:
(1)選取空間相鄰的n個路段采集每個路段前m個時間節(jié)點的交通流數據。
(2)構造單個節(jié)點時間序列數據,即Si=[ti1ti2…tim]。
(3)整合多個節(jié)點數據,形成交通流預測的輸入數據,即
上述所構造的輸入矩陣充分提取了交通流數據的時間、空間特性。但輸入數據過度冗余,至使模型訓練時間復雜度增大,預測精度降低。針對此問題,引入卷積神經網絡提取輸入矩陣特征,在降低數據冗余性和計算量的同時,有效提高模型預測精度。卷積神經網絡是一種具有深度督學習的結構的多層神經網絡,可看作由特征提取器和可訓練分類器兩部分組成。特征提取器包含特征圖層,通過卷積濾波和下采樣兩種操作從原始數據中檢索特征。
多層卷積神經網絡包含卷積層、池化層、全連接層和輸出層。相鄰層的神經元之間互相連接,同一層的神經元之間無連接??蓪⒕矸e神經網絡分為3個部分:輸入部分、特征提取部分和預測輸出部分。如圖1所示。
圖1 卷積神經網絡結構
圖1中特征提取主要包含卷積和池化兩部分。卷積層C通過多個卷積核對輸入進行卷積計算,得到多個卷積特征向量。池化層作用在于局部特征提取。卷積神經網絡無需依賴專家經驗便可抽離輸入矩陣特征。
卷積層:本文中卷積計算如式(1),輸入矩陣D維度為n×m, 采用r×r的卷積核C進行步長為1的滑動計算,加上偏置變量b得到 (n-r+1)×(m-r+1) 維度的特征向量。將特征向量輸入激活函數f(*), 本文采用ReLU激活函數f(x)=max(0,x), 相比sigmoid等激活函數ReLU在降低計算復雜度的同時,具有較快的收斂速度,且梯度不會飽和。卷積計算通過使用局部連接的特性提取輸入矩陣的局部特性,在迭代學習過程中利用梯度下降的方法不斷調整卷積核中的共享權重到達最大限度的提取數據特征
(1)
池化層:卷積層獲取特征后,對應使用池化層進行特征聚合。目的在于減少計算量,對卷積后的特征進行尺度縮小,池化計算如下
(2)
式中:α為池化權重,bp為池化層偏置權重。Down() 為池化操作,常用的池化操作有mean-pooling和max-pooling。當池化規(guī)模為l×l, 即滑動選取卷積后特征矩陣中l(wèi)×l范圍進行操作。mean-pooling方式則用l×l范圍內平均值進行代替,max-pooling則用范圍內最大值進行代替。
果蠅優(yōu)化算法[16](fruit fly optimization algorithm,FOA)是Wen-Tsao Pan受果蠅的覓食行為啟發(fā)提出的全局優(yōu)化算法。果蠅算法適應性強,無需計算目標函數偏導數,實現容易且搜索效率較高,相對其它種群優(yōu)化算法具有不易陷入局部最優(yōu)的特點。果蠅算法可分為以下步驟:
步驟1 初始化參數,設定果蠅種群數n,果蠅種群尋優(yōu)范圍DR,單次飛行長度SL和最大迭代次數Maxgen。隨機散布種群,滿足S=[s1s2…sn](si∈DR,i=1,2,3…n), 初始果蠅群體位置xaxis,yaxis。
步驟2 個體利用嗅覺搜尋食物的隨機距離與方向
xi=xaxis+RandomValue
yi=yaxis+RandomValue
(3)
步驟3 果蠅依靠嗅覺進行尋優(yōu),計算每個果蠅距離原點的歐式距離D和嗅覺濃度判定值T, 如式(4)、式(5)
(4)
(5)
將嗅覺濃度帶入適應度函數f(*), 得到嗅覺濃度Smelli, 如式(6)。保留果蠅種群中最優(yōu)的味道濃度值Smellbest和最優(yōu)果蠅sbest位置xbest,ybest
Smelli=f(Ti)
(6)
步驟4 視覺搜索,其它果蠅根據視覺飛向最優(yōu)位置sbest, 再次得到新的種群位置S
xaxis=xbest
yaxis=ybest
(7)
步驟5 迭代尋優(yōu),不斷重復步驟2~步驟4,直到達到設定的最大迭代次數Maxgen。
標準FOA采用基于種群的全局隨機搜索策略,通過跟蹤當前最優(yōu)解的信息來指導種群的下一步搜索,使得種群能夠以當前最優(yōu)解為中心開展局部隨機搜索,并朝著更優(yōu)的方向搜索前進。
XGBoost是一種結合boosting思想的并行回歸樹模型,由陳天奇等[17]在梯度下降決策樹(gradient boosted decision tree,GBDT)基礎上改進而來。相比GBDT模型,XGBoost克服了受限的計算速度和精度[18]。XGBoost在原先的GBDT的損失函數上增加正則化,以防模型過擬合。傳統(tǒng)的GBDT對計算損失函數進行一階泰勒展開,將負梯度值作為當前模型的值即為殘差,XGBoost則進行了二階泰勒展開,確保了模型的精確性。且XGBoost對每個特征進行分塊(block)并排序,使得在尋找最佳分裂點的時候能夠并行化計算,大大加快了計算速度[19]。模型推導如下
(8)
(9)
(10)
式中:γ和λ分別為T和ω的L2平方模系數也起到防止過擬合的作用。將式(9)進行二階泰勒展開,將二階形式作為近似目標函數
(11)
(12)
由于f(xi)=ωq(x),q為輸入映射至葉子的索引,即q∶Rm→T, 定義每個葉子的樣本集合為Ij={i|q(xi)=j}, 將式(12)進行如下改寫
(13)
(14)
(15)
上述推導可知決策樹結構q, 易求得目標函數值。訓練的目的在于尋求最佳決策樹結構函數q*, 使得目標函數取得最優(yōu)解。
參數的選擇直接決定機器學習模型的精確性,常用的調參方式有專家經驗法以及網格搜索。前者太過依賴于人為主觀判斷,后者的缺點在于參數尋優(yōu)范圍過于狹隘,不易尋得最優(yōu)參數。針對上述問題,本文提出利用FOA算法進行XGBoost模型參數優(yōu)化。選取Python工具包xgboost.XGBRegressor()接口下3組參數——學習率(eta)、樹的最大深度(max_depth)以及最小葉子節(jié)點樣本權重(min_child_weight)進行迭代尋優(yōu)。
eta:在更新葉子節(jié)點時,權重會與eta進行相乘。通過縮減特征的權重使提升計算過程更加保守。取值范圍[0,1],缺省值為0.3。
max_depth:控制決策樹的復雜度,數值越大模型越復雜,當數值過大易出現過擬合顯現。無限制,省缺值為6。
min_child_weight:定義觀測樣本生成的孩子節(jié)點的權重最小和?;貧w模型中,該參數是指建立每個模型所需要的最小樣本數。值越大,模型越保守,過大模型會出現欠擬合問題。取值范圍為:[0,∞],省缺值為1。
將3組參數作為FOA算法尋優(yōu)解,設定果蠅種群數。測試集預測平均誤差為適應度函數f(*), 經過有限次迭代進行XGBoost模型參數優(yōu)化以得到最優(yōu)模型參數eta*,max_depth*和min_child_weight*。
基于交通流數據在時間和空間上非線性的變化規(guī)律,采用上述算法模型對交通流數據實現實時預測。實現流程可分為4個階段:數據處理階段,特征提取階段,模型優(yōu)化階段,可行性分析階段。具體流程如圖2所示。
圖2 模型實現流程
數據處理階段:對相近路段進行相同時間間隔的交通流數據采集,對采集數據進行處理,包括缺失值及異常值填充或剔除。處理后數據分為訓練集與測試集。
特征提取階段:對待處理數據進行數據矩陣構建,利用不同的CNN模型進行特征提取,后續(xù)選擇表現最優(yōu)的CNN網絡結構。
模型優(yōu)化階段:使用FOA算法對XGBoost模型參數進行迭代優(yōu)化,使得測試集達到最小均方誤差,選取最優(yōu)參數下的模型。
可行性分析階段:利用常用預測模型與本文模型進行比較,分析模型可行性。
選取杭州市某高架道路多個路段交通流數據(https://www.kaggle.com/coplin/traffic)作為本文實驗數據,其中包括35個檢測點數據。數據采集時間為2015年10月4日到2016年1月3日,采集時間間隔為5 min。每個監(jiān)測點共計26 496組數據。樣本集中存在小概率缺失,實驗過程中使用缺失數據上下時間節(jié)點的平均值進行填充。進行異常值檢測后,利用屬性平均值進行替代。取預處理完單個樣本前175 min數據構造35*35的輸入矩陣,用于預測下一時間節(jié)點數據。每月抽取一周作為測試集數據,則訓練集樣本共計20 429組,測試集樣本共計6032組。
實驗使用Core(TM) i5-7500,內存8 G,顯卡GeForce GTX 1050Ti計算機。在python3.6環(huán)境下運行,利用pycharm IDE進行實驗內容編寫。
由于本文構造的輸入矩陣數據間過度冗余且維度過大,不利于機器學習模型的訓練。利用不同卷積網絡對數據進行特征提取,根據模型擬合能力選取結構合適的卷積神經網絡。不同卷積核下的訓練集平均絕對百分比誤差(mean absolute percent error, MAPE)見表1。
表1 不同卷積核下訓練集MAPE
根據實驗結果可知,本文選取4號卷積網絡進行特征提取,具體實現的網絡結構如圖3所示。最終選取6×6的特征向量共36維特征做XGBoost模型輸入。
圖3 CNN網絡結構
本文使用的回歸預測模型為XGBoost,默認參數下的模型不利于實驗結果精度。針對上述問題利用FOA算法對于XGBoost模型進行參數尋優(yōu),對學習率(eta)、樹的最大深度(max_depth)以及最小葉子節(jié)點樣本權重(min_child_weight)3組重要參數實施模型優(yōu)化。為驗證FOA算法的有效性,引入粒子群算法(particle swarm optimization,PSO)進行對比。
FOA和PSO初始種群規(guī)模均取30,尋優(yōu)迭代次數取100。實驗結果如圖4所示,在迭代過程中前期階段FOA算法局部尋優(yōu)能力優(yōu)于PSO算法,后期階段FOA優(yōu)化下的XGBoost模型訓練集預測平均絕對誤差為8.74,低于PSO算法下的9.26,表現出良好的尋優(yōu)能力。最優(yōu)參數(learning_rate=0.1,max_depth=10,max_leaf_nodes =10)下XGBoost更適用于該交通流特征數據,相對默認參數下的XGBoost預測精度更加精確,說明FOA算法參數尋優(yōu)的可行性。
為評估FOA-XGBoost模型在短時交通流預測的適用性。選取交流常用模型SVR、LSTM與之比較。利用測試集中2015年10月31日(周六)和2015年11月23日(周一)數據進行3種模型預測結果對比。
如圖5是3種模型預測擬合情況,其中圖5(a)、圖5(c)和圖5(e)為2015年10月31日模型預測結果,圖5(b)、圖5(d)和圖5(f)為2015年11月23日模型預測結果。FOA-XGBoost模型散點圖相比SVR和LSTM模型預測殘差更小,288個樣本值整體更加擬合于實際值。
圖4 FOA和PSO參數尋優(yōu)迭代
圖5 3種模型測試集擬合情況
由表2可知,相比SVR、LSTM模型,采用FOA-XGBoost模型時,RMSE和MAE指標值更小。說明FOA-XGBoost預測值更加精確,相比其它常用模型表現出更強的可靠性。
表2 3種模型預測值RMSE和MAE指標比較/%
本文結合交通流數據空間和時間相關性,構造輸入矩陣。利用CNN提取數據特征,有效減少數據冗余性,在保證預測精度下,大大提升訓練計算效率。并提出一種FOA算法參數優(yōu)化下的XGBoost模型,該模型相比SVR、LSTM常用模型更加適應于CNN特征提取下的交通流數據預測,其RMSE和MAE指數均優(yōu)于比較模型,表現出更加準確的預測結果,是一種有效的交通流預測方法。
需要指出的是,本文未考慮復雜天氣對于交通流預測的影響且交通流預測模型僅針對城市道路,下一階段仍需考量在多視角下的交通流預測,將進一步加強模型魯棒性,使其適用于復雜情形下的交通流預測。