王 曉,揣錦華,張立恒
(長安大學 信息工程學院,陜西 西安 710064)
近年來,隨著人民生活水平的提高,人們對鐵路客運服務的要求也逐漸提高。鐵路部門為了提高運輸服務能力,需要了解日常的鐵路客運流量、淡旺季客流量波動指數和冷門線路情況等。其中,對客流量的充分了解和預測是提高鐵路客運服務能力的首要前提,因此,對鐵路客流量預測分析是目前一個重點的研究方向。
關于鐵路客流量預測的分析,許多學者對此做過深入研究。常國珍等人認為鐵路客流量變化具有復雜性、隨機性和周期性的特征[1]。成強提出基于小波包分解與長短時記憶融合的深度學習預測模型用于鐵路客流量的預測[2]。Li L等人提出了一種基于符號回歸和ARIMA的混合模型預測地鐵客流量[3]。王煒煒提出了根據客流構成,將客流量分為趨勢客流量、轉移客流量和誘增客流量三部分,分別選用BP人工神經網絡、灰色模型和重力模型建立高速鐵路影響下的鐵路客流量預測模型[4]。路小娟等人利用GA-BP網絡預測模型對鐵路客流量進行了預測[5]。許俊等人提出了通過若干組連續歷史斷面客流數據訓練動態連續的神經網絡預測未來客流[6]。馬彪采用灰色GM(1,1)預測模型對國內春運客流量進行了預測[7]。Guo等人提出了一種基于支持向量回歸(SVR)和長短期記憶(LSTM)神經網絡融合模型對城際軌道列車客流量進行了預測研究[8]。Li B等人針對影響客流的特殊因素建立組合模型進行了預測分析[9]。Dou等人提出了基于模糊時序邏輯的客流量預測模型對高速鐵路短期客流量進行了較為精確的預測[10]。江天河構建了ARIMA模型和BP神經網絡模型對春運客流量進行了預測[11]。馮冰玉等人提出了構建線性時間序列灰色GM(1,1)和非線性遺傳算法優化BP神經網絡模型用于鐵路客流量的預測[12]。黃召杰等人通過建立灰色預測模型對鐵路客流量進行了預測[13]。Xie等人提出了基于神經網絡和出發地矩陣估計的分而治之的方法預測高速鐵路短期客流[14]。Feng等人建立了一個隨機系數模型用于預測城市軌道交通車站的短期客流量[15]。Ni等人提出了一種基于參數和凸優化的方法并結合線性回歸和自回歸整合移動平均(SARIMA)模型對地鐵客流量進行了預測[16]。
為了分析季節性因素和節假日效應等對鐵路客流量變化的影響,文中將基于Facebook的Prophet時間序列預測算法對某鐵路客運專線過去15個月的日客流量進行擬合,對未來兩周的客流量變化做出預測。
時間序列,也稱時間數列或者動態數列,它是將某種現象的某一個統計指標在不同時間上的各個數值按時間的先后順序排列而成的序列。時間序列預測算法是通過編制和分析時間序列,根據時間序列所反映出來的發展過程、方向和趨勢,進行延伸,以此預測下一時間點或區間內可能達到的水平。時間序列預測算法實質上是一種回歸預測方法,屬于定量預測,其基本原理是承認事物發展的延續性,運用過去的時間序列數據統計分析,推測出事物的發展趨勢,同時充分考慮到由于偶然因素影響而產生的隨機性,為了消除這種隨機波動產生的影響,利用歷史數據進行統計分析,并對數據做預處理,對未來趨勢的變化進行預測。目前,比較成熟的時間序列預測算法有移動平均法(MA)、自回歸模型(AR)、自回歸滑動平均模型(ARMA)、指數平滑法、自回歸求和滑動平均模型(ARIMA)和長短期記憶神經網絡(LSTM)等。文中將基于Prophet時間序列預測算法對某鐵路客運專線未來兩周客流量進行預測分析。
Prophet算法是Facebook開源的時序預測框架,最初是為了創建高質量的商業預測而研發,是一種新的基于時間序列的預測算法。Prophet算法的原理是對各種時間序列特征分組件進行分析,如按時間序列的季節周期性、趨勢性、節假日效應等組件分析。Prophet算法通過擬合這幾項,將它們累加起來得到時間序列的預測值。因此,Prophet實質上是一個基于加法回歸的模型。Prophet模型的構成如下:
y(t)=g(t)+s(t)+h(t)+εt
(1)
其中,g(t)是趨勢變化函數,用來分析時間序列中非周期性的變化;s(t)是季節周期項,一般以年或以周為單位;h(t)屬于節假日項,表示節假日因素造成的影響變化;εt是誤差項,表示突發事件的影響,通常建模為高斯噪聲。
1.2.1 Prophet算法的趨勢項
(1)基于邏輯回歸的非線性飽和增長趨勢(Logistic)。
(2)
其中,C(t)是承載量,k(t)是增長率,m(t)是偏移量。在Prophet中C(t)、k(t)和m(t)是隨著時間t變化的函數。
(2)分段線性趨勢(Linear)。
g(t)=(k(t)+a(t)Tδ)t+(m(t)+a(t)T)γ
(3)
其中,k(t)是隨著時間t變化的增長率,δ是增長率的變化量,m(t)是偏移量,a(t)表示在t時刻之前突變點發生變化的次數,γ=-s·δ,s與突變點的選取有關。
1.2.2 季節周期性影響
時間序列通常會按每天、星期、月、年等季節性的影響而呈現周期性的變化,Prophet中使用傅里葉級數模擬時間序列的周期性。其形式如下:
(4)
其中,P是可以設置為想要的時間序列周期長度,如設P=365可對年度數據進行的周期效應估計,同樣P=7是對以周為單位的周期效應估計。
設Prophet的季節項為:
s(t)=βX(t)
(5)
則有
β=(a1,b1,…,aN,bN)T
(6)
(7)
此時,參數向量β初始化為β~Normal(0,σ2)。
1.2.3 節假日效應
節假日因素對很多時間序列產生重要影響,這些影響效應通常是可以預測的。但是,因其周期性不固定,很難用一個模型去確定所有地區的節假日。為了克服不確定因素,Prophet模型提供了一個靈活的擬合節假日的模型,即模型可以對節假日進行自定義,滿足特定場景的預測需求。模型原理如下:
(8)
設
Z(t)=[1(t∈D1),1(t∈D2),…,1(t∈DL)]
(9)
h(t)=Z(t)k
(10)
其中,Di表示節假日窗口序列,k~Normal(0,v2)。
2.1.1 原始數據
文中所采用的數據來自于鐵路公司某客運專線過去連續15個月的日客流數據,這些數據中包含日期、車次、站點、客座率、上車和下車人數等信息。在對原始數據分析的過程中,發現數據中存在格式的不一致性、空缺值和重復記錄等噪聲數據,這些噪聲數據將會不利于模型的訓練,需要對原始數據進行預處理。
2.1.2 原始數據預處理
(1)數據格式的轉換。
原始數據的格式是半結構化形式,數據表中的信息沒有按照字段對應。通過對原始數據的屬性做相關性分析,找出與客流量相關的屬性進行分類別建立子表。例如,分別按站點統計信息,建立客流量數據表或者按車次建立客流量數據表等。在保證原始數據完整性和準確性的同時,對原始數據格式進行轉換,以滿足算法模型對數據的要求。
(2)數據空缺值的處理。
原始數據中存在著大量空缺值和重復值。例如,2015年7月26日和10月31日等缺失了一整天的客流數據信息等。文中采用同類屬性均值替代法,即用同類屬性的其他已知對象的日客流數據計算并取均值來填補缺失的日客流數據。求均值的公式為:

(11)
經過對原始數據進行相應的預處理,得到了標準的、干凈的和連續的實驗數據。
以2015年1月至2016年3月的日客流量數據為基礎構建模型,對鐵路客運專線的某站點未來兩周的客流量進行預測。經過分析發現,鐵路客流量是隨時間發展變化的隨機過程,而站點每天客流量也是不確定的,且受地理位置、季節周期、突發事件、節假日等多種復雜因素影響,而Prophet在構建模型時可以充分考慮到這些因素對客流量趨勢變化的影響,確保對未來鐵路客流量做出更精確的預測。
2.2.1 Prophet預測算法的流程
原始數據經過格式轉換、對空缺值和異常值等進行處理得到標準化后的客流量數據,將其代入構建的Prophet模型進行訓練,按非周期性變化的趨勢項、季節周期項和節假日效應對模型進行分解,進而對模型進行分組件訓練,最后根據訓練結果進一步優化模型,以提升模型的預測精確度。Prophet預測算法的流程如圖1所示。

圖1 Prophet預測算法的流程
2.2.2 Prophet模型的參數說明
Prophet本質上是一種可分解的加法回歸模型,即按組件可將模型分解為非周期性變化的趨勢項、周或年的季節周期項和節假日效應等。因此,Prophet模型可以靈活地對各組件的參數進行設置,這些參數值的大小代表著各組件對模型預測結果的貢獻度。通過分析模型的訓練結果,可以調節模型各組件的參數,以便進一步提升預測精確度。文中所使用的Prophet模型的部分參數說明如表1所示。

表1 模型的參數
2.2.3 節假日效應對預測的影響
在實際研究中,節假日或者一些重大的社會事件都會對時間序列造成很大影響,而這些因素往往不存在周期性。因此,對其單獨建模分析是非常有必要的,如何有效地擬合歷史數據中隱含的節假日效應是需要特別考慮的。
ARIMA算法是目前時間序列預測算法中比較常用的,它可以很好地把握歷史數據的季節周期性和未來趨勢變化,但無法結合實際對節假日效應的影響進行有效分析,且模型預測的精確度也有待提高。Prophet算法相比其他時間序列算法,模型可對節假日效應的影響進行有效分析。假設節假日的影響是獨立的,通過設置特定的節假日窗口集,在特定的節假日窗口前后一段間內,將圍繞窗口前后的每一天都視為節假日本身,例如“-1”表示節假日窗口下限往前延伸一天,同理,“1”表示節假日窗口上限往后延伸一天。表2為對節假日窗口日期的設置。

表2 節假日窗口日期
應用Prophet模型對過去一年的鐵路客流量數據進行訓練,對預測的總體變化進行組件化分解,得到了非周期性變化的趨勢項、節假日效應、年或周的季節周期項等各組件對應的分析結果,最終得到鐵路某站點未來兩周的客流量預測結果。
(1)Prophet模型各組件的預測結果及分析。
客流量的非周期性變化趨勢如圖2所示。

圖2 客流量的非周期性變化趨勢
從圖2可以看出,客流變化趨勢是比較明顯的,并且沒有明顯的周期性。在2015年2月到5月有明顯的上升趨勢,5月至9月趨勢變化相對穩定,而在9月以后出現明顯的下降趨勢。
節假日效應對客流量變化的影響如圖3所示。

圖3 節假日效應對客流量變化的影響
從圖3很清晰地看到,在法定節假日因子影響下,客流量有著顯著變化。例如,在2015年的2月18日至2月24日的春節期間,節假日因子對客流量變化有較強的削弱作用,分析其原因是因為春節期間流動人口較少,外出乘坐火車人數相比平時會少一些,而在“十一”這樣的節假日窗口,由于大多數人會選擇外出游玩而乘坐火車。因此,節假日因子對客流量變化具有明顯的促進作用。
以年為單位的客流量季節性變化如圖4所示。

圖4 以年為單位的客流量季節性變化
從圖4可以看出,在1月至3月客流量變化有一個明顯上升趨勢,因為這一時間段有國家傳統節日“春節”,節日窗口前后的客流量波動明顯,如從3月以后出現急劇下降的趨勢。6月到8月又急劇上升,之后趨勢緩慢減少趨于穩定。模型為了更好地擬合數據,通過對已知的突變點檢測,使得季節性因素的影響作用顯著增強。
(2)客流量預測結果分析。
圖5為鐵路客運專線某站點客流量的預測結果。

圖5 某站點的客流量預測結果
在圖5中,“Actual”表示客流量真實數據,“Predict”表示預測值,“Upper”和“Lower”分別代表預測結果的置信區間上限和下限,灰色部分表示未來兩周的客流量的預測部分。從圖5的預測結果可以看出,模型對歷史數據有較好的擬合,年的季節性效應和節假日效應有著明顯的調節作用,預測結果的置信區間也包含了大部分的真實值,模型預測的精確度良好。
為了驗證Prophet算法的預測效果,將同樣的數據代入LSTM算法得到相應的預測結果,并對這兩種算法的預測結果進行對比分析和評價。
(1)Prophet和LSTM算法的站點未來兩周客流量預測結果對比分析。
Prophet和LSTM算法的未來兩周客流量預測結果對比如圖6所示。文中所采用的LSTM算法選擇1個客運日作為預測步長,即根據當天的鐵路客流量數據對下一天客流量數據做出預測。從圖6可以清楚地看到兩種預測算法對未來兩周的鐵路站點客流量變化的預測結果對比,Prophet相比于LSTM算法的預測結果更接近于真實值。

圖6 Prophet和LSTM算法對未來兩周鐵路客流量預測結果對比
(2)Prophet和LSTM算法的預測結果評價。
預測算法的評價指標主要有均方誤差(MSE)、均方根誤差(RMSE)、平均絕對誤差(MAE)、平均絕對百分比誤差(MAPE)和對稱平均絕對百分比誤差(SMAPE)等。文中選取RSME、MAE和MAPE作為評價指標分別對Prophet和LSTM算法的鐵路客流量預測結果進行分析比較,如表3所示。從表3可以得到,Prophet算法比LSTM算法的精確度略高一點。

表3 Prophet和LSTM算法的評價指標對比結果
Prophet算法是一種組件化的預測模型,即模型可分解為非周期性變化的趨勢項、季節周期項和節假日效應等組件,從而可以具體分析各組件對預測結果變化的影響。相比于已有的時間序列預測算法,Prophet最大的優勢在于對歷史數據中存在的節假日效應的影響具有很強的敏感性。文中結合Prophet算法這一優勢,對鐵路客運專線某站點的未來兩周客流量進行了預測,實驗結果表明,該模型中的節假日效應組件使模型對鐵路客流量歷史數據的擬合度增加,使其更加接近于真實情況,從而大大提高了模型最終的預測精確度。因此,將Prophet算法應用于鐵路客流量預測分析是一種新的研究方法,對于鐵路客流量的預測研究有一定應用價值。