肖堯, 劉斌*, 楊浩
(1.蘭州交通大學交通運輸學院,蘭州 730070;2.中鐵第一勘察設計院集團有限公司, 西安 710043)
隨著中國高速鐵路網(wǎng)絡的逐漸完善以及運輸市場競爭的日益激烈,掌握客運需求規(guī)律、科學優(yōu)化資源配置對于鐵路企業(yè)進行精細化的運營管理極為重要。列車開行方案優(yōu)化、客車票額合理分配、客票收益管理研究等都需要鐵路企業(yè)對自身客流的歷史需求規(guī)律進行合理剖析和對未來需求做到準確把握。為此,鐵路企業(yè)亟須科學準確的客運需求分析與短期客流量預測的方法,以充分利用客票系統(tǒng)積累的海量數(shù)據(jù),對客運市場變化及客流波動快速做出反應。
當下國內(nèi)外對于鐵路客運需求分析的研究主要圍繞宏觀上分析區(qū)域內(nèi)影響客運需求的主要因素展開[1],這一類研究可以為鐵路企業(yè)掌握整個客運市場的體量作為參考,但對既有鐵路精確到日常的生產(chǎn)而言很難發(fā)揮指導作用。由于現(xiàn)今城際列車每日的高頻開行以及鐵路票價的常年穩(wěn)定,旅客對于鐵路客運的需求也處于相對穩(wěn)定的狀態(tài)且具有一定規(guī)律,因此對于各個區(qū)間客運需求的分析完全可以通過挖掘歷史數(shù)據(jù)得知。為此,尋找一個可以有效處理客流歷史數(shù)據(jù),從而在復雜龐大的數(shù)據(jù)中分析各時間區(qū)段下客運需求規(guī)律的方法是一個策要的研究目標。
鐵路短期客流預測是一種典型的時間序列預測。傳統(tǒng)時序預測方法主要是以灰色預測模型,自回歸滑動平均模型(autoregressive moving average model,ARMA)[2],差分整合移動平均自回歸模型(autoregressive integrated moving average model,ARIMA)[3]及這些模型的變體[4]等為代表的以統(tǒng)計學理論為基礎的參數(shù)模型,這類傳統(tǒng)方法能夠在一定范圍內(nèi)刻畫時序數(shù)據(jù)的周期性與季節(jié)性的變化,在處理平穩(wěn)的、非白噪聲的時間序列數(shù)據(jù)上表現(xiàn)良好,然而在處理鐵路客流量這種隨日期具有很大波動的數(shù)據(jù)時往往預測效果欠佳。隨著機器學習的快速發(fā)展,非參數(shù)類方法可以較為出色地解決鐵路客流數(shù)據(jù)這種非穩(wěn)態(tài)時序數(shù)據(jù)分析的難題。這些方法主要包括傳統(tǒng)機器學習,如支持向量機[5-6]、貝葉斯網(wǎng)絡[7]和各種基于引導聚集(bootstrap aggregating,bagging)算法[8]、boosting[9]的集成算法及在這些模型基礎上的優(yōu)化改進等,還包括深度學習,如傳統(tǒng)的反向傳播(back propagation,BP)神經(jīng)網(wǎng)絡[10-12]、長短期記憶網(wǎng)絡[13-15]、門控循環(huán)單元[16]、遷移學習[17]等。在處理鐵路短期客流預測的問題時,這類算法需要將時間序列數(shù)據(jù)處理成監(jiān)督學習數(shù)據(jù),這樣操作通常會造成模型只能獲取相對固定的、較短的上下文依賴,因此模型算法能否充分擬合鐵路客流數(shù)據(jù)的特點就顯得尤為重要。
基于此,現(xiàn)將從數(shù)據(jù)驅(qū)動的角度出發(fā),針對切合鐵路客流特點的客運需求量分析模型和短期預測模型展開研究,旨在為鐵路企業(yè)進行精細化的運營管理提供決策依據(jù)。
隨著中國高速鐵路的成網(wǎng)運營及人們出行需求的日益穩(wěn)定,鐵路客流需求在時間上的分布特征逐漸呈現(xiàn)出規(guī)律。鐵路客流依據(jù)不同的時間尺度可分為年、月、周客流。其中,年客流隨著鐵路的發(fā)展逐年呈現(xiàn)一定趨勢,月客流隨季節(jié)淡旺規(guī)律明顯,周客流有明顯固定的高低峰日。同時,不同類型的節(jié)假日還會引起客流呈現(xiàn)出不同程度的驟增驟減。
Prophet是由Taylor等[18]提出的一種基于加法模型的時間序列分解模型,模型整體將時間序列拆解成趨勢項、季節(jié)項、節(jié)假日項以及誤差項4個部分進行擬合,表達式為
y(t)=g(t)+s(t)+h(t)+εt
(1)
式(1)中:趨勢項g(t)、季節(jié)項s(t)分別對時間序列數(shù)據(jù)的非周期性變化部分與周期性變化部分進行了建模;節(jié)假日項h(t)對數(shù)據(jù)在節(jié)假日期間的異常突變進行了量化;誤差項εt表示任何不適應模型的特有變化。
Prophet模型非常適用于鐵路客流這種具有強烈季節(jié)性影響與節(jié)假日影響的時間序列,它的趨勢項、季節(jié)項與節(jié)假日項可以很好地在大數(shù)據(jù)的環(huán)境下對鐵路的年客流、月周客流與節(jié)假日客流特征進行建模量化,有助于鐵路企業(yè)利用海量歷史售票數(shù)據(jù)提取分析各區(qū)間的旅客在不同時間內(nèi)的出行需求以及進行短期客流預測,從而進一步提升鐵路旅客運輸組織的效率。
綜上所述,鐵路客流的時間分布類型[19]與Prophet模型分解項之間的對應關系如表1所示。
表1 客流時間分布類型與Prophet模型對應關系
Prophet在趨勢項上提供了兩種模型,分別是基于邏輯回歸的飽和增長模型和線性分段模型,即
(2)
g(t)=[k+a(t)Tδ]t+m+a(t)Tγ
(3)
(4)
(5)
式中:C(t)為t日某區(qū)間的最大運能;k為曲線增長率;m為曲線偏移量;Sj為增長率發(fā)生變化時對應的點;a(t)為由aj(t)組成的列向量;aj(t)為t日時某個變點Sj是否已經(jīng)發(fā)生;δ為增長率變化量組成的列向量;γ為修正因子組成的列向量,用作變點處的平滑處理以保證曲線的連續(xù)可微性。
Prophet在季節(jié)項上使用傅里葉級數(shù)模擬時間序列的周期性,表達式為
(6)
式(6)中:N為總輸入天數(shù);P為周期天數(shù);an、bn為平滑參數(shù),假設an、bn的先驗分布服從正態(tài)分布。
Prophet在節(jié)假日項的計算上使用一個用戶預設的節(jié)假日列表,并假設每種類型節(jié)假日的影響在該時間區(qū)段內(nèi)是一個定值。
h(t)=Z(t)κ
(7)
式(7)中:Z(t)為t日在其所對應類型的節(jié)假日集合中所處的位置矢量;κ為此類型假期集合中每日對應的影響參數(shù)所組成的列向量,假設κ的先驗分布服從正態(tài)分布。
鐵路日客流以星期為單位的周期波動是其最顯著的特征之一,以星期的倍數(shù)作為模型的輸入輸出長度并使模型進一步捕捉到輸入輸出數(shù)據(jù)間的軟連接,可以使模型更易抓住數(shù)據(jù)周期波動這一信息。傳統(tǒng)機器學習和長短期記憶網(wǎng)絡在進行客流預測時都存在只能輸出固定長度序列數(shù)據(jù)的限制,故使用可自定義輸入輸出長度的Seq2Seq網(wǎng)絡[20]進行預測。
圖1為Seq2Seq網(wǎng)絡的基本網(wǎng)絡結(jié)構,這種結(jié)構又稱Encoder-Decoder模型,Encoder將輸入序列編碼成一個固定長度的語義向量C,Decoder將向量解碼成指定長度的序列進行輸出,從而達到靈活輸出序列長度的目的。使用善于處理時間序列數(shù)據(jù)的LSTM網(wǎng)絡構建編-解碼器。
xt、yt分別為模型的輸入與輸出;A為神經(jīng)網(wǎng)絡的一個單元;C為語義向量
LSTM網(wǎng)絡是RNN網(wǎng)絡的變體,其改善了RNN中存在的無法解決數(shù)據(jù)長期依賴的問題。圖2為LSTM單元的結(jié)構,LSTM的單元內(nèi)存在4個不同的全連接層,全連接層的每一個結(jié)點都與上一層的所有結(jié)點相連,其主要用途是把模型提取到的特征綜合起來。主層是輸出為gt的層,它的基本作用是分析當前輸入xt和前一個隱狀態(tài)ht-1。其他3個層是門限控制器,分別是:由ft控制的忘記門限,控制著哪些記憶狀態(tài)應該被丟棄;由it控制的輸入門限,控制著gt的哪些部分會被加入記憶狀態(tài);由ot控制的輸出門限,控制著哪些記憶狀態(tài)應該在這個時間迭代被讀取和輸出。隨著記憶狀態(tài)ct-1從左到右貫穿網(wǎng)絡,它首先經(jīng)過一個忘記門限丟棄一些記憶,然后通過輸入門限選擇添加一些新的記憶。所以,在每個時間迭代中,一些記憶被丟棄,同時一些記憶被增加。此外,經(jīng)過額外操作,記憶狀態(tài)被復制并傳入tanh函數(shù),然后其結(jié)果被輸出門限過濾,從而產(chǎn)生了新的隱狀態(tài)ht。LSTM就是在這樣的循環(huán)之下,學習哪些記憶需要儲存,哪些記憶需要丟棄,以及從哪些記憶中去讀取,從而結(jié)合輸入變量去預測輸出變量的。其中it、ft、ot、gt、ht、ct的計算表達式為
xt、ct、ht分別為模型的輸入向量、記憶狀態(tài)和隱層狀態(tài);gt為模型主層結(jié)構;ft、it、ot分別為模型的忘記、輸入和輸出門限;σ、tanh為sigmoid與tanh函數(shù)
(8)
(9)
(10)
(11)
ct=ftct-1+itgt
(12)
ht=ottanh(ct)
(13)
式中:σ為sigmoid函數(shù);Wxi、Wxf、Wxo、Wxg為每一層連接到輸入向量xt的權重矩陣;Whi、Whf、Who、Whg為每一層連接到前一個隱狀態(tài)ht-1的權重矩陣;bi、bf、bo、bg為每一層的偏置項。
然而,簡單的Seq2Seq網(wǎng)絡在進行預測時也存在一些問題。在編碼輸入序列時,模型需要壓縮所有的信息在一個固定長度的向量中,這就會使該模型在面對長序列時會產(chǎn)生信息超載的問題,隨著序列的增長,序列前面的信息就可能會發(fā)生丟失;同時,解碼器每次的輸出僅與上一個輸出元素以及當前的隱狀態(tài)有關,輸入序列元素與輸出序列元素之間沒有關聯(lián)。對于鐵路客流來說,學習輸入序列和輸出序列之間的軟連接有助于提高模型對于客流周期性的運用,從而進一步提高預測精度。為此在Seq2Seq的基礎上引入注意力(Attention)機制[21],Attention可以利用有限的注意力資源從大量信息中快速關注重點目標區(qū)域,這種機制有助于模型關注序列中隱藏的關鍵聯(lián)系。構建Attention的流程如下。
步驟1選擇使用雙向長短時記憶網(wǎng)絡(bi-directional long short-term memory,Bi-LSTM)構建編碼器部分,使其每個單元的隱狀態(tài)包括正向與逆向輸入的兩部分,這可以使模型對輸入序列有更好的表達,不易丟失數(shù)據(jù)。
(14)
步驟2將編碼器的所有隱狀態(tài)加權編碼進向量,生成動態(tài)向量Ci。
(15)
(16)
eij=D(si,hj)
(17)
式中:aij為權重參數(shù);hi為編碼器第i個單元的隱狀態(tài)向量;si為解碼器第i個單元的隱狀態(tài)向量;n為編解碼器隱狀態(tài)的數(shù)量;D()用于計算兩向量的相關性。
步驟3使解碼器每一步的輸出依賴于上一個單元的隱狀態(tài)si以及該步對應權重下的動態(tài)向量Ci。
si+1=LSTM(si,Ci)
(18)
綜上所述,選擇使用一個Bi-LSTM構建Encoder模型,使用LSTM構建Decoder模型,引入Attention機制進行動態(tài)向量的計算并參與最終輸出,整體示意圖如圖3所示。
hi為編碼器第i個單元的隱狀態(tài)向量;si為解碼器第i個單元的隱狀態(tài)向量;Ci為動態(tài)向量;每個LSTM表示LSTM網(wǎng)絡的一個單元
不同的時序預測模型對于數(shù)據(jù)信息的利用角度不同,將不同的模型合理組合起來有助于不同模型間的優(yōu)勢互補,從而避免單一模型的固有缺點,充分挖掘數(shù)據(jù)各方面信息,以達到進一步提升預測精度的目的。從模型特點上來看,Prophet模型的預測基于全局數(shù)據(jù),在數(shù)據(jù)特征穩(wěn)定時即便數(shù)據(jù)規(guī)模不大,預測效果也會很穩(wěn)定,但鐵路客流往往會由于政策、自然環(huán)境等因素發(fā)生脫離其原有特征的突變,Prophet模型的機制使其無法適應這種情況,甚至會造成對整體趨勢與周期的誤判;Seq2Seq-Attention模型由于其龐大的參數(shù)數(shù)量使得模型極其靈活,可以很好適應數(shù)據(jù)的變化,但當數(shù)據(jù)規(guī)模不夠時,模型將無法得到充分訓練。組合這兩種本就切合鐵路特點的模型,可以進一步互補雙方優(yōu)勢,提升預測的精度。
傳統(tǒng)的賦權組合模型通常是根據(jù)單模型的預測精度按比例給單模型一個固定的權重進行加權預測。然而,隨著數(shù)據(jù)集的規(guī)模、復雜度、噪聲的不同,固定的賦權方式無法使組合模型很好地適應不同特征的數(shù)據(jù),同時線性相加的賦權模型往往對于復雜環(huán)境的動態(tài)變化反應不夠及時。因此選擇使用BP神經(jīng)網(wǎng)絡將Seq2Seq網(wǎng)絡與Prophet模型非線性組合起來,根據(jù)兩個模型在當前數(shù)據(jù)上的擬合情況訓練權值參數(shù),使得模型盡可能地在不同的數(shù)據(jù)上發(fā)揮各自優(yōu)勢。使用該組合模型進行客流預測的過程如下。
步驟1將客票歷史數(shù)據(jù)進行預處理,提取出需要進行預測的時間序列并進行數(shù)據(jù)清洗。
步驟2將數(shù)據(jù)分為訓練集和驗證集,使用處理好的訓練集分別訓練Prophet模型和Seq2Seq-Attention網(wǎng)絡,并通過驗證集在優(yōu)化模型超參數(shù)同時防止過擬合。
步驟3將整個數(shù)據(jù)集輸入訓練好的兩模型,輸出模型在數(shù)據(jù)集上的擬合結(jié)果以及模型在目標天數(shù)內(nèi)的預測值。將Prophet模型的擬合序列P和原始客流的時間序列Y重新組織成與Seq2Seq擬合矩陣S相同維度的n列數(shù)據(jù)矩陣,合并構建新的監(jiān)督學習矩陣[P1,P2,…,Pn,S1,S2,…,Sn,Y1,Y2,…,Yn],并劃分訓練集和驗證集。
步驟4使用訓練集訓練一個深度神經(jīng)網(wǎng)絡,通過模型在訓練集和驗證集的擬合情況確定網(wǎng)絡層數(shù)并優(yōu)化模型超參數(shù),訓練完成后將兩個單模型的預測結(jié)果按同樣方法組合起來輸入這個訓練好的模型預測未來多日客流量。
數(shù)據(jù)包含某條客運專線上的某個區(qū)段(ZD111站—ZD190站)2015年1月1日—2016年3月20日,共計445 d內(nèi)每天在此區(qū)段下行方向上運行過的所有列車的旅客列車梯形密度表。每張表中的數(shù)據(jù)包含某趟單列車當日的停站方案、客座率以及各起訖點(origin and destination,OD)區(qū)間的旅客數(shù)量。以G01次列車在2015年1月1日的列車梯形密度表為例,G01次列車于8:05由始發(fā)站出發(fā),于19:05到達終到站,途經(jīng)19個車站,共計包含210個OD區(qū)間,其示意圖如表2所示。
表2 旅客列車梯形密度表
提取每日由ZD111站出發(fā)至ZD190站的旅客人數(shù)并進行簡單數(shù)據(jù)清洗。根據(jù)統(tǒng)計得出,該OD區(qū)間的乘車人數(shù)于2016年2月26日達到峰值,但行駛于兩站的直達列車中仍存在客座率低于60%的列車,故認為該區(qū)段的運力完全滿足該區(qū)段旅客的日出行需求,區(qū)段里每日的乘車人數(shù)可以大致表示當日人們對該區(qū)段鐵路運輸?shù)娜啃枨?。將最?4 d的客流作為未知量來對客流預測結(jié)果進行評價。
使用Facebook的fbprophet框架進行模型構建,首先將數(shù)據(jù)包含時間段內(nèi)的所有節(jié)假日進行整合分類并設置節(jié)假日時間窗,如表3所示。
表3 數(shù)據(jù)包含節(jié)假日時間窗
將節(jié)假日大致歸為春節(jié)、勞動節(jié)、國慶節(jié)以及普通節(jié)日四類,由于兩年春節(jié)客流變化差異較大,且沒有第三年做對照組,因此將兩年的春節(jié)分為兩類進行處理。使用網(wǎng)絡搜索進行超參數(shù)優(yōu)化,最終選擇線性模型進行趨勢擬合,將seasonality_mode設置additive,即將周期性變化表現(xiàn)成加法模型,這樣有助于鐵路企業(yè)根據(jù)直觀的客流數(shù)據(jù)變化優(yōu)化旅客運輸組織。
圖4為模型擬合客流與真實客流的對比圖,其中藍線為真實客流,綠線為模型擬合的客流。模型在整個數(shù)據(jù)上的擬合平均誤差為271.69,平均相對誤差為6.68%,擬合精度良好。紅線為模型訓練后得到的趨勢項,可見該OD間的年客流量隨時間呈微弱下降的趨勢。
圖4 Prophet模型擬合曲線與趨勢項
圖5、圖6分別為該OD間的月周客流。在一年當中,12月底至次年2月初屬于運輸?shù)荆藭r該OD間的日客流量要在整體客流趨勢的基礎上少1 000多人次;客流量從7月中旬至9月初達到全年的最高峰,每日客流要在整體客流趨勢上多1 100~1 200人次。在一周當中,該OD客流在周五達到周中峰值,在周一達到周中客流的最低值。
圖5 Prophet模型擬合月客流量
圖6 Prophet模型擬合周客流量
圖7為節(jié)假日效應下的客流突變,可以看出,該OD間的客流在除春節(jié)以外的各種節(jié)假日下都發(fā)生了不同程度的驟增,其中在國慶期間驟增最為明顯,但在兩年的春節(jié)前后客流都發(fā)生驟減。
圖7 Prophet模型擬合節(jié)假日項
由以上結(jié)果可以說明,該區(qū)段的客流主要以商務客流和旅游客流為主,因此客流需求在普通節(jié)假日期間呈現(xiàn)上升趨勢,在春運期間呈現(xiàn)下降趨勢。由此鐵路企業(yè)可以根據(jù)不同季度的客流情況合理削減部分列車開行方案,甚至可以根據(jù)周客流的波動情況開展“一日一圖”的動態(tài)開行方案。鐵路企業(yè)還可以根據(jù)分析出的客流組成情況調(diào)整管內(nèi)列車發(fā)車時間、優(yōu)化列車不同等級席位的占比,從而最大化地合理使用運能,同時增加鐵路對旅客的吸引力,最終達到提升鐵路旅客運輸收益的目的。
選擇使用前431 d的客流數(shù)據(jù)訓練模型,預測后14 d的客流量并與真實數(shù)據(jù)做對比評價模型性能。使用均方根誤差(root mean squared error,RMSE)以及平均絕對百分比誤差(mean absolute percentage error,MAPE)作為評價模型表現(xiàn)的指標。
(19)
(20)
首先,使用訓練好的Prophet模型直接計算后14 d的客流量,同時將模型在整個數(shù)據(jù)集上的擬合結(jié)果重新組織成供神經(jīng)網(wǎng)絡監(jiān)督學習的數(shù)據(jù)矩陣并進行輸出。
其次,使用Keras構建Seq2Seq-Attention的模型。先將時間序列數(shù)據(jù)歸一化處理并轉(zhuǎn)化成供模型監(jiān)督學習矩陣,然后使用網(wǎng)絡搜索進行參數(shù)優(yōu)化。最終確定模型的最佳輸入序列長度為28,輸出序列長度為14,即使用過去28 d的客流量預測未來14 d的客流量,hidden_dim為16,Encoder和Decoder的深度均設置為1。確定損失函數(shù)為MAPE,使用自適應性矩估計算法(adaptive moment estimation, Adam)作為模型優(yōu)化器,batch size為16,epoch為500。由于Seq2Seq的輸出長度覆蓋了實例要求計算的全部未來天數(shù),因此直接將最后28 d的客流序列輸入網(wǎng)絡得到預測結(jié)果。將模型在整個數(shù)據(jù)上的擬合結(jié)果和預測結(jié)果進行反歸一化還原后輸出。
最后,使用Tensoflow構建BP神經(jīng)網(wǎng)絡,選擇relu作為激活函數(shù),經(jīng)過調(diào)參后確定最終構建一個四層神經(jīng)網(wǎng)絡,batch size為1,epoch為50。同時嘗試使用了隨機森林(random forest,RF)、梯度下降樹(gradient descent decision tree,GBDT)、LSTM進行預測作為參照,預測結(jié)果評價如表4所示。
表4 各算法在實例數(shù)據(jù)預測上的表現(xiàn)
評價結(jié)果表明,Seq2Seq-Prophet模型在此數(shù)據(jù)集上的預測誤差均低于其他模型。在與既有方法的比較中,該組合模型與表現(xiàn)最佳的GBDT模型相比預測誤差降低了3.434%;在與單獨使用Prophet模型和Seq2Seq-Attention網(wǎng)絡相比,組合模型在此數(shù)據(jù)集上的預測誤差分別降低了3.465%和0.617%。結(jié)果表明,Seq2Seq與Prophet模型都在鐵路客流數(shù)據(jù)的預測上擁有更好的精度和泛化能力,且其組合模型也可以進一步的提升模型預測精度。
整合提取該區(qū)段內(nèi)的鐵路客運需求總量,使用引入Attention機制的Seq2Seq-Prophet模型對最后14 d的客流需求進行預測,再次驗證模型精度。預測結(jié)果與實際客流對比如圖8所示。
圖8 區(qū)段內(nèi)的路客運需求總量預測
結(jié)果表明,引入Attention機制的Seq2Seq-Prophet模型在此次預測中的平均相對誤差為9.55%,與上文OD區(qū)間的預測評價結(jié)果相似,證明模型擁有很穩(wěn)定的預測效果。同時模型很好地預測了兩周內(nèi)的實際客流走勢,具有很好的預測精度。
首先,對Prophet模型的分解項與不同時間分布類型的鐵路客流之間的聯(lián)系進行了分析,提出了使用Prophet模型從客流的時間序列數(shù)據(jù)中計算并分別提取年、月、周客流量以及節(jié)假日效應下的客流變化,通過實例驗證表明,該方法可以很好地在多年數(shù)據(jù)中擬合量化以上類型的客流,對于鐵路企業(yè)分析客流需求的時間分布特征、優(yōu)化旅客運輸組織有著重要意義。
其次,分析了Seq2Seq-Attention網(wǎng)絡和Prophet模型在鐵路客流需求預測上的優(yōu)越性,指出了兩個模型在不同規(guī)模數(shù)據(jù)上存在優(yōu)劣互補,因此提出使用深度神經(jīng)網(wǎng)絡將Prophet模型與Seq2Seq-Attention網(wǎng)絡非線性組合起來以進一步增加模型對于數(shù)據(jù)的信息利用以及泛化能力。最后,通過實例證明了該組合模型相比其他模型在數(shù)據(jù)上具有更好的精度,同時對比單模型取得了更好的表現(xiàn),其預測精度對于鐵路企業(yè)開展精細化的運營管理有一定的實用價值。