趙建東 朱丹 劉佳欣
(1.北京交通大學(xué) 交通運(yùn)輸學(xué)院,北京 100044;2.北京交通大學(xué) 綜合交通運(yùn)輸大數(shù)據(jù)應(yīng)用技術(shù)交通運(yùn)輸行業(yè)重點(diǎn)實(shí)驗(yàn)室,北京 100044)
地鐵承擔(dān)了城市中的大部分客流運(yùn)送任務(wù),在眾多地鐵站點(diǎn)中,換乘站的重要性日益突出,針對換乘站的換乘客流預(yù)測逐漸成為研究熱點(diǎn)。換乘客流預(yù)測是影響地鐵運(yùn)營計(jì)劃、客運(yùn)組織方案制定與調(diào)整的關(guān)鍵因素。因此,提高模型預(yù)測精度至關(guān)重要。針對短時(shí)客流的預(yù)測模型主要分為參數(shù)模型與非參數(shù)模型兩大類。參數(shù)模型的代表方法有差分自回歸移動平均模型(AutoRegressive Integrated Moving Average,ARIMA)[1]、邏輯回歸(Logistic Regression,LR)[2]等。非參數(shù)模型的常用方法有支持向量機(jī)(Support Vector Machine,SVM)[3]、卡爾曼濾波(Kalman filtering)[4]等。謝臻等[5]選取支持向量回歸的方法對地鐵進(jìn)站客流進(jìn)行短時(shí)預(yù)測,使用一種改進(jìn)的粒子群算法進(jìn)行參數(shù)尋優(yōu);孫曉黎等[6]提出基于集成學(xué)習(xí)的XGBoost算法進(jìn)行軌道客流預(yù)測,并以工作日客流量驗(yàn)證了模型的有效性;Sun等[7]提出了小波-支持向量機(jī)模型并對北京軌道交通換乘客流進(jìn)行預(yù)測。雖然傳統(tǒng)的參數(shù)與非參數(shù)模型被廣泛用于短時(shí)地鐵客流預(yù)測中,并取得一定成果,但由于其訓(xùn)練時(shí)間長,時(shí)效性低,難以滿足實(shí)際中處理海量數(shù)據(jù)的要求[8]。
深度學(xué)習(xí)在處理大量、復(fù)雜的數(shù)據(jù)時(shí)具有顯著優(yōu)勢,逐漸被應(yīng)用于短時(shí)交通流預(yù)測中,常用的深度學(xué)習(xí)算法包括循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)[9]、長短時(shí)記憶神經(jīng)網(wǎng)絡(luò)(Long Short-Term Memory Neural Network,LSTM)[10]、門控循環(huán)單元(Gated Recurrent Unit,GRU)[11]等,其中GRU作為LSTM的變體,在保證預(yù)測精度的前提下?lián)碛懈斓念A(yù)測速度,使用較為廣泛。目前在短時(shí)客流預(yù)測方面主要是對預(yù)測模型的結(jié)構(gòu)進(jìn)行優(yōu)化和提高訓(xùn)練算法的效率[12],忽略了樣本噪聲對預(yù)測性能的干擾。
時(shí)間序列分解方法(Seasonal Decomposition of Time Series by Loess,STL)在預(yù)處理時(shí)序數(shù)據(jù)時(shí),可以有效處理復(fù)雜信號、降低噪聲干擾。例如,李晉國等[13]在STL分解的基礎(chǔ)上,對短期電量的時(shí)間序列進(jìn)行預(yù)測,提高了預(yù)測精度;李瀚文[14]使用STL時(shí)間序列分解法對客流進(jìn)行分解,并以北京站和天安門西站進(jìn)站客流為例,對軌道交通進(jìn)站客流進(jìn)行預(yù)測,驗(yàn)證了其有效性。
本研究將STL降低樣本噪聲干擾與GRU預(yù)測時(shí)序數(shù)據(jù)的優(yōu)勢結(jié)合起來,提出一種新的基于STL-GRU的地鐵換乘客流預(yù)測方法,以期實(shí)現(xiàn)更高的預(yù)測精度,從而為地鐵運(yùn)營者提前制定運(yùn)營方案提供了理論支撐。
基于地鐵AFC(Automatic Fare Collection,自動售檢票系統(tǒng))刷卡數(shù)據(jù),可以直接提取出地鐵換乘站點(diǎn)進(jìn)、出站客流。由于地鐵內(nèi)部換乘不需要進(jìn)、出站,無法直接根據(jù)刷卡數(shù)據(jù)獲取換乘客流信息。因此,本研究利用基于圖的深度優(yōu)先搜索算法,通過設(shè)定距離閾值對地鐵乘客的出行路徑進(jìn)行識別,可較為準(zhǔn)確地提取地鐵換乘客流信息,為地鐵內(nèi)部換乘客流預(yù)測奠定基礎(chǔ)。
地鐵AFC原始數(shù)據(jù)包含43個(gè)字段,提取出主要字段,包括用戶卡號、進(jìn)出站時(shí)間、進(jìn)站線路及車站編碼、出站線路及車站編碼等,如表1所示。
表1 地鐵AFC原始數(shù)據(jù)的主要字段
在地鐵AFC數(shù)據(jù)中,可能出現(xiàn)的無效數(shù)據(jù)類型有:
(1)出站時(shí)間早于或等于進(jìn)站時(shí)間的數(shù)據(jù);
(2)進(jìn)站站點(diǎn)與出站站點(diǎn)相同的數(shù)據(jù);
(3)地鐵線路運(yùn)營時(shí)間外的刷卡數(shù)據(jù);
(4)進(jìn)出站點(diǎn)的刷卡數(shù)據(jù)編碼不能與實(shí)際地鐵站匹配的數(shù)據(jù);
(5)行程時(shí)間過長的數(shù)據(jù),規(guī)定超過4 h時(shí),即被認(rèn)為無效。
根據(jù)地鐵AFC數(shù)據(jù)清洗規(guī)則對北京地鐵2018年4-5月份的數(shù)據(jù)進(jìn)行處理,在清洗過后得到的有效數(shù)據(jù)中,根據(jù)上下車線路是否相同可初步判斷乘客出行過程中是否存在換乘。經(jīng)過數(shù)據(jù)處理后的2018年4-5月份的北京地鐵客流總量與換乘客流量統(tǒng)計(jì)如圖1所示,其中有效數(shù)據(jù)占比約99.8%,換乘客流量占比約為74%~76%。
圖1 2018年4-5月北京地鐵客流總量及換乘客流量
地鐵AFC數(shù)據(jù)中只能記錄乘客的進(jìn)出站信息,不能明確乘客的出行路徑。當(dāng)前大部分城市地鐵線網(wǎng)換乘站很多,如果只有OD的情況下,中間可能存在多個(gè)換乘站,乘客如何換乘以及選擇哪條線路就難以判斷。對于地鐵站點(diǎn)而言,閘機(jī)記錄的票卡交易數(shù)據(jù)中記錄了包括進(jìn)出站行為、時(shí)間、站點(diǎn)名稱、卡號以及站點(diǎn)編號等信息。根據(jù)這些信息,關(guān)聯(lián)站點(diǎn)之間的距離并結(jié)合AFC數(shù)據(jù)中乘客的刷卡時(shí)間以及進(jìn)出站點(diǎn),就可以通過這些數(shù)據(jù)利用基于圖的深度優(yōu)先搜索算法識別出最短距離的出行路徑及換乘站點(diǎn),并推測換乘時(shí)間,提取各站點(diǎn)換乘交通量。
(1)乘客出行路徑提取
根據(jù)乘客上下車線路及站點(diǎn)編號與站點(diǎn)信息表進(jìn)行匹配,利用基于圖的深度優(yōu)先搜索算法識別出乘客的出行路徑,部分乘客出行路徑如表2所示。
表2 部分乘客出行路徑示例
(2)地鐵換乘站點(diǎn)識別
基于乘客的換乘路徑,可識別地鐵內(nèi)部換乘站點(diǎn),根據(jù)出行軌跡中進(jìn)站車站到換乘車站的站數(shù)Nbefore和換乘車站到出站車站的站數(shù)Nafter,以及進(jìn)站時(shí)間Ton和出站時(shí)間Toff,可以推算乘客在任意站點(diǎn)的換乘時(shí)刻Ttransfer,該方法在換乘多次的情況下同樣適用[15];換乘時(shí)刻計(jì)算方法如式(1)所示:
(1)
(3)地鐵換乘客流提取
以北京地鐵西直門站為例,每5 min統(tǒng)計(jì)一次換乘客流并繪制客流隨時(shí)間變化的分布曲線圖,圖2所示為西直門站一周內(nèi)的換乘客流分布情況。
從圖2中可以看出,工作日的換乘客流出現(xiàn)了明顯的早晚高峰,整體形狀呈現(xiàn)“雙峰型”,與實(shí)際客流通勤規(guī)律相符;休息日客流分布較分散,全日高峰現(xiàn)象不明顯,客流高峰值也大幅下降。周五12:00之后的客流相較于周一至周四明顯增多,為實(shí)現(xiàn)更加精準(zhǔn)的地鐵換乘客流預(yù)測,下文將對周五的換乘客流單獨(dú)進(jìn)行預(yù)測。
圖2 北京地鐵西直門站周客流分布(2018年5月7日-2018年5月13日)
時(shí)間序列分解方法(STL)原理是通過魯棒局部加權(quán)回歸(Locally Weighted Regression,LOESS)對時(shí)間序列進(jìn)行平滑處理,將原始時(shí)間序列Yt分解為趨勢量Tt、季節(jié)量St和余量Rt,如式(2)所示:
Yt=Tt+St+Rt,t=1,2,…,N
(2)
STL分解為外循環(huán)和內(nèi)循環(huán)兩部分,外循環(huán)主要用于調(diào)節(jié)魯棒性權(quán)重,內(nèi)循環(huán)的主要工作是針對序列趨勢量以及季節(jié)量兩個(gè)分量的分解計(jì)算。
內(nèi)循環(huán)主要分為以下6個(gè)步驟。
將內(nèi)循環(huán)的層數(shù)用ni表示,外循環(huán)的層數(shù)用no表示,ni足夠大時(shí),內(nèi)循環(huán)結(jié)束時(shí)趨勢分量與周期分量已收斂,若時(shí)序數(shù)據(jù)中沒有明顯的離群值,可以將no設(shè)為0。為了保證周期分量能準(zhǔn)確反映原始時(shí)間序列的周期性變化,STL時(shí)間序列分解的周期數(shù)選擇需要和原始數(shù)據(jù)的周期數(shù)保持一致,因此,本研究將周期參數(shù)設(shè)置為228。
內(nèi)循環(huán)步驟2與步驟6中做LOESS回歸需要乘以外循環(huán)所得到的魯棒性權(quán)重δt,從而減少余量對分解的影響。魯棒權(quán)重δt計(jì)算如式(3)-(5)所示:
(3)
(4)
h=6median(|Rt|)
(5)
其中,B為雙平方函數(shù),h為中間變量。
GRU模型作為LSTM模型的變體,模型中只有更新門和重置門,網(wǎng)絡(luò)結(jié)構(gòu)更加簡單,訓(xùn)練速度要快于LSTM,其工作原理見圖3。
圖3 GRU算法流程圖
GRU模型的輸入記為x(t)=(x1,x2,…,xt,…,xT),預(yù)測中間元素記為h(t)=(h1,h2,…,ht,…,hT),細(xì)胞狀態(tài)記為c(t)=(c1,c2,…,ct,…,cT),最終輸出記為y(t)=(y1,y2,…,yt,…,yT)。對于任意的xt∈x(t),都有ht∈h(t)、ct∈c(t)、yt∈y(t),其中xt=(xt,1,…,xt,N1),ht=(ht,1,…,ht,N2),ct=(ct,1,…,ct,N2),yt=(yt,1,…,yt,N3) 。在客流預(yù)測中,xt是預(yù)測t+1時(shí)刻客流的輸入變量,本研究中為換乘客流量;ht是預(yù)測中間值;yt是時(shí)刻t的客流預(yù)測值;N1是各時(shí)刻的輸入長度;N2和N3分別為各時(shí)刻中間元素和輸出值的輸出長度。GRU模型的原理可描述為
(6)
Ut=σ(Wu[c
(7)
At=σ(Wr[c
(8)
(9)
地鐵換乘客流時(shí)間序列x(t)直接作為預(yù)測模型的輸入變量時(shí),受換乘時(shí)間及換乘站點(diǎn)等因素的影響,其自身噪聲將對模型產(chǎn)生干擾,從而降低模型的預(yù)測精度,因此,需要在預(yù)測前對x(t)預(yù)處理。運(yùn)用STL將其分解為趨勢量、季節(jié)量和余量,針對分解過后的樣本余量通過3σ原則進(jìn)行異常值的剔除,再利用前后兩天同一時(shí)刻的平均值對其進(jìn)行填充,減少樣本噪聲的干擾,提高輸入變量的穩(wěn)定性,以實(shí)現(xiàn)模型更高精度的擬合,本研究構(gòu)建基于STL-GRU的短時(shí)客流預(yù)測混合模型。該方法的功能架構(gòu)圖見圖4,具體步驟如下。
步驟1數(shù)據(jù)處理。對原始數(shù)據(jù)進(jìn)行清洗,根據(jù)上下車線路編號的不同初步提取換乘數(shù)據(jù),通過基于圖的深度優(yōu)先搜索算法識別出行路徑并提取換乘客流。
步驟2數(shù)據(jù)分解。運(yùn)用STL時(shí)間序列分解算法對客流數(shù)據(jù)x(t)進(jìn)行分解,得到時(shí)間序列的趨勢量、季節(jié)量及余量,并利用3σ原則對余量進(jìn)行異常值的剔除與填充。
步驟3GRU模型的建立及預(yù)測。將時(shí)間序列的趨勢量、季節(jié)量及余量分別劃分訓(xùn)練集和測試集,基于深度學(xué)習(xí)框架Keras構(gòu)建并優(yōu)化GRU模型,分別對時(shí)間序列的趨勢量、季節(jié)量及余量進(jìn)行預(yù)測。
圖4 STL-GRU功能架構(gòu)圖
步驟4預(yù)測結(jié)果還原。將趨勢量、季節(jié)量及余量的預(yù)測結(jié)果累加還原得到預(yù)測的日客流數(shù)據(jù)。
地鐵AFC數(shù)據(jù)包含乘客的一卡通卡號、進(jìn)出線路編碼、進(jìn)出站點(diǎn)編碼、進(jìn)出站時(shí)間等出行信息,為乘客出行規(guī)律研究提供了數(shù)據(jù)支撐。本研究選取2018年4-5月的北京地鐵自動刷卡數(shù)據(jù),并對其進(jìn)行預(yù)處理。北京地鐵西直門站作為地鐵2、4、13號線的三線換乘車站,客流量大且出行特征復(fù)雜,因此,本研究選擇西直門站的換乘客流為研究對象,分別對工作日(不含周五)、周五、休息日場景下的換乘客流進(jìn)行預(yù)測,以2018年4-5月西直門站換乘數(shù)據(jù)的80%作為訓(xùn)練集,20%作為測試集。根據(jù)列車首末站發(fā)車時(shí)間,確定每日預(yù)測時(shí)間范圍為05:00-24:00,其中將前5周5個(gè)周一05:00-06:00的數(shù)據(jù)的平均值作為本周一05:00-06:00的輸入進(jìn)行預(yù)測,其他日第一小時(shí)的輸入以此類推。
以5 min為統(tǒng)計(jì)間隔,分別構(gòu)造2018年4-5月西直門站工作日(不含周五)、周五、休息日換乘客流時(shí)序數(shù)據(jù),其STL分解結(jié)果如圖5-圖7所示。
(a)原始客流變化特征
(a)原始客流變化特征
(a)原始客流變化特征
從分解出的3個(gè)數(shù)據(jù)序列來看,西直門站的換乘客流數(shù)據(jù)有著很高的趨勢性和周期性。其中,趨勢量分解出了換乘客流數(shù)據(jù)的大致變化波動性。從余量來看,西直門站的換乘客流具有隨機(jī)性,隨機(jī)性被包含在有序周期內(nèi),在一定范圍內(nèi)波動。
本研究使用單步預(yù)測方法對地鐵換乘客流量進(jìn)行預(yù)測,發(fā)現(xiàn)歷史觀測序列維度取值較小不能充分發(fā)揮GRU優(yōu)勢,但設(shè)置過長易產(chǎn)生噪聲干擾,因此對比文獻(xiàn)取值,選用前1h的歷史數(shù)據(jù)預(yù)測下一個(gè)數(shù)據(jù)[16]。針對GRU模型的訓(xùn)練過程,設(shè)置GRU隱藏層2層。為避免神經(jīng)元權(quán)值特殊化程度較高導(dǎo)致模型過擬合,添加Dropout層,設(shè)置隨機(jī)失活概率為0.1。選擇ReLU函數(shù)作為模型的激勵函數(shù),平均絕對誤差MAE作為目標(biāo)損失函數(shù),使用Adam優(yōu)化器,該優(yōu)化器自定義初始學(xué)習(xí)率為0.001,通過自適應(yīng)的方法每一輪自動更新各個(gè)參數(shù)的學(xué)習(xí)率。根據(jù)經(jīng)驗(yàn)法設(shè)置GRU模型的超參數(shù),迭代次數(shù)為100,批大小為256,神經(jīng)元數(shù)量分別為128和256個(gè)。本研究所搭建的GRU地鐵換乘客流量預(yù)測模型的網(wǎng)絡(luò)結(jié)構(gòu)如圖8所示。此外,為對預(yù)測結(jié)果進(jìn)行對比分析,LSTM模型隱藏層也設(shè)置為2層,模型參數(shù)設(shè)置與GRU相同。
圖8 GRU模型結(jié)構(gòu)
平均絕對百分比誤差(Mean Absolute Percentage Error,MAPE)體現(xiàn)了預(yù)測值與實(shí)際值的相對偏差,常被用于評價(jià)預(yù)測模型的優(yōu)劣,均方根誤差(Root Mean Square Error,RMSE)為預(yù)測值與實(shí)際值偏差的平方和預(yù)測次數(shù)n比值的平方根,且對特大或特小誤差反應(yīng)非常敏感,在比較模型預(yù)測精度時(shí)是對MAPE的有效補(bǔ)充,MAPE、RMSE值越小,則說明預(yù)測值和實(shí)際值越接近,模型的預(yù)測精度越高[17]。因此,本研究采用MAPE及RMSE作為預(yù)測模型的評價(jià)指標(biāo),分別為
(10)
(11)
對分解后的時(shí)間序列趨勢量、季節(jié)量及余量分別運(yùn)用LSTM、GRU模型進(jìn)行預(yù)測,各分量的預(yù)測結(jié)果分別如圖9-圖11所示。
圖9 換乘客流趨勢分量預(yù)測結(jié)果
圖10 換乘客流季節(jié)分量預(yù)測結(jié)果
圖11 換乘客流余量預(yù)測結(jié)果
由圖9-圖11可以看出,西直門站換乘客流量分解后的趨勢量和季節(jié)量的預(yù)測結(jié)果符合真實(shí)值的變化趨勢,模型擬合效果較好,分解后的余量由于波動較大,模型擬合效果較差,但預(yù)測結(jié)果的總體變化趨勢與真實(shí)值一致。將各分量的預(yù)測結(jié)果累加還原得到2018年5月25-31日的北京地鐵西直門站換乘客流預(yù)測結(jié)果,如圖12所示,預(yù)測誤差見表3。
圖12 西直門站換乘客流預(yù)測結(jié)果
由表3可知:STL時(shí)間序列分解算法與GRU模型相結(jié)合與單一算法相比有更好的效果,組合模型具有較為明顯的計(jì)算速度劣勢,但預(yù)測時(shí)長滿足換乘客流短時(shí)預(yù)測及發(fā)布的需求。在預(yù)測西直門站工作日(不含周五)、周五、休息日的換乘客流時(shí),休息日預(yù)測精度最高,但在實(shí)際中,休息日換乘客流規(guī)律性更弱,可預(yù)測性更低,這說明STL時(shí)間序列分解算法可以有效降低波動、減小噪聲對預(yù)測結(jié)果的干擾;工作日(不含周五)和周五STL-GRU模型的RMSE高于其他模型,說明STL-GRU模型預(yù)測結(jié)果中異常值(即一個(gè)預(yù)測值與真實(shí)值相差很大)較多。3種場景下STL-GRU模型的MAPE均為最小,預(yù)測精度高于LSTM、GRU和STL-LSTM模型,預(yù)測結(jié)果的平均絕對百分比誤差分別由10.60%(9.93%、10.32%)、20.16%(13.65%、12.74%)、13.37%(12.36%、11.85%)降低至7.63%、11.38%、5.43%,表明STL-GRU模型整體預(yù)測效果較好,可更精確識別歷史換乘客流與預(yù)測客流間的時(shí)空關(guān)系,預(yù)測性能更優(yōu)。
表3 預(yù)測誤差對比
本研究在對地鐵AFC原始數(shù)據(jù)進(jìn)行預(yù)處理之后,采用基于圖的深度優(yōu)先搜索算法識別地鐵乘客的出行路徑,計(jì)算換乘時(shí)刻,提取西直門站的換乘客流序列;然后運(yùn)用STL分解換乘客流序列得到趨勢量、季節(jié)量和余量,并對余量利用3σ原則進(jìn)行異常值的剔除與填充,降低樣本噪聲對預(yù)測模型精度的干擾,使得所構(gòu)建的預(yù)測組合方法更為高效;最后,以北京地鐵西直門站為例進(jìn)行驗(yàn)證,相比于LSTM、GRU及STL-LSTM預(yù)測方法,在以5 min為預(yù)測時(shí)長的單步預(yù)測中,STL-GRU可提升工作日(不含周五)、周五、休息日的客流預(yù)測精度,預(yù)測結(jié)果的平均絕對百分比誤差至少分別降低2.3、1.36、6.42個(gè)百分點(diǎn)。