孫 越 宋曉宇 金莉婷 劉 童
(蘭州交通大學(xué)電子與信息工程學(xué)院 甘肅 蘭州 730070)
近年來,由于全球地鐵、高鐵和磁懸浮列車等方面的高速發(fā)展和建設(shè),國內(nèi)外在客流量預(yù)測方面也做了大量的研究與應(yīng)用。文獻(xiàn)[1]提出了一種基于神經(jīng)網(wǎng)絡(luò)和起止點矩陣估計的分治方法,實現(xiàn)了對到達(dá)各站或離開各站的旅客數(shù)量的短期客流預(yù)測,并得到了短期內(nèi)的OD矩陣。文獻(xiàn)[2]構(gòu)建了BP神經(jīng)網(wǎng)絡(luò)與灰色預(yù)測模型的組合預(yù)測模型,彌補(bǔ)了單個模型預(yù)測時的不足之處,得到的預(yù)測結(jié)果均優(yōu)于傳統(tǒng)灰色預(yù)測模型。文獻(xiàn)[3]研究了ARIMA模型在航空市場需求預(yù)測中的應(yīng)用,對濟(jì)南至廈門航線的客流進(jìn)行了分析。文獻(xiàn)[4]通過塞爾維亞鐵路網(wǎng)實現(xiàn)的月旅客統(tǒng)計的歷史數(shù)據(jù),得出時間序列具有較強(qiáng)的季節(jié)特征自相關(guān)。采用了季節(jié)性差分自回歸滑動平均模型(SARIMA)來擬合并預(yù)測,結(jié)果表明該方法具有較好的預(yù)測性能。文獻(xiàn)[5]提出了一種基于深度學(xué)習(xí)長短期記憶(LSTM)網(wǎng)絡(luò)結(jié)構(gòu)的地鐵站短時客流預(yù)測方法。將預(yù)測結(jié)果與典型時間序列預(yù)測算法MLR和BP神經(jīng)網(wǎng)絡(luò)進(jìn)行對比,驗證了LSTM網(wǎng)絡(luò)在地鐵站短時客流量預(yù)測中具有更高的準(zhǔn)確性和很好的適用性。文獻(xiàn)[6]用小波變換將處理后的民航客流量信號分解,得到復(fù)雜信號的波動特征,再將其輸入到BP神經(jīng)網(wǎng)絡(luò)中進(jìn)行預(yù)測,效果較好。
如今機(jī)器學(xué)習(xí)發(fā)展迅速,研究表明機(jī)器學(xué)習(xí)算法能夠很好地處理季節(jié)性和非線性的數(shù)據(jù)[7]。其中有應(yīng)用于眾多領(lǐng)域的人工神經(jīng)網(wǎng)絡(luò)ANN(Artificial Neural Networks)模型,它具有很強(qiáng)的自適應(yīng)和非線性函數(shù)逼近能力,不過ANN也存在一定的局限性,比如它在訓(xùn)練過程中易陷入局部極小值,從而出現(xiàn)過擬合和收斂速度過慢的現(xiàn)象[8]。此外,前饋神經(jīng)網(wǎng)絡(luò)的預(yù)測方法基本是通過前面的部分?jǐn)?shù)據(jù)來預(yù)測的,它沒有記憶和利用歷史數(shù)據(jù)的功能,但對于時間序列而言前后數(shù)據(jù)之間可能存在密切的依賴關(guān)系模式?jīng)]有被充分利用[9]。循環(huán)神經(jīng)網(wǎng)絡(luò)RNN(Recurrent Neural Network)中的隱含層具有記憶功能,通過回憶過去來對當(dāng)前作出判斷,但在實際的應(yīng)用中RNN容易產(chǎn)生梯度消失和梯度爆炸的問題[10]。Hochreiter等[11]在RNN的基礎(chǔ)上做了改進(jìn)后提出了LSTM模型,目前LSTM多用于語音識別、手寫識別和自然語言處理等方面。本文提出一種基于LSTM模型和ARMA模型相結(jié)合的方法來解決鐵路客流量的預(yù)測問題,研究結(jié)果表明這種組合模型預(yù)測方法比單一預(yù)測方法的準(zhǔn)確性要高。
本文所采用的數(shù)據(jù)是某個區(qū)段內(nèi)客運專線2015年1月至2016年3月的旅客列車梯形密度表。該數(shù)據(jù)集中包含了每天每個車次在所經(jīng)過站點的上下車人數(shù),所以需要從中提取出有用的信息,得到一個每天各個站點的客流量數(shù)據(jù)。對數(shù)據(jù)表進(jìn)行數(shù)據(jù)清洗,主要包括缺失值和異常值的處理。缺失值處理選用了拉格朗日插值法來進(jìn)行補(bǔ)值,首先從原始數(shù)據(jù)中確定因變量和自變量,取出缺失值前后3個數(shù)據(jù)(前后數(shù)據(jù)中遇到數(shù)據(jù)不存在或者為空的,直接將數(shù)據(jù)舍去,將僅有的數(shù)據(jù)組成一組),將取出來的6個數(shù)據(jù)組成一組,然后采用拉格朗日多項式插值公式:
(1)
(2)
式中:x為缺失值對應(yīng)的下標(biāo)序號;L(x)為缺失值的插值結(jié)果;xi為非缺失值yi的下標(biāo)序號。對所有的缺失數(shù)據(jù)逐個做插補(bǔ)操作,直到?jīng)]有缺失值為止。對于數(shù)據(jù)集中的異常值主要采取以下兩種處理方法:視為缺失值進(jìn)行插補(bǔ)和取前后數(shù)據(jù)平均值進(jìn)行修正。
本文以ZD111-01站點為例,對其數(shù)據(jù)序列進(jìn)行特征提取,所用方法為移動平均法,它是根據(jù)時間序列逐項推移,依次計算包含一定項數(shù)的序列平均數(shù),以此構(gòu)造出原始序列的特征的向量。類似地,用移動方差算法和移動標(biāo)準(zhǔn)差算法,其具體做法是根據(jù)不同的移動窗口M計算出了窗口中M個數(shù)據(jù)的方差和標(biāo)準(zhǔn)差,然后窗口進(jìn)行逐一移動,將得到的一系列方差和標(biāo)準(zhǔn)差作為特征序列。
Adaptive-Lasso變量選擇方法[12]是1996年被提出的將參數(shù)估計與變量選擇同時進(jìn)行的一種正則化方法,這里用該方法從構(gòu)造的特征序列中篩選識別出關(guān)鍵特征。篩選結(jié)果如表1所示,其中移動窗口為7天、10天、14天的移動平均序列(分別用JZ7、JZ10、JZ14表示)和移動標(biāo)準(zhǔn)差序列(分別用BZ7、BZ10、BZ14表示)的影響較高,y代表原始客流量自身,相關(guān)度為1。
表1 各特征與原始客流量的相關(guān)系數(shù)
在對原始序列的分析過程中,采用statsmodels工具包中的seasonal_decompose方法得到了它的周期為7天,如圖1所示,這與經(jīng)驗分析也相符,因此將用與原始序列對應(yīng)的上個7天的所有數(shù)據(jù)作為一列特征向量。
圖1 序列周期圖
ARMA模型的全稱是自回歸移動平均模型,它和自回歸模型(AR模型)、移動平均模型(MA模型)是目前比較常用的擬合平穩(wěn)時間序列的模型。顯然,AR模型和MA模型都是ARMA模型的特例,而且它們也可看作是多元線性回歸模型。自回歸移動平均模型,簡記為ARMA(p,q)模型[13]。模型結(jié)構(gòu)可表示為:
χt=φ0+φ1χt-1+φ2χt-2+…+φpχt-p+
εt-θ1εt-1-θ2εt-2-…-θqεt-q
(3)
式中:φ表示AR的系數(shù);θ表示MA的系數(shù);當(dāng)在t時刻時,隨機(jī)變量Xt的取值xt是前p期xt-1,xt-2,…,xt-p和前q期εt-1,εt-2,…,εt-q的多元線性函數(shù);εt是誤差項在t時刻的隨機(jī)干擾,那么可以得出xt主要是受過去p期的序列值和過去q期的誤差項的兩方面影響。當(dāng)q=0時,則為AR(p)模型;當(dāng)p=0時,為MA(q)模型。
所研究的時間序列經(jīng)過預(yù)處理后,如果經(jīng)過白噪聲監(jiān)測后被判定為平穩(wěn)非白噪聲序列,那么就可以用ARMA模型來對平穩(wěn)非白噪聲序列進(jìn)行建模:首先計算平穩(wěn)非白噪聲序列的自相關(guān)系數(shù)(ACF)和偏自相關(guān)系數(shù)(PACF);然后進(jìn)行模型的定階,由AR(p)、MA(q)和ARMA(p,q)的自相關(guān)系數(shù)和偏自相關(guān)系數(shù)的性質(zhì)來選擇合適的模型,識別原則見表2;再估計模型中未知參數(shù)的值并檢驗?zāi)P?;最后?yōu)化模型進(jìn)行預(yù)測。上述模型要求時間序列為平穩(wěn)序列,而實際上遇到的絕大部分序列是非平穩(wěn)的,對這種序列可以使用ARIMA模型進(jìn)行擬合。ARIMA模型的原理是把差分運算與ARMA模型相結(jié)合[14]。
表2 ARMA模型識別原則
模型定階(確定p和q)的方法有很多,常用的一種是通過序列的自相關(guān)函數(shù)和偏自相關(guān)函數(shù)來定階,如果無法得到p和q準(zhǔn)確的最優(yōu)值,可利用赤池信息量準(zhǔn)則(Akaike Information Criterion,AIC)或貝葉斯信息準(zhǔn)則(Bayesian Information Criterion,BIC)進(jìn)行定階[15]。
循環(huán)神經(jīng)網(wǎng)絡(luò)RNN近些年在時間序列預(yù)測分析方面也是一種比較常用的模型,與普通神經(jīng)網(wǎng)絡(luò)相比,RNN的隱含層的每次計算結(jié)果都與當(dāng)前輸入以及上一次的隱含層結(jié)果有關(guān),而普通神經(jīng)網(wǎng)絡(luò)的計算結(jié)果之間是相互獨立的[16-18]。通過這種結(jié)構(gòu),RNN的計算模型具備了對先前數(shù)據(jù)的記憶能力。圖2為基本的RNN結(jié)構(gòu),右側(cè)的展開結(jié)構(gòu)更加詳細(xì)地說明了RNN的原理。其中:x為輸入層,o為輸出層,s為隱含層,t是指第幾次的計算;V、W、U為權(quán)重,在計算第t次的隱含層狀態(tài)時為St=f(UXt+WSt-1),這樣便可以使得當(dāng)前節(jié)點的輸入結(jié)果與之前結(jié)果產(chǎn)生關(guān)聯(lián)。
圖2 RNN模型結(jié)構(gòu)
如果需要對數(shù)據(jù)序列進(jìn)行長期記憶的話,那么RNN模型里面當(dāng)前隱含層的計算結(jié)果要與前n次的計算產(chǎn)生聯(lián)系。這樣會使得計算量呈指數(shù)式增長,導(dǎo)致模型在訓(xùn)練時消耗大量時間,而對RNN進(jìn)行改進(jìn)后的LSTM模型能夠很大程度上避免該問題。LSTM模型的特點就是在RNN的每個神經(jīng)元內(nèi)部增加了三類控制記憶單元狀態(tài)的門結(jié)構(gòu),分別是輸入門(input gate)、遺忘門(forget gate)和輸出門(output gate)。輸入門決定保存哪些信息到存儲單元中。遺忘門決定何時忘記輸出結(jié)果,從而為輸入序列選擇最佳的時間間隔。輸出門獲取所有計算結(jié)果并為cell生成輸出[19]。典型的LSTM結(jié)構(gòu)如圖3所示。
圖3 典型的LSTM結(jié)構(gòu)
在本文的客流量預(yù)測模型中,輸入的時間序列表示為X=(x1,x2,…,xt),隱藏狀態(tài)單元表示為H=(h1,h2,…,ht),輸出序列表示Y=(y1,y2,…,yt)。LSTM的計算方法如下:
ht=H(Whyxt+Whhht-1+bh)
(4)
yt=Whyht+by
(5)
上面描述的LSTM結(jié)構(gòu)通過以下計算式實現(xiàn):
it=σ(Wxixt+Whibt-1+Wcict-1+bi)
(6)
ft=σ(Wxfxt+Whfbt-1+Wcfct-1+bf)
(7)
ct=ft×ct-1+it×tanh(Wxcxt+Whcht-1+bc)
(8)
ot=σ(Wxoxt+Whobt-1+Wcoct-1+bo)
(9)
ht=ottanh(ct)
(10)
式中:σ和tanh表示LSTM模型中特定的激活函數(shù),σ代表式(5)中定義的標(biāo)準(zhǔn)Sigmoid函數(shù),Sigmoid層輸出的數(shù)值在0到1之間,表示每個部分會有多少量可以通過,“0”表示不會有任何的量通過,“1”則表示允許任意的量通過;i、f、o和c分別表示輸入門、遺忘門、輸出門和單元激活向量;c需要與隱藏向量h相同;W為權(quán)重項;b為各自所對應(yīng)的偏置項。輸入門可以確定什么樣的新信息向量x被存放在存儲單元狀態(tài)中,輸出門能夠使存儲單元對輸出產(chǎn)生影響。最后,遺忘門決定存儲單元記住或忘記其以前的狀態(tài)[19]。
本文所研究的客流量問題中需要預(yù)測的時間序列顯然是一種復(fù)雜的非線性的序列,其中包含了不止一種數(shù)據(jù)特征(線性、非線性和周期性等),而對于單一預(yù)測模型來說就不能很好地捕獲數(shù)據(jù)的各個特征[7],具有一定的片面性。模型組合的方法能在一定程度上緩解該問題[20-22],于是本文提出一種基于深度學(xué)習(xí)方法的ARMA-LSTM模型。該模型主要由三部分組成,第一部分是通過ARMA模型得到預(yù)測結(jié)果;第二部分是通過LSTM模型得到預(yù)測結(jié)果;第三部分則是通過優(yōu)化算法給之前得到的預(yù)測結(jié)果分配適當(dāng)?shù)臋?quán)重系數(shù),再將兩種方法的預(yù)測結(jié)果相加,從而得到最后的預(yù)測結(jié)果。假設(shè)yt(t=1,2,…,n)是實際的時間序列數(shù)據(jù),fit(i=1,2)是兩種方法的預(yù)測結(jié)果,wi是第i種預(yù)測方法的權(quán)重系數(shù),那么組合模型的預(yù)測值Yt可以表示為:
(11)
(12)
同時可以得到組合模型預(yù)測方法的誤差:
(13)
式中:f1t和f2t分別為ARMA和LSTM在t時刻的預(yù)測結(jié)果;wi(i=1,2)是分配給ARMA和LSTM的權(quán)重系數(shù);eit(i=1,2)是ARMA和LSTM在t時刻的誤差。這樣將ARMA與LSTM的預(yù)測結(jié)果分別乘以各自對應(yīng)的權(quán)重系數(shù),就可以得到組合模型的預(yù)測結(jié)果。
通過之前的數(shù)據(jù)提取,得到了2015年1月到2016年3月ZD111-01站點的客流量數(shù)據(jù),以下實驗將用此列數(shù)據(jù)來完成。經(jīng)過對數(shù)據(jù)的分析了解到節(jié)假日對客流量的影響很大,因此選取了2015年12月27日至2016年1月20日、2016年2月1日至2016年2月20日、2016年2月24日至2016年3月14日的三段數(shù)據(jù)分別作為測試集,為了簡化表示,在之后內(nèi)容中簡稱為1月、2月和3月,這其中主要包含了元旦和春節(jié)假期。
用ARMA模型來預(yù)測時,首先對數(shù)據(jù)序列進(jìn)行平穩(wěn)性檢驗(用的方法是單位根檢驗)和白噪聲檢驗,判定是否為平穩(wěn)非白噪聲序列。然后進(jìn)行模型識別,再分別通過BIC和AIC信息準(zhǔn)則對模型定階,最后進(jìn)行預(yù)測。在得到的預(yù)測結(jié)果中選擇出誤差較小的模型,這里所采用的評價指標(biāo)是平均絕對百分比誤差MAPE(Mean Absolute Percentage Error)。
在進(jìn)行2015年12月27日至2016年1月20日的客流量預(yù)測中,BIC定階的ARIMA(5,1,5)模型要比其他AIC和BIC分別定階的ARMA模型和ARIMA模型的誤差更低,預(yù)測結(jié)果如圖4所示。
圖4 ARIMA(5,1,5)在2016年1月的預(yù)測結(jié)果
接著搭建LSTM模型,這里主要調(diào)用TensorFlow來實現(xiàn),采用Python 3.5進(jìn)行程序編寫,定義的LSTM網(wǎng)絡(luò)包含兩個隱層,有10個隱層神經(jīng)元。輸入的數(shù)據(jù)是之前經(jīng)過特征提取得到的移動窗口為7天、10天、14天的移動平均序列和移動標(biāo)準(zhǔn)差序列,以及與原始序列對應(yīng)的上一個7天的數(shù)據(jù)序列。經(jīng)過反復(fù)實驗,模型的參數(shù)batch_size=1、time_step=7、learning_rate=0.000 6、訓(xùn)練次數(shù)為1 000次時預(yù)測效果最好。2015年12月27日至2016年1月20日的客流量預(yù)測結(jié)果如圖5所示。
圖5 LSTM在2016年1月的預(yù)測結(jié)果
最后,選擇用BP神經(jīng)網(wǎng)絡(luò)對權(quán)重進(jìn)行優(yōu)化,保證組合模型具有最優(yōu)的擬合效果,進(jìn)而得出最終的預(yù)測結(jié)果。經(jīng)過多次實驗,確定BP神經(jīng)網(wǎng)絡(luò)參數(shù)batch_size=7,nb_epoch=5 000,隱含層神經(jīng)元為10個,ReLU函數(shù)作為激活函數(shù)。運算后得到2015年12月27日至2016年1月20日的客流量ARMA-LSTM模型預(yù)測結(jié)果如圖6所示。
圖6 ARMA-LSTM在2016年1月的預(yù)測結(jié)果
通過重復(fù)上述步驟,圖7-圖12給出了各模型分別對2月和3月的預(yù)測結(jié)果。
圖7 ARIMA(5,1,5)在2016年2月的預(yù)測結(jié)果
圖8 LSTM在2016年2月的預(yù)測結(jié)果
圖9 ARMA-LSTM在2016年2月的預(yù)測結(jié)果
圖10 ARMA(4,2)在2016年3月的預(yù)測結(jié)果
圖11 LSTM在2016年3月的預(yù)測結(jié)果
圖12 ARMA-LSTM在2016年3月的預(yù)測結(jié)果
圖7中的2月7日是農(nóng)歷除夕,很明顯出現(xiàn)了與實際值較大的誤差,這也驗證了ARIMA模型在處理這類非線性有劇烈增長和降低的數(shù)據(jù)時存在的不足。
為了更好地比較不同模型之間的預(yù)測效果,本文采用均方根誤差(RMSE)和平均絕對百分比誤差(MAPE)兩種常見的評價指標(biāo)來量化模型的性能。計算式分別為:
(14)
(15)
式中:N是樣本的總數(shù);yi和pi分別是第i個樣本數(shù)據(jù)的真實值和預(yù)測值,前者能夠很好地反映測量的精度,后者可以衡量一個模型預(yù)測結(jié)果的好壞。
為了更好地分析和對比ARMA-LSTM模型在本次鐵路客流量預(yù)測中的預(yù)測效果,加入了灰色模型GM(1,1)用相同數(shù)據(jù)進(jìn)行預(yù)測,該模型是使用最廣泛的灰色預(yù)測模型之一[23]。然后將GM(1,1)與LSTM進(jìn)行組合,這里同樣用BP神經(jīng)網(wǎng)絡(luò)對權(quán)重進(jìn)行優(yōu)化,得到GM-LSTM組合模型的預(yù)測結(jié)果。下面用RMSE和MAPE兩種指標(biāo)評價五種模型的預(yù)測效果,數(shù)值越小代表預(yù)測效果越好。
表3 五種預(yù)測模型的RMSE值
表4 五種預(yù)測模型的MAPE值(%)
通過對表3和表4中的數(shù)值作比較,可以看出ARMA-LSTM組合模型的預(yù)測效果明顯優(yōu)于其他四種模型。三種單一模型中LSTM模型的預(yù)測效果較好,但結(jié)合圖4-圖12發(fā)現(xiàn)LSTM在一些日期中并沒有ARMA擬合得好,在將兩模型進(jìn)行組合后預(yù)測效果得到明顯提升,因此組合模型ARMA-LSTM不僅在準(zhǔn)確性上有了提高,而且在應(yīng)用場景上吸收了兩種模型優(yōu)勢后適用性也高于單一模型。
本文針對鐵路客流量問題提出一種基于權(quán)重分配的ARMA-LSTM組合模型,利用BP神經(jīng)網(wǎng)絡(luò)算法進(jìn)行優(yōu)化,將ARMA模型和LSTM模型進(jìn)行組合來預(yù)測鐵路的客流量。實驗結(jié)果分析和比較表明該模型彌補(bǔ)了普通單一模型在實際預(yù)測中的不足,提高了客流量預(yù)測的準(zhǔn)確性以及在該領(lǐng)域中的適用性。而且這種基于神經(jīng)網(wǎng)絡(luò)的模型在參數(shù)設(shè)置和模型訓(xùn)練等方面仍有優(yōu)化空間,在后續(xù)的研究中可繼續(xù)完善模型以達(dá)到更好的預(yù)測效果,并且能夠使該模型運用到不同的領(lǐng)域中。