林鵬飛,翁劍成,胡 松,荊云琪,尹寶才
(北京工業(yè)大學(xué)交通工程北京市重點(diǎn)實(shí)驗(yàn)室,北京100124)
作為國家層面的城市交通發(fā)展戰(zhàn)略,通過“公共交通優(yōu)先發(fā)展”緩解中國城市交通擁堵已經(jīng)成為共識(shí).掌握公共交通出行者的出行時(shí)空規(guī)律對(duì)于公共交通運(yùn)營管理,提升公共交通服務(wù)品質(zhì)具有重要意義.公共交通刷卡數(shù)據(jù)記錄了出行者帶有時(shí)空標(biāo)記的數(shù)字腳印,為精細(xì)粒度的出行行為研究奠定了良好的數(shù)據(jù)基礎(chǔ).Ma 等[1]利用北京市一個(gè)月的刷卡數(shù)據(jù),提取出行天數(shù)、常用出發(fā)時(shí)間、常用路徑和站點(diǎn)數(shù)4個(gè)指標(biāo)刻畫個(gè)體出行行為的時(shí)空重復(fù)性,利用ISODATA 聚類和TOPSIS 算法評(píng)價(jià)乘客通勤強(qiáng)度.李軍等[2]以出行頻次與出發(fā)時(shí)間的標(biāo)準(zhǔn)差作為分類標(biāo)準(zhǔn),將公交乘客的出行劃分為通勤出行、普通類出行和隨機(jī)類出行.何兆成等[3]基于刷卡數(shù)據(jù)提取乘客出行鏈,應(yīng)用DBSCAN 聚類算法識(shí)別居民出行模式,基于出行模式劃分結(jié)果分析出行周期性;并結(jié)合月出行次數(shù),常規(guī)出行所占比例,周期性強(qiáng)度,利用Kmeans++算法對(duì)居民出行規(guī)律性進(jìn)行聚類.Goulet-Langlois[4]等利用熵率模型從出行頻率和時(shí)間順序的角度衡量乘客出行行為的規(guī)律性.
現(xiàn)有研究主要基于刷卡數(shù)據(jù),提取反映個(gè)體出行行為時(shí)空相似性的指標(biāo),通過聚類算法進(jìn)一步將乘客劃分為不同群體,而出行作為活動(dòng)的衍生物,從活動(dòng)角度挖掘乘客出行規(guī)律的研究較少;卡類型信息有助于推斷用戶的活動(dòng)屬性,但多數(shù)研究缺乏對(duì)卡類型信息的有效利用;現(xiàn)有研究主要將個(gè)體多天的出行數(shù)據(jù)集計(jì)分析,忽視對(duì)個(gè)體日維度出行行為相似性的分析.從日維度的角度分析不同卡類型乘客的長期出行活動(dòng)規(guī)律有助于更精細(xì)地劃分乘客,并針對(duì)不同出行群體制定有針對(duì)性的公交服務(wù)政策.
本文擬基于乘客刷卡數(shù)據(jù),通過提取乘客活動(dòng)地,推斷居住地位置和識(shí)別活動(dòng)類型3個(gè)步驟構(gòu)建乘客個(gè)體活動(dòng)鏈,并通過PrefixSpan序列挖掘算法提取普通卡、老年卡、學(xué)生卡這3 類用戶活動(dòng)鏈的頻繁序列模式,采用Levenshtein距離分別度量3類用戶活動(dòng)鏈的日維度相似性.
采用2018年4~5月北京市公共交通刷卡數(shù)據(jù),包括每位乘客乘坐地鐵或者公交出行時(shí)的卡號(hào)、卡類型、上下車刷卡時(shí)間及站點(diǎn)信息.刷卡數(shù)據(jù)中包括普通卡、老年卡和學(xué)生卡3 種卡類型.由于乘客出行時(shí)存在換乘情況,參考文獻(xiàn)[5],將同一出行目的且存在換乘關(guān)系的多個(gè)出行階段合并構(gòu)建出行鏈,結(jié)果如表1所示.刪除分析周期內(nèi)出行天數(shù)少于20 d 同時(shí)出行日期最大間隔大于7 d 的乘客,最終獲取約169 萬名乘客的出行鏈數(shù)據(jù),其中,普通卡、老年卡和學(xué)生卡乘客的占比分別為80.1%,17.1%和2.8%.
表1 出行鏈數(shù)據(jù)樣例Table 1 Samples of trip chain data
活動(dòng)鏈?zhǔn)菍⒊丝兔刻斓乃谢顒?dòng)按活動(dòng)發(fā)生的時(shí)間順序相連接.出行鏈數(shù)據(jù)構(gòu)建活動(dòng)鏈主要包括活動(dòng)點(diǎn)提取,居住地位置推斷和活動(dòng)類型識(shí)別3 個(gè)步驟.如圖1所示,某乘客1 d 中存在3 次出行,根據(jù)每次出行的起終點(diǎn),上下車時(shí)間,以及乘客用戶類型等可推斷乘客的出行鏈為“居家—工作—其他—居家”.
提取每位乘客所有出行鏈數(shù)據(jù)的上、下車站點(diǎn)位置信息,構(gòu)建活動(dòng)地站點(diǎn)集合.由于城市中心區(qū)域的公交可達(dá)性較高,乘客可選擇多條路徑抵達(dá)活動(dòng)地,故需要將活動(dòng)地附近的公交站點(diǎn)聚合處理.本文采用DBSCAN 算法將站點(diǎn)集合聚類為若干個(gè)簇并作為乘客的活動(dòng)地,將DBSCAN 算法中鄰域距離閾值設(shè)為700 m,最小樣本點(diǎn)數(shù)設(shè)為1.統(tǒng)計(jì)每個(gè)活動(dòng)地的訪問頻率,并按訪問頻率由高到低進(jìn)行排序.
根據(jù)Zou 等[6]研究發(fā)現(xiàn):大多數(shù)乘客每天最后一次出行的終點(diǎn)通常與第一次出行的起點(diǎn)相同,并分布在其居住地附近;大多數(shù)乘客當(dāng)天第一次出行的起點(diǎn)與前一天最后一次出行的終點(diǎn)相同.基于上述規(guī)則,將每位乘客周期內(nèi)的所有出行鏈數(shù)據(jù)按出發(fā)時(shí)間排序,如果乘客某天有多次出行,則直接提取第一次和最后一次出行;如果乘客某天只有一次出行,則假設(shè)出發(fā)時(shí)間早于中午12:00的為第一出行,晚于中午12:00 為最后一次出行.提取每位乘客每天第一次出行的起點(diǎn)和最后一次出行的終點(diǎn),將頻率最高的活動(dòng)地設(shè)置為乘客的居住地.
圖1 個(gè)體活動(dòng)鏈Fig.1 Individual activity chain
假設(shè)當(dāng)前行程為t,結(jié)合相鄰下一次出行(t+1)的起點(diǎn),以及相鄰上一次行程(t-1)的終點(diǎn)判斷活動(dòng)狀態(tài),按如下步驟遍歷乘客所有行程.
Step 1 如果行程t是乘客周期內(nèi)第一次出行,或者行程t與行程t-1 的間隔大于1 d,則認(rèn)為乘客在行程t開始前在行程t的起點(diǎn)處于活動(dòng)狀態(tài).
Step 2 如果行程t和行程t-1 在同一天,或者在行程t-1之后的第2天,并且行程t-1的終點(diǎn)與行程t的起點(diǎn)相同,則認(rèn)為乘客處于活動(dòng)狀態(tài);如果不同,則乘客在該期間采用了非公共交通方式出行.
Step 3 如果行程t與行程t+1 在同一天,或者在行程t+1的前一天,則按Step 2處理.
Step 4 如果出行t與t+1 間隔大于1 d,或者行程t是乘客在周期內(nèi)最后一次出行,則認(rèn)為從行程t的結(jié)束時(shí)刻到當(dāng)天結(jié)束,乘客在行程t的終點(diǎn)處于活動(dòng)狀態(tài).
根據(jù)卡類型,活動(dòng)地訪問頻率和活動(dòng)的起止時(shí)間,進(jìn)一步推斷乘客的活動(dòng)類型.將居住地以外訪問頻率最高的活動(dòng)地,記作第一活動(dòng)地.如果活動(dòng)地位于居住地,則活動(dòng)類型為居家(home);如果活動(dòng)空間位置為第一活動(dòng)地且活動(dòng)時(shí)間在05:00-23:00,對(duì)于普通卡、學(xué)生卡和老年卡乘客,該活動(dòng)分別對(duì)應(yīng)工作(work)、上學(xué)(study)、生活外出(main);將05:00-23:00 在其他活動(dòng)地發(fā)生的活動(dòng),如休閑娛樂等統(tǒng)一歸為其他(other).乘客活動(dòng)類型的推斷規(guī)則如表2所示.
表2 乘客活動(dòng)類型的推斷規(guī)則Table 2 Inference rules of passenger activity type
個(gè)體活動(dòng)鏈的構(gòu)成包括活動(dòng)地序號(hào),活動(dòng)類型及活動(dòng)時(shí)長,采用下劃線連接,按發(fā)生的時(shí)間順序排列.為便于計(jì)算活動(dòng)鏈的相似度,將活動(dòng)時(shí)長離散化處理,劃分為(0,3]h、(3,8]h和>8 h這3個(gè)區(qū)間,分別記作短(short)、中(middle)和長(long).活動(dòng)鏈的樣例如表3所示.
表3 活動(dòng)鏈樣例Table 3 Sample of activity chain sequence
頻繁序列模式挖掘是從乘客活動(dòng)鏈序列中找到頻繁出現(xiàn)、有規(guī)律的活動(dòng)序列,本文采用PrefixSpan算法挖掘頻繁序列,該算法通過前綴和投影實(shí)現(xiàn)挖掘序列模式,已被廣泛應(yīng)用于生物序列、軌跡序列等序列挖掘研究中[7].算法的相關(guān)概念定義如下.
定義1活動(dòng)鏈序列.假設(shè)某乘客的活動(dòng)鏈序列S由L個(gè)元素按時(shí)間順序排列組成,S=<s1,s2,…,sL>,其中,si表示活動(dòng)鏈中的第i個(gè)活動(dòng),1≤i≤L,例如S=<0_home_long,1_work_long,0_home_long>,每位乘客周期內(nèi)所有活動(dòng)鏈序列構(gòu)成活動(dòng)鏈序列集合SSET,記為SSET=<UID,D,S>,其中,UID為乘客卡號(hào),D為日期.
定義2子序列和超序列.對(duì)于活動(dòng)鏈序列α=<a1,a2,…,an>和β=<b1,b2,…,bm>,其中,au(1≤u≤n)和bv(1≤v≤m)分別為α和β的一個(gè)活動(dòng),且存在遞增下標(biāo)序列j1,j2,…,jn(1≤j1<j2<…<jn≤m)使 得a1?bj1,a2?bj2,…,an?bjn,則序列α為序列β的子序列,序列β為序列α的超序列.
定義 3支持度.對(duì)于給定序列集合SSET=<UID,D,S>,序列α是序列S的子序列,則序列α的支持度為在SSET中包含α的序列的比例.
定義4頻繁序列.給定最小支持度θ,若子序列α在序列集合SSET中支持度大于θ,則序列α即為序列集合SSET的頻繁序列.
定義5前綴及投影.對(duì)于序列α=<a1,a2,…,an>和β=<b1,b2,…,bm>(m≤n),如果bw=aw(w≤m-1),則β是α的前綴.對(duì)于活動(dòng)鏈S,α,β,且α,β是S的子序列,同時(shí)β是α的前綴,且不存在α的超序列也有前綴β,則稱α為β在S上的投影.
定義6后綴.假設(shè)序列α=<a1,a2,…,an>和β=<b1,b2,…,bm>(m≤n),β是α的前綴,則序列γ=<am+1,am+2,…,an>為α關(guān)于前綴β的后綴.
定義7投影數(shù)據(jù)庫.假設(shè)α為序列數(shù)據(jù)庫SSET的一個(gè)序列模式,則投影數(shù)據(jù)庫是以α為前綴的所有后綴的集合.
PrefixSpan算法采用分治思想,求解頻繁序列模式的步驟如下.
Step 1 查詢所有長度為1的前綴和對(duì)應(yīng)的投影數(shù)據(jù)庫.
Step 2 計(jì)算對(duì)應(yīng)投影數(shù)據(jù)庫中各項(xiàng)支持度,保留所有滿足最小支持度的項(xiàng).
Step 3 在前綴的投影數(shù)據(jù)庫中,將滿足支持度的候選序列與當(dāng)前前綴相連,根據(jù)上述步驟遞歸生成投影,直到不滿足最小支持度或投影數(shù)據(jù)庫為空.
為加快頻繁序列的檢索效率,將頻繁序列的最小長度和最大長度分別設(shè)置為2、5,最小支持度設(shè)為0.2,同時(shí)頻繁活動(dòng)序列第一個(gè)或者最后一個(gè)元素的活動(dòng)類型為居家.
Levenshtein 距離又稱為編輯距離,是指將字符串S變換到目標(biāo)字符串所需最少編輯次數(shù),編輯操作包括插入、刪除、替換操作.Levenshtein 距離的優(yōu)點(diǎn)是可以用于度量長度不同的2 個(gè)符號(hào)序列之間的相似性,計(jì)算公式為
式中:S,T分別代表乘客的兩個(gè)活動(dòng)鏈序列;Sp,Tq分別表示S、T中的第p、q個(gè)元素;為示性函數(shù),當(dāng)Sp≠Tq時(shí)為1,否則為0.
基于Levenshtein距離任意兩個(gè)活動(dòng)鏈序列的相似性為
式中:LS和LT分別為活動(dòng)序列S和T的長度.SS,T的值越大,兩個(gè)序列越相似.
基于出行鏈數(shù)據(jù)構(gòu)建活動(dòng)鏈,利用Prefixspan算法挖掘每位乘客的頻繁活動(dòng)序列模式,統(tǒng)計(jì)3類乘客頻繁活動(dòng)序列的頻率分布,結(jié)果如表4所示.表4中僅展示活動(dòng)類型,其中,H、M、S、M、O 分別代表居家、上班、上學(xué)、生活外出、其他.每類用戶中約70%乘客的頻繁活動(dòng)序列是對(duì)稱模式,即每天乘坐公共交通往返于居住地與活動(dòng)地,表明大部分乘客對(duì)公共交通的依賴性較高;約30%乘客為非對(duì)稱模式,即部分出行采用非公共交通,其對(duì)公共交通的依賴性較低.
表4 不同類型乘客的頻繁活動(dòng)序列模式Table 4 Frequent activity sequence patterns of different types of passengers
普通卡用戶中“居家—工作—居家”活動(dòng)鏈比例最高,占比為69.8%.普通卡乘客的頻繁活動(dòng)序列模式更加多樣,存在“其他”活動(dòng)的頻繁序列有5 種類型,相應(yīng)乘客占所有普通卡乘客的17.1%,0.4%的普通卡乘客每天兩次往返于居住地和辦公地.
學(xué)生卡乘客中最典型的頻繁序列模式是“居家—學(xué)習(xí)—居家”,頻率為68.0%;非對(duì)稱活動(dòng)頻繁序列包括“學(xué)習(xí)—居家”“居家—學(xué)習(xí)”,占比約21.7%.10.4%的學(xué)生卡用戶每天存在第二活動(dòng),典型的頻繁序列包括“居家—學(xué)習(xí)—其他”“其他—學(xué)習(xí)—居家”.
老年卡乘客的活動(dòng)序列模式主要為“居家—生活外出—居家”,占比為61.0%;非對(duì)稱活動(dòng)序列模式包括“居家—生活外出”“生活外出—居家”兩種頻繁活動(dòng)序列,占比為27.2%.10.8%的老年卡乘客頻繁活動(dòng)序列中存在第二活動(dòng).
分別統(tǒng)計(jì)5種活動(dòng)類型的活動(dòng)時(shí)長,結(jié)果如圖2所示.居家、工作、學(xué)習(xí)是乘客每天的主要活動(dòng),所占時(shí)間相對(duì)較長,3 種活動(dòng)的平均時(shí)長分別為12.5,9.9,9.2 h.老年人生活出行活動(dòng)的平均時(shí)長為3.9 h,相對(duì)較短,其他活動(dòng)類型的平均活動(dòng)時(shí)長為4.4 h,生活出行和其他活動(dòng)類型的活動(dòng)時(shí)長分布相對(duì)分散.
圖2 5 種活動(dòng)的活動(dòng)時(shí)長分布Fig.2 Activity duration distribution of five activities
將每位乘客每天的活動(dòng)鏈序列與其自身的頻繁序列模式相比較,利用Levenshtein 距離計(jì)算活動(dòng)鏈序列相似性,將每位乘客周期內(nèi)每天的相似性計(jì)算平均值,用于表征乘客活動(dòng)鏈的日相似度,不同類型乘客的相似性分布如圖3所示.普通卡和學(xué)生卡用戶的相似性整體較高,平均值分別為0.645 和0.649,老年卡用戶的相似性較低,平均值為0.530,說明通勤(學(xué)生)群體活動(dòng)鏈結(jié)構(gòu)的相似性高于老年人群體.學(xué)生群體相似性分布較普通卡和老年卡群體更集中,說明學(xué)生群體整體的相似性較高.
計(jì)算不同類型乘客周期內(nèi)任意兩天活動(dòng)鏈的相似性,按卡類型對(duì)相似性取平均值,即可得到不同類型乘客活動(dòng)鏈序列的日維度相似性,結(jié)果如表5所示.3類用戶均表現(xiàn)出工作日活動(dòng)鏈序列與非工作日具有明顯差異,而工作日內(nèi)、非工作日內(nèi)各天差異較小;星期五與其他天的活動(dòng)鏈相似性相對(duì)較低,可能原因是臨近周末乘客的休閑娛樂等彈性出行需求增加,使活動(dòng)鏈結(jié)構(gòu)發(fā)生變化.普通卡用戶和學(xué)生卡用戶的活動(dòng)鏈序列相似性高于老年卡用戶,表明普通卡和學(xué)生卡用戶的活動(dòng)更規(guī)律,同時(shí)對(duì)公共交通的依賴性更強(qiáng).
圖3 不同類型乘客的平均相似性Fig.3 Average similarity of different types of passengers
表5 不同類型乘客活動(dòng)序列日維度相似性Table 5 Day-to-day similarity of activity sequences of different types passenger
本文提出公共交通乘客的活動(dòng)鏈構(gòu)建方法,基于Prefixspan算法挖掘3類乘客活動(dòng)鏈的頻繁序列模式,利用編輯距離度量個(gè)體活動(dòng)鏈的日相似性.結(jié)果表明:每類用戶中約70%乘客的頻繁活動(dòng)序列是往返于居住地和第一活動(dòng)地的對(duì)稱模式,對(duì)公共交通具有較強(qiáng)依賴性.普通卡和學(xué)生卡用戶的日相似性高于老年卡用戶,3類乘客均表現(xiàn)出工作日間或非工作日間活動(dòng)鏈相似性較高,而工作日與非工作日相似性較低的特點(diǎn).未來將結(jié)合公共交通站點(diǎn)周邊的用地屬性對(duì)乘客活動(dòng)類型進(jìn)行更精細(xì)地辨識(shí).