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