陸 奕,郭唐儀
(南京理工大學(xué)自動化學(xué)院,江蘇 南京 210094)
針對我國的鐵路路網(wǎng)日益完善,各省各區(qū)之間的聯(lián)系更加緊密,鐵路的客運量也隨之提升的現(xiàn)狀,各專家學(xué)者對公路、鐵路、航運和水運的客流量內(nèi)在規(guī)律有很多研究,提出多種方法模型以達(dá)到預(yù)測各客流量的目的。牛坤等通過自回歸移動平均模型(ARIMA)進(jìn)行短時客流預(yù)測并優(yōu)化票額制度[1];李萬等通過粒子群算法與長短時記憶神經(jīng)網(wǎng)絡(luò)的組合預(yù)測模型,對鐵路客運量數(shù)據(jù)預(yù)測[2];王素麗等應(yīng)用灰色Markov鏈模型預(yù)測鐵路客運量,并證明其預(yù)測精度高于經(jīng)典灰色模型[3];袁勝強(qiáng)通過對比分析灰色模型和BP神經(jīng)網(wǎng)絡(luò)模型的優(yōu)劣,最終采用馬爾科夫鏈模型對灰色BP神經(jīng)網(wǎng)絡(luò)的組合模型進(jìn)行優(yōu)化,并使用優(yōu)化后的組合模型對甘肅省鐵路客運量進(jìn)行預(yù)測[4];湯銀英等經(jīng)過深入研討鐵路月度客運量的季節(jié)性波動,發(fā)現(xiàn)鐵路月度客運量符合季節(jié)波動性,故通過SARIMA模型預(yù)測鐵路月度客運量數(shù)據(jù)[5];錢名軍等根據(jù)鐵路月度時間序列數(shù)據(jù)的趨勢性、季節(jié)性和波動性,建立SARIMA-GARCH模型,經(jīng)證明該模型可有效消除模型殘差的異方差性,提高預(yù)測精度[6]。Glisovic等通過比較參數(shù)法和非參數(shù)法,將遺傳算法和人工神經(jīng)網(wǎng)絡(luò)兩種模型組成混合模型,并用該混合模型預(yù)測塞爾維亞的鐵路月度客運量數(shù)據(jù),則預(yù)測效果較優(yōu)[7]。JIA等結(jié)合GM模型與ARIMA模型,構(gòu)造混合模型從而研究預(yù)測客流變化[8]。
現(xiàn)有方法雖然能一定程度預(yù)測客運量,但鐵路客運量并不是受單一因素的影響,而是會受較多要素影響,如各休息日、法定節(jié)假日、寒暑假等。2020與2021年春節(jié)期間,在新冠疫情的影響下,政府實施了一系列科學(xué)的防疫措施,包括鐵路、公路、城市公共交通等停運措施,封閉式管理措施與推遲開學(xué)與復(fù)工等措施,各地人民也積極響應(yīng)政府號召,實施居家防疫,減少了不必要的出行,鐵路客運量因此有明顯的縮減[9]。這些舉措都會給鐵路客運量帶來波動變化,所以在這關(guān)鍵時刻,本文提出LSTM-Prophet模型,運用該模型預(yù)測2019年的客運量月度數(shù)據(jù),試驗表明該模型能夠?qū)?jié)假日客運量的波動有更精準(zhǔn)預(yù)測,則通過LSTM-Prophet模型能夠預(yù)測精度較高的客運量,從而了解疫情帶來的影響,能為鐵路部門未來規(guī)劃提供參考和建議。
LSTM神經(jīng)網(wǎng)絡(luò)解決了RNN梯度消失、對前層網(wǎng)絡(luò)參數(shù)無法學(xué)習(xí)等問題,從而改進(jìn)RNN,提高預(yù)測精度。LSTM是采取增加門控系統(tǒng)來解決RNN存在的問題[10],故LSTM存在三個門:Input Gate、Output Gate、Forget Gate,單元結(jié)構(gòu)圖如圖1。
圖1 LSTM單元結(jié)構(gòu)圖
Input Gate計算公式
it=σ(Wi·[ht-1,xt]+bi)
(1)
(2)
(3)
Output Gate計算公式
ot=σ(W0·[ht-1,xt]+b0)
(4)
ht=0t·tanh(ct)
(5)
Forget Gate計算公式
f(t)=σ(Wf·[ht-1,xt]+bf)
(6)
(7)
圖2 改進(jìn)LSTM算法
同時利用高斯過程作為先驗函數(shù),采用Expected-improvement(EI)作為采集函數(shù),對1-LSTM和2-LSTM進(jìn)行超參數(shù)優(yōu)化。
2.1 Prophet算法
Prophet算法是Facebook發(fā)布的一個開源庫,它是一個可分解的模型,即趨勢、季節(jié)、節(jié)假日模型,它可以用非復(fù)雜且直觀的參數(shù)對時間序列進(jìn)行較高精度預(yù)測。但與其他較為經(jīng)典的時間序列預(yù)測模型不同的地方在于,Prophet模型會先對序列采取周期性的分解,然后再預(yù)測。這樣的預(yù)測方式,會突出數(shù)據(jù)中的節(jié)日效應(yīng)和變化趨勢,尤其當(dāng)存在數(shù)據(jù)缺失、趨勢突變和異常值的等問題的情況下,其魯棒性效果優(yōu)異。
Prophet把時間當(dāng)做回歸元,通過嘗試擬合線性和非線性的時間函數(shù)項,通過采取與Holt-Winters指數(shù)平滑的類似辦法,將考慮額外干擾因子季節(jié)因素進(jìn)行建模[12]。整個過程可以分為四個部分:Modeling、forecast Evaluation、Surface Problems以及Visually Inspect Forecasts。
Prophet模型是自加性模型的一種,可以通過對趨勢項建模、周期項建模和節(jié)假日項建模,從而分解時間序列,最終形成模型,故可表示為[13]
y(t)=g(t)+s(t)+h(t)+εt
(8)
其中:g(t)為趨勢項,用于擬合序列中的非周期變化,包括分段線性增長,邏輯增長等。通常,Prophet采用線性模型進(jìn)行預(yù)測。在對核心項趨勢項進(jìn)行建模時,當(dāng)預(yù)測值是增長的情況時,也不是無限制性增長,將會存在一個可無限接近到達(dá)的最大極限值,此時該值這被稱做承載容量(carrying capacity),預(yù)測值在接近該值時將趨于飽和。
h(t)為節(jié)假日項,用于存在無規(guī)律性的節(jié)假日所帶來的影響。法定節(jié)假日、重大事件或者突發(fā)事件會對序列產(chǎn)生很大的影響,數(shù)據(jù)波動會比較劇烈,而各較為穩(wěn)定的節(jié)假日帶來的波動在Prophet模型中是可以預(yù)測的。將各節(jié)假日設(shè)為一個模擬變量Di,共有L個虛擬變量,并且假設(shè)該模擬變量對客運量造成的影響為Ki,那么聯(lián)立二者可得如下矩陣,從而將模型中納入影響因子,達(dá)到提高模型預(yù)測精度的目標(biāo)
Z(t)=[1(t∈D1),…1(t∈DL)]
(9)
h(t)=Z(t)K
(10)
s(t)用于周期變化,可稱為周期項,該項較常使用傅里葉技術(shù),表達(dá)式如下
(11)
式中:P是周期;an,bn是被估參數(shù);t是時間;n是使用周期數(shù)的一半,N是使用周期的個數(shù)。Prophet模型在大多數(shù)情況下都是用來擬合連續(xù)時間段的時間序列,例如對年的周期性,P的值取365.25,N值取10,對周的周期性,P的值取7,N值取3。
εt用于反應(yīng)未在模型中體現(xiàn)的異常變動,即誤差項。
Prophet是單特征模型,其輸入變量是僅輸入兩列,分別是設(shè)日期“ds”,數(shù)值輸入“y”。有因為存在承載容量,故Prophet模型將有三種預(yù)測值。預(yù)測值設(shè)置為:預(yù)測值yhat,預(yù)測下界yhat_lower與預(yù)測上界yhat_upper。
在構(gòu)建LSTM-Prophet算法模型時,首先根據(jù)優(yōu)化后的LSTM模型,進(jìn)行預(yù)測分析,再將預(yù)測結(jié)果作為輸入進(jìn)行Prophet算法預(yù)測,最后可得最終預(yù)測數(shù)值。
本文采用2005年1月~2018年12月的鐵路月度客運量數(shù)據(jù)作為數(shù)據(jù)樣本進(jìn)行擬合建模分析,本文數(shù)據(jù)來源于國家統(tǒng)計局。通過LSTM-Prophet模型對2019年1~12月的月度數(shù)據(jù)進(jìn)行預(yù)測,并對比分析該模型與傳統(tǒng)灰色模型GM(1,1),季節(jié)差分移動自回歸模型(SARIMA),LSTM神經(jīng)網(wǎng)絡(luò)的優(yōu)劣,從而比較分析LSTM-Prophet模型。
采用PyTorch深度神經(jīng)網(wǎng)絡(luò)框架搭建本模型,實驗在Intel(R)Xeon(R)CPU E5-2660 v2處理器和NVIDIA GeForce GTX Titan X顯卡上進(jìn)行。在對數(shù)據(jù)集做10 000次訓(xùn)練后,得到如圖3的擬合情況,由圖可知,擬合情況沒有非常理想,預(yù)測精度不夠高。
圖3 LSTM預(yù)測擬合圖
2019年各月度數(shù)據(jù)具體如表1,由表1可知,精度的波動略大,最高達(dá)15.25%,最低為0.01%。
表1 LSTM預(yù)測值
圖4 LSTM-Prophet預(yù)測擬合結(jié)果
為建模的準(zhǔn)確性與減小數(shù)據(jù)的振動幅度,故先將月度數(shù)據(jù)進(jìn)行數(shù)據(jù)預(yù)處理,即將數(shù)據(jù)做log處理取其對數(shù)。又由于Prophet基本模型可知,Prophet模型是對天等連續(xù)時間的處理,所以如果直接用鐵路客運量的月度數(shù)據(jù)進(jìn)行擬合,那么結(jié)果將會誤差很大,預(yù)測精度將會較低。為了解決這一問題,故將通過make_future_dataframe中傳入頻率參數(shù)的方式,讓模型只做月度預(yù)測,從而達(dá)到預(yù)測要求。將改進(jìn)后的LSTM模型預(yù)測值作為輸入,得到擬合曲線如圖4,結(jié)果如表2。
表2 LSTM-Prophet預(yù)測結(jié)果
本文采用平均絕對百分比誤差MAPE、平均絕對誤差MAE與均方根誤差RMSE為評價指標(biāo),指標(biāo)計算公式如下
(12)
(13)
(14)
式中:Yt為預(yù)測值,yt為實際值,n為預(yù)測次數(shù)。
對比分析各模型的預(yù)測結(jié)果,用四種模型進(jìn)行預(yù)測,比較四種模型的MAPE值、MAE值與RMSE值,其中LSTM-Prophet的MAPE值、MAE值和RMSE值均為最低值,分別為1.91%,559.07和691.82,全面優(yōu)于GM(1,1)模型的8.75%,2 892.73和4 036.76、LSTM神經(jīng)網(wǎng)絡(luò)的7.99%,2 512.77和3 029.43與SARIMA(3,1,1)(1,1,1)12的2.76%,816.66和957.19。故得出GM(1,1)模型的預(yù)測精度是四種模型中最低的,其次為LSTM神經(jīng)網(wǎng)絡(luò),再次為SARIMA(3,1,1)(1,1,1)12模型,Prophet模型精度為最高。所以LSTM-Prophet模型更適合用于預(yù)測鐵路月度客運量,為規(guī)劃提供參考,結(jié)果如表3。
表3 四種模型對比表
LSTM-Prophet模型對于歷史數(shù)據(jù)中包含的節(jié)假日效應(yīng)有很強(qiáng)的敏感性,使其預(yù)測結(jié)果更加接近于預(yù)測值,從而提高預(yù)測精度。本文通過提取2005年1月~2019年12月的月度的季節(jié)性規(guī)律,改進(jìn)優(yōu)化了LSTM模型,并建立了LSTM-Prophet模型,且對2019年1~2月的客運量擬合預(yù)測,并與傳統(tǒng)的GM(1,1)模型、SARIMA(3,1,3)(1,1,1)12模型和LSTM神經(jīng)網(wǎng)絡(luò)的預(yù)測結(jié)果對比分析,得出LSTM-Prophet模型更能準(zhǔn)確預(yù)測鐵路月度客運數(shù)據(jù),對于研究鐵路客運數(shù)據(jù)預(yù)測有一定參考意義,可對鐵路部門開展工作提供參考價值。但該模型雖在遇到不可抗力因素時依舊無法及時準(zhǔn)確做出調(diào)整,但可以根據(jù)預(yù)測數(shù)據(jù)了解因素對客運量的影響。