張鵬飛,翁小雄
(華南理工大學(xué) 土木與交通學(xué)院,廣州 廣東 510641)
地鐵客流預(yù)測(cè)是軌道交通領(lǐng)域的研究熱點(diǎn),現(xiàn)有預(yù)測(cè)模型與方法[1-2]已可以提供相當(dāng)準(zhǔn)確的預(yù)測(cè)結(jié)果,為地鐵系統(tǒng)的規(guī)劃、運(yùn)營(yíng)等提供了良好的支撐。然而,隨著人工智能、云計(jì)算等[3]新技術(shù)的飛速發(fā)展,地鐵領(lǐng)域的應(yīng)用場(chǎng)景正在向著個(gè)性化、多樣化方向發(fā)展,如交通信息個(gè)性化推送[4]、差異化票價(jià)策略[5-6]等。這些新興應(yīng)用場(chǎng)景不僅需要宏觀粒度的客流預(yù)測(cè),更需要對(duì)微觀粒度的乘客個(gè)體出行行為進(jìn)行預(yù)測(cè)與建模。
個(gè)體出行行為預(yù)測(cè)是指基于個(gè)體的歷史出行行為記錄,預(yù)測(cè)其下一次的出行屬性(如出發(fā)地、目的地等)。相較于客流預(yù)測(cè),個(gè)體出行行為預(yù)測(cè)的研究起步較晚,主要原因是個(gè)體出行行為預(yù)測(cè)需要對(duì)海量數(shù)據(jù)(如GPS軌跡、地鐵刷卡記錄等)進(jìn)行分析,對(duì)算法設(shè)計(jì)及算力都有較高要求。近年來(lái),大數(shù)據(jù)計(jì)算使儲(chǔ)存和處理海量個(gè)體出行軌跡數(shù)據(jù)成為可能,針對(duì)個(gè)體出行行為的預(yù)測(cè)的研究也開(kāi)始涌現(xiàn)。目前,個(gè)體出行行為預(yù)測(cè)方法主要基于統(tǒng)計(jì)學(xué)習(xí)算法。S.GAMBS等[7]提出了n元出行馬爾科夫(n-Mobility Markov Chain)模型,基于個(gè)體出行的前n次訪問(wèn)地點(diǎn)預(yù)測(cè)下一個(gè)可能的訪問(wèn)地點(diǎn);A.MONREALE等[8]提出了基于決策樹的T模式樹(T-pattern tree)模型,從歷史GPS數(shù)據(jù)中學(xué)習(xí)個(gè)體的出行行為特征然后進(jìn)行預(yù)測(cè);Z.ZHAO等[9]提出一種n元語(yǔ)言模型,并將出行行為預(yù)測(cè)分為出行決策以及屬性決策兩個(gè)連續(xù)的子問(wèn)題分別進(jìn)行求解。然而,這些方法并不能很好適用于地鐵乘客的出行行為預(yù)測(cè)。
地鐵乘客的出行行為主要以地鐵進(jìn)出站刷卡(AFC)數(shù)據(jù)的形式儲(chǔ)存。AFC數(shù)據(jù)包括多維時(shí)空信息,如進(jìn)出站站點(diǎn)、進(jìn)出站時(shí)間等。這些信息有著不同的表示形式,如空間信息(如進(jìn)站站點(diǎn))是離散的類別數(shù)據(jù)(categorical data),而時(shí)間信息(如進(jìn)站時(shí)間)則是連續(xù)數(shù)據(jù)?,F(xiàn)存方法通常直接將連續(xù)的時(shí)間信息離散化,再利用馬爾科夫等離散模型進(jìn)行處理,這顯然不夠精確。個(gè)體出行行為還存在長(zhǎng)距離依賴,如某些地鐵乘客可能會(huì)在每周末去往商場(chǎng)站點(diǎn)進(jìn)行消遣,這種模式每周才出現(xiàn)一次,傳統(tǒng)預(yù)測(cè)方法無(wú)法把握這種間隔較長(zhǎng)的出行模式。
針對(duì)上述問(wèn)題,筆者提出了一種基于注意力機(jī)制LSTM(長(zhǎng)短時(shí)循環(huán)神經(jīng)網(wǎng)絡(luò))的深度學(xué)習(xí)預(yù)測(cè)框架,利用地鐵系統(tǒng)的AFC數(shù)據(jù)記錄預(yù)測(cè)乘客的下一次出行行為。提出了不同的特征提取模塊處理與融合不同數(shù)據(jù)類型的時(shí)空信息,能更加精確把握乘客的出行信息,克服了傳統(tǒng)統(tǒng)計(jì)學(xué)習(xí)模型難以進(jìn)行數(shù)據(jù)融合的缺陷;同時(shí),利用注意力機(jī)制學(xué)習(xí)傳統(tǒng)統(tǒng)計(jì)學(xué)習(xí)方法無(wú)法把握的長(zhǎng)距離依賴出行特征,提升預(yù)測(cè)精度。
為了表述準(zhǔn)確,先對(duì)所研究預(yù)測(cè)問(wèn)題進(jìn)行數(shù)學(xué)定義。
出行元組:出行元組r=(a1,a2,…,ak)定義為地鐵乘客一次出行的屬性集合,其中ai為第i個(gè)出行屬性。如一次進(jìn)站點(diǎn)為A站、時(shí)間為08:00、出站點(diǎn)為B站、時(shí)間為08:10的出行可表示為(A, 08:00, B, 08:10)。
出行序列:地鐵乘客u的出行序列S表示該乘客在AFC數(shù)據(jù)庫(kù)中最后n次出行的時(shí)序排列S={r1,r2,…,rn},ri表示乘客u在AFC數(shù)據(jù)庫(kù)中記錄的第i次出行,rn表示乘客u在AFC數(shù)據(jù)庫(kù)中記錄的最后一次出行。
預(yù)測(cè)模型的框架主要由特征提取與時(shí)序模塊兩部分組成,如圖1。特征提取用于將乘客的各出行屬性信息進(jìn)行融合,從而將出行序列轉(zhuǎn)化為抽象的向量序列輸入至?xí)r序模塊;時(shí)序模塊基于注意力機(jī)制選擇與當(dāng)前預(yù)測(cè)相關(guān)的歷史出行信息,生成上下文向量cn,與表示最后一次出行信息的向量hn拼接后輸入預(yù)測(cè)模塊,預(yù)測(cè)下一次出行的出行屬性。
由于出行屬性有離散(空間)和連續(xù)(時(shí)間)2種數(shù)據(jù)形式,對(duì)不同形式的出行屬性信息進(jìn)行高質(zhì)量的特征提取及信息融合,對(duì)提高預(yù)測(cè)精度至關(guān)重要。針對(duì)離散和連續(xù)出行屬性提出2種不同的特征提取模塊,對(duì)乘客出行進(jìn)行建模。
2.1.1 離散出行屬性特征提取
離散形式的空間信息數(shù)據(jù)本質(zhì)上屬于類別數(shù)據(jù),如進(jìn)站站點(diǎn)中每個(gè)站點(diǎn)可視作一個(gè)分類。對(duì)于類別數(shù)據(jù),深度學(xué)習(xí)領(lǐng)域普遍采用詞嵌入(word2vec[10])技術(shù)進(jìn)行特征提取,為后續(xù)模塊提供富含語(yǔ)義特征[11]的高質(zhì)量輸入。筆者利用word2vec將離散出行屬性ai變換為對(duì)應(yīng)的非稀疏向量vai。
圖1 預(yù)測(cè)模型框架示意Fig. 1 Schematic diagram of the prediction framework
2.1.2 連續(xù)出行屬性特征提取
空間信息的連續(xù)數(shù)據(jù)值僅代表不同的時(shí)間點(diǎn),直接將其輸入模型無(wú)法很好的提取特征,這是由于空間中的連續(xù)值并不是預(yù)測(cè)所需要的信息,預(yù)測(cè)關(guān)注的是地鐵乘客在這些時(shí)間點(diǎn)上發(fā)生出行行為的關(guān)聯(lián)關(guān)系,而非數(shù)值大小關(guān)系?,F(xiàn)有預(yù)測(cè)模型通常對(duì)連續(xù)時(shí)間屬性進(jìn)行離散化,如將一天劃分為24個(gè)小時(shí)區(qū)間,將每個(gè)區(qū)間當(dāng)作一個(gè)類別,然后利用word2vec進(jìn)行特征提取,這樣避免了屬性的值對(duì)預(yù)測(cè)造成的影響。
但是,對(duì)于地鐵乘客的出行行為預(yù)測(cè),這種離散化表示并不準(zhǔn)確。例如,進(jìn)站時(shí)間08:00與08:59均屬于08:00—08:59這個(gè)區(qū)間,因此若利用小時(shí)區(qū)間這種離散化形式對(duì)時(shí)間進(jìn)行表示,上述兩個(gè)時(shí)間點(diǎn)的表示將完全相同,這掩蓋了其實(shí)際相差將近一個(gè)小時(shí)的事實(shí),顯然是不合理的。
(1)
重疊編碼的優(yōu)勢(shì)在于,當(dāng)兩個(gè)時(shí)間點(diǎn)接近時(shí),編碼絕大多數(shù)位置都相同,僅有少數(shù)元素不同,可以表征其特征具有很高的相似性。例如圖2中,由于07:07與07:14十分相近,他們的重疊編碼向量有兩處的元素不同(圖中只顯示了一處);當(dāng)兩個(gè)時(shí)間點(diǎn)距離逐漸變大,其相同的元素個(gè)數(shù)逐漸減少,直至完全沒(méi)有重疊,此時(shí)兩個(gè)時(shí)間點(diǎn)表征不同的兩個(gè)類別,隨后再增加兩個(gè)時(shí)間點(diǎn)間的距離,則不會(huì)對(duì)其相似性產(chǎn)生影響。
將連續(xù)的時(shí)間屬性表示為重疊編碼的形式后,同樣利用word2vec將其變換為一個(gè)非稀疏向量vai進(jìn)行特征提取。
2.1.3 出行屬性特征融合
利用上述兩種特征提取模塊,可以將每個(gè)出行屬性a1,a2,…,ak表示為其對(duì)應(yīng)的非稀疏向量va1,va2,…,vak。深度學(xué)習(xí)模型具有強(qiáng)大的特征提取能力,可直接將各個(gè)非稀疏向量拼接起來(lái)組成表征該次出行的特征向量vi=va1⊕va2⊕…⊕vak,其中⊕表示拼接操作。這樣,乘客的出行序列S即變換為其對(duì)應(yīng)的向量序列Sv。
2.2.1 LSTM神經(jīng)網(wǎng)絡(luò)
時(shí)序預(yù)測(cè)模塊用于提取序列Sv中的時(shí)序關(guān)聯(lián)。長(zhǎng)短時(shí)記憶神經(jīng)網(wǎng)絡(luò)(LSTM)作為一種循環(huán)神經(jīng)網(wǎng)絡(luò)的改進(jìn),對(duì)長(zhǎng)時(shí)序序列有較強(qiáng)的處理能力[12],其結(jié)構(gòu)如圖3。
圖3 LSMT結(jié)構(gòu)示意Fig. 3 Schematic diagram of LSTM
LSTM網(wǎng)絡(luò)的更新規(guī)則如式(2)~式(7):
jt=σ(Wijvt+bij+Whjht-1+bhj)
(2)
ft=σ(Wifvt+bif+Whfht-1+bhf)
(3)
gt=tanh(Wigvt+big+Whght-1+bhg)
(4)
ot=σ(Wiovt+bio+Whoht-1+bho)
(5)
ct=ft*ct-1+jt*gt
(6)
ht=ot*tanh(ct)
(7)
式中:vt為t時(shí)刻輸入網(wǎng)絡(luò)的出行特征向量;ht為t時(shí)刻LSTM的隱藏層狀態(tài)向量;jt為記憶狀態(tài)向量;ht-1為t-1時(shí)刻的隱藏層狀態(tài)向量;it,ft,gt,ot分別為L(zhǎng)STM單元的輸入門、遺忘門、記憶門及輸出門的輸出向量;σ(·)為雙曲正切sigmoid激活函數(shù);*為哈達(dá)瑪(Hadamard)積;Wij,Whj,Wif,Whf,Wig,Whg,Wio,Who均表示一層線性層;bij,bhj,bif,bhf,big,bhg,bio,bho為偏置項(xiàng)。
LSTM主要克服了傳統(tǒng)RNN訓(xùn)練中“梯度消失”與“梯度爆炸”的問(wèn)題。LSTM與傳統(tǒng)RNN最大的區(qū)別就在于其門控結(jié)構(gòu)對(duì)長(zhǎng)序列的信息提取更加有效。
2.2.2 注意力模塊
雖然LSTM具有提取長(zhǎng)序列時(shí)序特征的能力,但序列長(zhǎng)度過(guò)長(zhǎng)時(shí)(如超過(guò)20),LSTM的性能會(huì)快速下降[13]。對(duì)于地鐵乘客出行行為預(yù)測(cè),只有選取足夠長(zhǎng)的序列長(zhǎng)度,才能包含乘客更多的出行特征(如每周末固定休閑出行)。因此,僅利用LSTM無(wú)法很好處理地鐵乘客出行行為預(yù)測(cè)問(wèn)題。
為了解決上述問(wèn)題,將注意力機(jī)制與LSTM組合,共同把握長(zhǎng)出行序列的時(shí)序特征。注意力機(jī)制用于計(jì)算乘客的每一次歷史出行{r1,r2,…,rn-1}與當(dāng)前出行rn的相關(guān)性,從而構(gòu)建當(dāng)前時(shí)刻的上下文向量cn。注意力模塊的加入使歷史特征不會(huì)因?yàn)槎嗖綍r(shí)序傳播而變?nèi)?,從而彌補(bǔ)了LSTM無(wú)法處理過(guò)長(zhǎng)序列的缺陷。
上下文向量cn表征當(dāng)前出行與歷史出行的依賴關(guān)系,計(jì)算方法如式(8)、式(9):
(8)
αk=softmax(hnWchk)
(9)
式中:hn,hk分別為當(dāng)前時(shí)刻與k時(shí)刻(k 得到上下文向量cn后,將cn與hn拼接后輸入線性層,并用softmax激活函數(shù)將線性層的輸出轉(zhuǎn)化為概率輸出: on=softmax(Woutun) (10) 式中:Wout為輸出線性層,un=cn⊕hn。 L=crossentropy(on,target) (11) 式中:crossentropy(·)表示交叉熵函數(shù);target為真實(shí)屬性值對(duì)應(yīng)的獨(dú)熱編碼形式。 整體算法訓(xùn)練流程如下: 算法:地鐵乘客出行預(yù)測(cè)訓(xùn)練算法 輸入:乘客出行序列S={r1,r2,…,rn} 輸出:訓(xùn)練完畢的模型M while epoch Sv=featureExtraction (S) fori∈(1,2,…n) do: hi=LSTM(vi) end for H←[h1,h2,…,hn-1] cn=Attention(H,hn) un=cn⊕hn on=softmax(Woutun) L=crossentropy(on,target) IfL end while outputM else: backpropagation(L) 以廣州地鐵2017年1月8日至2017年3月9日的AFC數(shù)據(jù)驗(yàn)證筆者提出的預(yù)測(cè)框架。隨機(jī)選擇20 000名累計(jì)出行次數(shù)大于90次的乘客作為研究對(duì)象。對(duì)于每次出行,選擇進(jìn)站時(shí)間tin,進(jìn)站站點(diǎn)o,出站站點(diǎn)d以及星期幾D構(gòu)建出行元組。對(duì)于每一名所選乘客的出行序列,用寬度為70的滑動(dòng)時(shí)窗進(jìn)行采樣,將所得序列樣本按照8∶2比例分為兩部分,前80%序列樣本歸入訓(xùn)練集,后20%序列樣本歸于測(cè)試集。 為驗(yàn)證所提出的特征提取模塊的有效性,利用歸一化輸入、獨(dú)熱編碼、重疊編碼,3種不同的方法對(duì)時(shí)間信息進(jìn)行特征提取: 1)歸一化輸入。先將時(shí)間點(diǎn)tin變換為從當(dāng)天00:00開(kāi)始的時(shí)間戳,再歸一化至區(qū)間[0,1]。例如,06:00轉(zhuǎn)換為6÷24=0.25。將歸一化后的數(shù)值直接與空間信息的非稀疏向量拼接構(gòu)建vi。 2)獨(dú)熱編碼。將時(shí)間點(diǎn)tin轉(zhuǎn)換為獨(dú)熱編碼(以1 h為間隔),然后用word2vec轉(zhuǎn)化為非稀疏向量與空間信息拼接。 3)重疊編碼。將時(shí)間點(diǎn)tin轉(zhuǎn)換為重疊編碼(l=5 min,w=1 h),然后用word2vec轉(zhuǎn)化為非稀疏向量與空間信息拼接。 訓(xùn)練3個(gè)分別使用上述3種時(shí)間信息表示的模型,分別對(duì)下一次出行的進(jìn)站站點(diǎn)o、進(jìn)站時(shí)間tin及出站站點(diǎn)d進(jìn)行預(yù)測(cè),模型參數(shù)設(shè)置如表1。 表1 預(yù)測(cè)模型參數(shù)設(shè)置Table 1 Parameter settings of the prediction model vd,vo,vtin,vD分別表示經(jīng)過(guò)word2vec轉(zhuǎn)化后的非稀疏向量。預(yù)測(cè)的性能指標(biāo)選擇準(zhǔn)確率: (12) 式中:Nright為測(cè)試集中對(duì)n+1次出行的屬性ai預(yù)測(cè)正確的序列個(gè)數(shù);Ntotal為測(cè)試集的序列總數(shù)。 模型預(yù)測(cè)結(jié)果如表2。 表2 不同時(shí)間信息特征提取模塊準(zhǔn)確率Table 2 Accuracy of different time information feature extraction modules % 實(shí)驗(yàn)結(jié)果顯示: 1)直接歸一化輸入時(shí)間信息無(wú)法很好的提取時(shí)間特征,其預(yù)測(cè)性能弱于另外2種方法,尤其是對(duì)于進(jìn)站時(shí)間的預(yù)測(cè),其準(zhǔn)確率遠(yuǎn)低于另外2種方法。 2)在對(duì)進(jìn)、出站點(diǎn)的預(yù)測(cè)中,利用獨(dú)熱編碼時(shí)間信息的模型取得了最好的預(yù)測(cè)效果;而在對(duì)進(jìn)站時(shí)間的預(yù)測(cè)中,重疊編碼具有優(yōu)勢(shì)。 這種情況的主要原因是進(jìn)出站的預(yù)測(cè)對(duì)時(shí)間信息的依賴不高,算法只需把握空間信息就可以輸出正確的預(yù)測(cè)站點(diǎn)結(jié)果。因此,重疊編碼更強(qiáng)的時(shí)間信息提取能力優(yōu)勢(shì)并不明顯,相反,由于重疊編碼引入了更高維的時(shí)間信息表示,更容易陷入過(guò)擬合(over-fitting)的麻煩,降低預(yù)測(cè)性能;而對(duì)于進(jìn)站時(shí)間的預(yù)測(cè),算法必須正確把握具體的時(shí)間特征才能輸出正確的結(jié)果。重疊編碼提取更高質(zhì)量時(shí)間特征的能力可以顯示出較大的優(yōu)勢(shì),從而取得了更高的預(yù)測(cè)準(zhǔn)確率。 為了驗(yàn)證筆者提出預(yù)測(cè)框架的有效性,將其預(yù)測(cè)結(jié)果與現(xiàn)存的代表性個(gè)體出行預(yù)測(cè)模型進(jìn)行比較(對(duì)t的預(yù)測(cè)采用重疊編碼方式,對(duì)o與d預(yù)測(cè)采用獨(dú)熱編碼方式)。選擇Mobility Markov chain(Markov)算法[12]、Mobility N-gram(N-gram)算法[13]作為比較對(duì)象,預(yù)測(cè)性能對(duì)比結(jié)果如表3。 由表3可知: 1)在進(jìn)站站點(diǎn)、進(jìn)站時(shí)間以及出站站點(diǎn)的預(yù)測(cè)中,對(duì)比N-gram算法,筆者提出深度學(xué)習(xí)模型分別獲得了17.9%、4.4%、11.3%的提升。這說(shuō)明了深度學(xué)習(xí)框架在特征提取與建模方面相較于所對(duì)比方法具有明顯優(yōu)勢(shì)。 2)較之站點(diǎn)預(yù)測(cè),進(jìn)站時(shí)間預(yù)測(cè)的提升較小,這主要是因?yàn)槌丝统鲂械臅r(shí)間存在較高的隨機(jī)性,即使是同一出行行為(例如下班回家),其出行時(shí)間也可能存在較大幅度的變化,這些隨機(jī)因素很難通過(guò)建模去進(jìn)行捕捉,因此深度學(xué)習(xí)模型在進(jìn)行時(shí)間預(yù)測(cè)時(shí)也表現(xiàn)出有限的提升; 3)進(jìn)、出站站點(diǎn)預(yù)測(cè)提升較大,這是因?yàn)橥怀鲂行袨榈倪M(jìn)出站站點(diǎn)不存在較大的隨機(jī)性,只要所構(gòu)建的模型可以更好的捕捉乘客的出行特征,就可以作用于預(yù)測(cè)效果的提升,獲得的提升也更為顯著。 相較于目前應(yīng)用較多的傳統(tǒng)統(tǒng)計(jì)學(xué)習(xí)方法,筆者提出的預(yù)測(cè)框架大幅度提高了預(yù)測(cè)精度。 筆者提出了一種針對(duì)地鐵乘客出行行為的預(yù)測(cè)框架?;诔丝统鲂行袨闀r(shí)間信息及空間信息的特點(diǎn),構(gòu)建了不同的特征表示及提取模塊,可以更加精確的捕捉個(gè)體的出行信息;同時(shí),注意力機(jī)制LSTM深度學(xué)習(xí)網(wǎng)絡(luò)可以精準(zhǔn)的從歷史出行信息中選擇與當(dāng)前預(yù)測(cè)最為相關(guān)的出行特征,加強(qiáng)了網(wǎng)絡(luò)對(duì)乘客出行行為多重依賴關(guān)系的建模,從而提高對(duì)個(gè)體出行行為預(yù)測(cè)的精度。相較于傳統(tǒng)統(tǒng)計(jì)學(xué)習(xí)算法,筆者提出的算法具有明顯優(yōu)勢(shì)。分析發(fā)現(xiàn),所提出模型在對(duì)進(jìn)、出站站點(diǎn)的預(yù)測(cè)中取得了顯著提升,預(yù)測(cè)準(zhǔn)確率分別從50.3%、61.5%提升至61.6%、71.4%。同時(shí),不同的信息提取模塊對(duì)于不同預(yù)測(cè)場(chǎng)景的作用也呈現(xiàn)出異質(zhì)性,對(duì)于進(jìn)站及出站站點(diǎn)的預(yù)測(cè)中,獨(dú)熱編碼預(yù)測(cè)性能最優(yōu),分別達(dá)到了79.4%、61.6%,而重疊編碼對(duì)進(jìn)站時(shí)間的預(yù)測(cè)則具有優(yōu)秀的性能,準(zhǔn)確率達(dá)到44.8%。2.3 模型訓(xùn)練
3 實(shí)例分析
3.1 特征提取模塊性能對(duì)比
3.2 預(yù)測(cè)性能對(duì)比
4 結(jié) 論