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