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