本發(fā)明屬于智能交通領(lǐng)域,尤其涉及一種基于Isolation Forest的城市道路交通異常檢測(cè)方法。
背景技術(shù):
交通異常是指道路的實(shí)際運(yùn)行特征偏離了它期望的運(yùn)行特征,這在城市交通路網(wǎng)中廣泛的存在。當(dāng)發(fā)生重大交通事故、集會(huì)、施工以及交通管制等情況時(shí),路網(wǎng)交通流會(huì)變得異常,影響出行時(shí)間、效率以及造成污染等,因此對(duì)于交通管理部門來(lái)說(shuō),檢測(cè)城市路網(wǎng)中的異常十分重要。但是基于城市路網(wǎng)的復(fù)雜性,目前大多數(shù)的異常算法研究還只是基于高速公路和快速路而展開的,對(duì)于城市道路交通異常檢測(cè)仍處于弱勢(shì)。
城市道路交通異常的檢測(cè)基于采集到的交通數(shù)據(jù)進(jìn)行,本質(zhì)上是一個(gè)模式識(shí)別或分類問(wèn)題。根據(jù)所使用的數(shù)據(jù)源的不同,現(xiàn)有的交通異常檢測(cè)方法可以分為兩類:基于固定監(jiān)測(cè)器的檢測(cè)方法和基于浮動(dòng)車的檢測(cè)方法。
被廣泛應(yīng)用的基于固定監(jiān)測(cè)器的交通異常檢測(cè)算法有:基于模式識(shí)別的加利福尼亞算法、基于統(tǒng)計(jì)分析的標(biāo)準(zhǔn)偏差法等。加利福尼亞算法通過(guò)比較相鄰檢測(cè)站之間的占有率數(shù)據(jù),對(duì)可能存在的交通異常進(jìn)行判別。標(biāo)準(zhǔn)偏差法通過(guò)判斷交通參數(shù)的變化率是否大于指定的閾值來(lái)實(shí)現(xiàn)對(duì)交通異常的判別。固定監(jiān)測(cè)器大多是鋪設(shè)在道路上的,數(shù)據(jù)精度較好,但是只能檢測(cè)特定點(diǎn)的交通信息,難以檢測(cè)路段的交通信息。
浮動(dòng)車技術(shù)是發(fā)展比較新型的交通信息采集技術(shù)。浮動(dòng)車是裝備有GPS設(shè)備的車輛,具有應(yīng)用方便、經(jīng)濟(jì)、覆蓋范圍廣等特點(diǎn),且采集到的是基于路段區(qū)間的數(shù)據(jù)(如路段的速度),能較為真實(shí)的反映道路的運(yùn)行狀況。
基于固定監(jiān)測(cè)器數(shù)據(jù)的檢測(cè)方法是直接檢測(cè)道路相關(guān)參數(shù)的變化,而浮動(dòng)車返回的數(shù)據(jù)是車輛行駛狀態(tài)的參數(shù),因此基于固定監(jiān)測(cè)器的檢測(cè)方法無(wú)法適用于浮動(dòng)車數(shù)據(jù)。
基于浮動(dòng)車數(shù)據(jù)的城市交通異常檢測(cè)算法有兩類:一類算法將地圖劃分為區(qū)域,用向量表示區(qū)域與區(qū)域之間車輛流動(dòng)的變化,然后用KNN等方法檢測(cè)異常,這些算法得到的是區(qū)域與區(qū)域之間的異常;另一類算法計(jì)算檢測(cè)道路的異常,例如正態(tài)偏差檢測(cè)算法,該算法假定道路在某個(gè)時(shí)間段內(nèi)的交通值服從正態(tài)分布,如果某個(gè)時(shí)間段的交通流量超過(guò)了指定的閾值,則認(rèn)為這條道路在這個(gè)時(shí)間段內(nèi)是異常的,該方法需要計(jì)算所有道路在不同的時(shí)間段內(nèi)分布值,當(dāng)?shù)缆窋?shù)量較多的時(shí)候計(jì)算量大。
Isolation Forest方法最初提出來(lái)是用于檢測(cè)網(wǎng)絡(luò)入侵?jǐn)?shù)據(jù)等。它的基本思想是認(rèn)為異常數(shù)據(jù)在整體數(shù)據(jù)里是孤立而且較少的,那么在對(duì)數(shù)據(jù)進(jìn)行劃分時(shí),異常數(shù)據(jù)相對(duì)于正常的數(shù)據(jù)只需要很少的次數(shù)就能劃分出來(lái)。Isolation Forest方法在對(duì)內(nèi)存需求較低的情況下能保持線性時(shí)間復(fù)雜度,因?yàn)镮solation Forest方法通過(guò)采樣數(shù)據(jù)集來(lái)訓(xùn)練異常樹,因此在數(shù)據(jù)量較大的數(shù)據(jù)集以及高維數(shù)據(jù)集上也有很好的表現(xiàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種基于Isolation Forest的城市道路交通異常檢測(cè)方法。以道路為檢測(cè)對(duì)象,根據(jù)道路在不同時(shí)段的平均運(yùn)行速度劃分不同類別數(shù)據(jù)集,基于每個(gè)數(shù)據(jù)集訓(xùn)練一個(gè)Isolation Forest,通過(guò)檢測(cè)道路速度在Isolation Forest中到根節(jié)點(diǎn)的距離來(lái)判斷道路是否異常。本發(fā)明提出的方法計(jì)算量小,不需要對(duì)每條道路都計(jì)算其分布。
為實(shí)現(xiàn)上述方法,本發(fā)明采用如下的技術(shù)方案:
一種基于Isolation Forest的城市道路交通異常檢測(cè)方法包括以下步驟:
步驟1、以道路為檢測(cè)對(duì)象,根據(jù)道路在不同時(shí)段的平均運(yùn)行速度劃分不同類別數(shù)據(jù)集;
步驟2、基于每個(gè)數(shù)據(jù)集訓(xùn)練一個(gè)Isolation Forest,通過(guò)檢測(cè)道路速度在Isolation Forest中到根節(jié)點(diǎn)的距離來(lái)判斷道路是否異常。
作為優(yōu)選,步驟1具體為:
設(shè)城市路網(wǎng)用一個(gè)有向圖G表示:
G=(V,E)
V是有向圖的點(diǎn)集,每個(gè)點(diǎn)表示路網(wǎng)中的交叉口,由經(jīng)度和緯度組成的兩元組表示;E是有向圖的邊集,每條邊表示路網(wǎng)中某條道路;
浮動(dòng)車通過(guò)攜帶的GPS設(shè)備返回車輛狀態(tài),返回?cái)?shù)據(jù)的形式如下:
record=[car ID,time,latitude,lontitude,speed,angel]
其中car ID表示車輛的車牌號(hào),time表示返回記錄時(shí)的時(shí)間,latitude、lontitude表示返回記錄時(shí)車輛所在位置的經(jīng)度和緯度,speed表示車輛速度,angel表示車輛行駛角度;
首先,對(duì)浮動(dòng)車返回的數(shù)據(jù)進(jìn)行地圖匹配,計(jì)算與浮動(dòng)車返回?cái)?shù)據(jù)(latitude、lontitude)最接近的道路上的點(diǎn),即使浮動(dòng)車數(shù)據(jù)與路段匹配的正確位置;
其次,將浮動(dòng)車數(shù)據(jù)匹配后的道路數(shù)據(jù)進(jìn)行分類,分類有時(shí)間和速度兩個(gè)維度的標(biāo)準(zhǔn):1)對(duì)每日06:00到21:00時(shí)間段以預(yù)設(shè)時(shí)間間隔進(jìn)行劃分;2)將每個(gè)時(shí)間段內(nèi)道路速度按照城市道路交通評(píng)價(jià)指標(biāo)體系分為四個(gè)速度區(qū)間,
然后對(duì)路網(wǎng)中所有道路按照時(shí)間段標(biāo)記速度區(qū)間,即<e,t,s>表示在時(shí)間段t,道路e屬于速度區(qū)間s,s∈{S1,S2,S3,S4},e∈E,其中s是n天內(nèi)的時(shí)間段t道路e速度的均值;
根據(jù)道路標(biāo)記的速度區(qū)間,將所有的道路數(shù)據(jù)分為四個(gè)數(shù)據(jù)集Di,i∈{1,2,3,4},如果<e,t,s>的分量s∈Si,則道路e在n天內(nèi)的時(shí)間段t的記錄<e,tj,speed>∈Di,j={1,2,……n}。
作為優(yōu)選,步驟2具體包括以下步驟為:
步驟2.1、基于數(shù)據(jù)集Di構(gòu)建Isolation Forest Fi={Tk|k=1,2,…,m}用于檢測(cè)城市道路交通異常,F(xiàn)i是包含m棵異常樹的森林;
步驟2.2、檢測(cè)一條道路記錄<e,tj,speed>,即道路e在第j天的時(shí)間段t內(nèi)的平均速度speed是否異常,先找到其所屬的速度區(qū)間Si,即找到了對(duì)應(yīng)的Isolation Forest Fi,然后計(jì)算道路記錄在Fi中的平均深度;
步驟2.3、根據(jù)計(jì)算得到道路記錄在Isolation Forest Fi中的平均深度,即道路記錄距離根節(jié)點(diǎn)的期望長(zhǎng)度為length,按照公式(1)計(jì)算異常值
c(ψ)由公式(2)計(jì)算。
H(ψ-1)=ln(ψ-1)+0.57721(歐拉常數(shù))
其中,ψ為256,
如果記錄的返回值s非常接近1,表明記錄離根節(jié)點(diǎn)近,通過(guò)很少的劃分便能隔離出來(lái),則這條記錄可以認(rèn)為是異常的;
如果返回值遠(yuǎn)遠(yuǎn)小于0.5,說(shuō)明記錄距離根節(jié)點(diǎn)較遠(yuǎn),需要多次劃分才能將這條記錄隔離出來(lái),則這條記錄可以認(rèn)為是正常的。
附圖說(shuō)明
圖1為Isolation Tree的結(jié)點(diǎn)結(jié)構(gòu);
圖2異常路段數(shù)比例;
圖3本方法檢測(cè)到的異常路段;
圖4 Isolation Forest與正態(tài)偏差檢測(cè)算法訓(xùn)練所消耗的時(shí)間示意圖。
圖5本發(fā)明異常檢測(cè)方法的流程圖。
具體實(shí)施方式
如圖5所示,本發(fā)明提供一種基于Isolation Forest的城市道路交通異常檢測(cè)算法。以道路為檢測(cè)對(duì)象,根據(jù)道路在不同時(shí)段的平均運(yùn)行速度劃分不同類別數(shù)據(jù)集,基于每個(gè)數(shù)據(jù)集訓(xùn)練一個(gè)Isolation Forest,通過(guò)檢測(cè)道路速度在Isolation Forest中到根節(jié)點(diǎn)的距離來(lái)判斷道路是否異常。本發(fā)明提出的方法計(jì)算量小,不需要對(duì)每條道路都計(jì)算其分布。
城市路網(wǎng)用一個(gè)有向圖G表示:
G=(V,E)
V是有向圖的點(diǎn)集,每個(gè)點(diǎn)表示路網(wǎng)中的交叉口,一般由經(jīng)度和緯度組成的兩元組表示。E是有向圖的邊集,每條邊表示路網(wǎng)中某條道路。
浮動(dòng)車通過(guò)攜帶的GPS設(shè)備返回車輛狀態(tài),返回?cái)?shù)據(jù)的形式如下:
record=[car ID,time,latitude,lontitude,speed,angel]
其中car ID表示車輛的車牌號(hào),time表示返回記錄時(shí)的時(shí)間,latitude、lontitude表示返回記錄時(shí)車輛所在位置的經(jīng)度和緯度,speed表示車輛速度,angel表示車輛行駛角度。一般來(lái)說(shuō),每日21:00到次日6:00之間浮動(dòng)車數(shù)量較少,返回的數(shù)據(jù)量不夠,因此異常檢測(cè)只考慮當(dāng)日06:00到21:00時(shí)間段上的道路異常狀態(tài)檢測(cè)。
首先需要對(duì)浮動(dòng)車返回的數(shù)據(jù)進(jìn)行地圖匹配,因?yàn)楦?dòng)車返回的經(jīng)緯度信息存在偏差,需要計(jì)算與浮動(dòng)車返回?cái)?shù)據(jù)(latitude、lontitude)最接近的道路上的點(diǎn),即使浮動(dòng)車數(shù)據(jù)與路段匹配的正確位置,然后根據(jù)浮動(dòng)車的速度計(jì)算出道路的平均速度。
其次為了更加精確的檢測(cè)到異常,需要將浮動(dòng)車數(shù)據(jù)匹配后的道路數(shù)據(jù)進(jìn)行分類,分類有時(shí)間和速度兩個(gè)維度的標(biāo)準(zhǔn):1)對(duì)每日06:00到21:00時(shí)間段以20分鐘為間隔進(jìn)行劃分,即每天包含有45個(gè)時(shí)間段;2)將每個(gè)時(shí)間段內(nèi)道路速度按照城市道路交通評(píng)價(jià)指標(biāo)體系分為四個(gè)速度區(qū)間,對(duì)特定速度值speed來(lái)說(shuō)
if speed>60km/h speed∈S1
else if speed≥40km/h speed∈S2
else if speed≥20km/h speed∈S3
else speed∈S4
然后對(duì)路網(wǎng)中所有道路按照時(shí)間段標(biāo)記速度區(qū)間,即<e,t,s>表示在時(shí)間段t,道路e屬于速度區(qū)間s,s∈{S1,S2,S3,S4},e∈E,其中s是n天內(nèi)的時(shí)間段t道路e速度的均值。
根據(jù)道路標(biāo)記的速度區(qū)間,將所有的道路數(shù)據(jù)分為四個(gè)數(shù)據(jù)集Di,i∈{1,2,3,4}。如果<e,t,s>的分量s∈Si,則道路e在n天內(nèi)的時(shí)間段t的記錄<e,tj,speed>∈Di,j={1,2,……n}。
接下來(lái)基于數(shù)據(jù)集Di構(gòu)建Isolation Forest Fi={Tk|k=1,2,…,m}用于檢測(cè)城市道路交通異常,F(xiàn)i是包含m棵異常樹的森林。
基于數(shù)據(jù)集D構(gòu)建Isolation Forest F的算法如下:
異常樹的構(gòu)建算法如下:
檢測(cè)一條道路記錄<e,tj,speed>,即道路e在第j天的時(shí)間段t內(nèi)的平均速度speed是否異常,先找到其所屬的速度區(qū)間Si,即找到了對(duì)應(yīng)的IsolationForest Fi,然后計(jì)算道路記錄在Fi中的平均深度。
計(jì)算道路記錄在Isolation Forest中的平均深度算法如下:
根據(jù)Algorithm 3可計(jì)算得到記錄x在Isolation Forest Fi中的平均深度,即記錄x距離根節(jié)點(diǎn)的期望長(zhǎng)度為length,按照公式(1)計(jì)算異常值
c(ψ)由公式(2)計(jì)算。
H(ψ-1)=ln(ψ-1)+0.57721(歐拉常數(shù))
本發(fā)明中ψ取值256。
s關(guān)于length單調(diào)遞減,如果記錄的返回值s非常接近1,表明記錄離根節(jié)點(diǎn)近,通過(guò)很少的劃分便能隔離出來(lái),則這條記錄可以認(rèn)為是異常的。
如果返回值遠(yuǎn)遠(yuǎn)小于0.5,說(shuō)明記錄距離根節(jié)點(diǎn)較遠(yuǎn),需要多次劃分才能將這條記錄隔離出來(lái),則這條記錄可以認(rèn)為是正常的。
本發(fā)明對(duì)上述方法進(jìn)行了實(shí)驗(yàn),并得到了明顯的效果。實(shí)驗(yàn)區(qū)域是在北京市五環(huán)內(nèi)。我們用OpenStreeMap(OSM)數(shù)據(jù)來(lái)構(gòu)建北京市的路網(wǎng),剔除掉一些車輛無(wú)法通行的道路后,共有39951條路。出租車數(shù)據(jù)從2013年6月1日到2013年6月14日,剔除掉錯(cuò)誤數(shù)據(jù)和不符合要求的數(shù)據(jù)后,每日的數(shù)據(jù)量約在1000萬(wàn)條以上。
根據(jù)我們的方法計(jì)算14天中每天異常路段數(shù)占總體的比例,如圖2所示,可以看出在2013年6月8日與6月9日異常路段數(shù)明顯增多。而根據(jù)北京交通發(fā)展研究中心發(fā)布的北京市道路交通運(yùn)行分析報(bào)告中指出,在2013年6月8日與6月9日適逢端午假期前不限行工作日、北京市高考以及降雨三因素疊加,道路交通擁堵情況突出,特別是6月9日高峰交通指數(shù)達(dá)到6月最高值8.4。
而北京市交通委發(fā)布的數(shù)據(jù)也顯示6月8日與6月9日的道路交通指數(shù)明顯要高于其它幾天。表1為北京市交通委發(fā)布的道路交通指數(shù)。
表1 2013年6月北京市交通指數(shù)
圖3為2013年6月8日18:20:00時(shí)的交通情況。其中黑線部分表示本方法檢測(cè)到的異常路段。
而Isolation Forest在時(shí)間上也要優(yōu)于基于道路的正態(tài)偏差檢測(cè)算法。這兩種算法在檢測(cè)一條紀(jì)錄是否異常所消耗的時(shí)間都在1ms左右,但是在訓(xùn)練過(guò)程中正態(tài)偏差算法所需的時(shí)間與道路數(shù)量成線性關(guān)系,道路數(shù)量越多,其訓(xùn)練需要的時(shí)間越長(zhǎng)。而Isolation Forest算法因?yàn)槭腔诓蓸訑?shù)據(jù)來(lái)構(gòu)建異常樹,因此訓(xùn)練所消耗的時(shí)間與道路數(shù)量無(wú)關(guān)。
圖4為兩種算法在訓(xùn)練上所消耗的時(shí)間??梢钥闯鲈诘缆窋?shù)量較多時(shí),Isolation Forest所消耗的時(shí)間要明顯少于正態(tài)偏差檢測(cè)算法。