本發(fā)明屬于軌跡計算技術(shù)領(lǐng)域,具體涉及一種基于歷史數(shù)據(jù)的缺失路徑恢復方法。
背景技術(shù):
移動端GPS設(shè)備的普及推動了基于位置的服務(wù)的發(fā)展,軌跡計算也應(yīng)運而生。軌跡數(shù)據(jù)的準確性直接影響了服務(wù)的質(zhì)量,然而現(xiàn)實生活中由于各種因素,如設(shè)備電力、存儲空間、在線傳輸成本等原因,GPS數(shù)據(jù)的采樣并不是高頻率的,即有大量軌跡數(shù)據(jù)采樣間隔在1分鐘以上。低采樣率的GPS軌跡數(shù)據(jù)直接帶來了用戶行駛路徑的缺失,這些數(shù)據(jù)的缺失將會極大地影響基于位置的服務(wù)質(zhì)量,如路徑推薦、路況預(yù)計、軌跡預(yù)測、頻繁模式挖掘等與行駛路徑有關(guān)的應(yīng)用。對于這些缺失路徑的軌跡數(shù)據(jù),如果能夠利用剩下的部分高采樣率的軌跡數(shù)據(jù)對其缺失部分進行恢復,那么毫無疑問將會提高數(shù)據(jù)的利用率。
現(xiàn)有路徑恢復技術(shù)主要歸納為非數(shù)據(jù)驅(qū)動型與數(shù)據(jù)驅(qū)動型兩類:
(1)非數(shù)據(jù)驅(qū)動型的路徑恢復技術(shù):
非數(shù)據(jù)驅(qū)動型的路徑恢復技術(shù)僅僅根據(jù)道路網(wǎng)絡(luò)特征對缺失路徑進行恢復。具體地,一般通過定義路段的開銷,如信號燈、轉(zhuǎn)彎、道路等級等道路屬性,最后選取開銷最小的路徑來補全缺失的路徑。此類方法由于沒有參考歷史數(shù)據(jù),根據(jù)人為設(shè)定的道路開銷很難滿足一些復雜的情況。
(2)數(shù)據(jù)驅(qū)動的路徑恢復技術(shù)
數(shù)據(jù)驅(qū)動型的路徑恢復技術(shù)不但使用道路的固有屬性,還同時參考歷史軌跡數(shù)據(jù)來進行推斷。本發(fā)明屬于這類技術(shù)。
傳統(tǒng)的數(shù)據(jù)驅(qū)動型的路徑恢復技術(shù)分為兩種,一種是掃描歷史數(shù)據(jù),通過將歷史軌跡根據(jù)特定規(guī)則構(gòu)建遍歷圖后,在圖上進行最短路徑查詢。這種方法是基于經(jīng)驗式的,沒有理論保障,且在某些情況下,該方法會退化為直接在原路網(wǎng)中使用最短路徑補全,效果變差。另一種是利用最熱門路徑,通過從歷史數(shù)據(jù)中找出需要恢復路徑的首尾路段之間的最熱門路徑來作為缺失路徑的恢復結(jié)果。這種方法在長距離的缺失下會產(chǎn)生一定的問題,且對歷史數(shù)據(jù)的數(shù)量有一定的要求。是當路徑的缺失距離變長后,歷史數(shù)據(jù)中在缺失路徑的首尾路段之間的軌跡數(shù)量也將減少,且路徑的多樣性也將會變多,導致熱門路徑的特異性不強,最終導致恢復結(jié)果不理想。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于針對現(xiàn)有技術(shù)的不足,提出一種在長距離的缺失情況下也能夠保持算法的可靠性和準確性的基于歷史數(shù)據(jù)的缺失路徑的恢復方法。
本發(fā)明提出的基于歷史數(shù)據(jù)的缺失路徑的恢復方法,具體步驟如下:
1.訓練階段,根據(jù)歷史數(shù)據(jù)訓練模型參數(shù)
(1)定義馬爾可夫決策過程(MDP)模型,將道路作為狀態(tài)s,所有道路構(gòu)成狀態(tài)集S,相鄰道路之間的轉(zhuǎn)移過程定義為動作,道路轉(zhuǎn)移是確定的,因此不需要定義狀態(tài)轉(zhuǎn)移矩陣,定義每條道路存在回報函數(shù),定義衰減系數(shù)γ。
(2)對每個狀態(tài)s,使用其道路長度的負數(shù)作為該道路的初始回報函數(shù)R(s),所有狀態(tài)的回報函數(shù)構(gòu)成總回報函數(shù)集合R。
(3)對于某一條歷史軌跡,記其終點所在的狀態(tài)為sd,將sd的回報函數(shù)設(shè)為0。
(4)對定義的MDP使用值迭代算法,得到每個狀態(tài)s的最優(yōu)值函數(shù)V*(s)。
(5)對于軌跡中每相鄰兩個狀態(tài)si,sj,計算si轉(zhuǎn)移到sj的Q函數(shù)Q(si→sj|R)=R(si)+γV*(sj)。
(6)計算si到sj的轉(zhuǎn)移概率sk為與si相鄰的狀態(tài)。
(7)對于歷史軌跡tr=s1→s1→…→sn,其對于當前總回報函數(shù)集R下的后驗概率為
(8)重復步驟(3)—(7),直至得到所有歷史軌跡在當前總回報函數(shù)集R下的后驗概率公式中m表示歷史軌跡的數(shù)量。
(9)對R中每個回報函數(shù)R(s)在[R(s)-δ,R(s)+δ]區(qū)間內(nèi)均勻采樣,得到新的回報函數(shù)集R’。
(10)根據(jù)步驟(3)—(7),計算所有歷史軌跡在新回報函數(shù)集R’下的后驗概率公式中m表示歷史軌跡的數(shù)量。
(11)根據(jù)的接受概率接受R’作為新的總回報函數(shù)集R。
(12)重復步驟(8)—(11),直至馬爾可夫鏈收斂后將當前的總回報函數(shù)集R作為模型的參數(shù)。
2.在線查詢階段,利用訓練好的模型對缺失路徑進行恢復
(1)定義MDP模型,將道路作為狀態(tài),所有道路構(gòu)成狀態(tài)集S,相鄰道路之間的轉(zhuǎn)移過程定義為動作,道路轉(zhuǎn)移是確定的,因此不需要定義狀態(tài)轉(zhuǎn)移矩陣,定義每條道路存在回報函數(shù),定義衰減系數(shù)γ;
(2)將每條道路作為MDP狀態(tài)的回報函數(shù)設(shè)置成訓練階段中步驟(1)—(12)所得到的總回報函數(shù)R;
(3)記需要恢復軌跡的末端狀態(tài)為sd,將sd的回報函數(shù)設(shè)為0;
(4)對定義的MDP使用值迭代算法,得到每個狀態(tài)s的最優(yōu)值函數(shù)V*(s);
(5)對于狀態(tài)集S中每相鄰兩個狀態(tài)si,sj,計算si轉(zhuǎn)移到sj的Q函數(shù)Q(si→sj|R)=R(si)+γV*(sj);
(6)計算si到sj的對數(shù)轉(zhuǎn)移概率sk為與si相鄰的狀態(tài);
(7)構(gòu)建圖G,其中頂點定義為狀態(tài)集S,邊定義為:如果狀態(tài)si與sj在MDP中是相鄰的,則在G中為si→sj建立一條邊,權(quán)值為-logP(sj|si,R);
(8)記需要恢復軌跡的初始狀態(tài)為so,在G中從頂點so至sd實施最短路徑算法,得到的路徑so→s1→…→sd,作為恢復的缺失路徑。其箭頭表示路徑方向,下同。
本發(fā)明利用MDP模型對歷史軌跡進行建模,通過將歷史數(shù)據(jù)的后驗概率最大化來得到模型代求參數(shù)R。在恢復缺失路徑階段,利用MDP模型得到道路之間轉(zhuǎn)移的概率,對路徑的概率進行馬爾可夫假設(shè),即路徑的概率為相鄰兩條道路之間轉(zhuǎn)移的概率的乘積。最終,將概率最高的路徑作為缺失路徑的恢復結(jié)果。
本發(fā)明方法,參考了歷史數(shù)據(jù)中蘊含的豐富的信息,利用概率論的理論推導,對軌跡數(shù)據(jù)使用了合理的模型進行建模,并根據(jù)歷史數(shù)據(jù)訓練模型參數(shù),并對缺失路徑利用進行恢復。整個方法,通過概率模型的理論基礎(chǔ)保障,使得在長距離的缺失情況下也能夠保持算法的可靠性和準確性。
附圖說明
圖1中虛線軌跡tr1:s1→s5→s12→s16→s17與實線軌跡tr2:s3→s6→s9→s8為用于訓練模型的歷史數(shù)據(jù)。
圖2中實線的兩個線段代表缺失路徑的首尾路段,即恢復從s1到s17的路徑。
圖3為實施例中幾種方法在不同的缺失長度下的準確率
具體實施方式
下面結(jié)合具體實例來說明本發(fā)明的具體實施過程:
1.根據(jù)歷史數(shù)據(jù)訓練模型參數(shù)
(1)定義MDP模型,狀態(tài)集S={s1,s2,...,s17},動作定義為相鄰兩個狀態(tài)間的轉(zhuǎn)移,如s1→s2,s13→s17,定義衰減系數(shù)γ,如γ=0.95。
(2)每個狀態(tài)的初始回報函數(shù)定義為其道路長度,
即R(s1)=s1.len,R(s2)=s2.len,...,R(s17)=s17.len,
其中,s.len代表路段s的長度??偦貓蠛瘮?shù)集R={R(s1),R(s2),...,R(s17)}。
(3)對虛線歷史軌跡tr1進行后驗概率計算
(a)將終止狀態(tài)s17的回報函數(shù)置為0;
(b)對當前MDP使用值迭算法,得到每個狀態(tài)s的最優(yōu)值函數(shù)V*(s)。
(c)計算Q(s1→s5|R)=R(s1)+γV*(s5),
計算Q(s5→s12|R)=R(s5)+γV*(s12),
計算Q(s12→s16|R)=R(s12)+γV*(s16),
計算Q(s16→s17|R)=R(s16)+γV*(s17)。
(d)計算,
計算
計算
計算
(e)計算P(tr1|R)=P(s5|s1,R)*P(s12|s5,R)*P(s16|s12,R)*P(s17|s16,R)。
(4)對實線歷史軌跡tr2進行后驗概率計算
(a)同步驟(3)得到P(tr2|R)。
(5)計算所有歷史軌跡的聯(lián)合后驗概率P(tr1|R)*P(tr2|R)。
(6)對R的δ領(lǐng)域進行采樣,記為R′
(a)R′(s1)~Uniform(R(s1)-δ,R(s1)+δ),
R′(s2)~Uniform(R(s2)-δ,R(s2)+δ),
…
R′(s17)~Uniform(R(s17)-δ,R(s17)+δ),
(b)記R′={R′(s1),R′(s2),...R′(s17)}。
(7)根據(jù)步驟(3)—(5)計算P(tr1|R’)*P(tr2|R’)
(8)按照的概率決定是否接受R’代替R作為新的回報函數(shù)集。
(9)重復步驟(3)—(8)直至馬爾可夫鏈收斂,將當前的R作為MDP的參數(shù)。
2.利用訓練好的模型對缺失路徑進行恢復
(1)定義MDP模型,狀態(tài)集S={s1,s2,...,s17},動作定義為相鄰兩個狀態(tài)間的轉(zhuǎn)移,如s1→s2,s13→s17,定義衰減系數(shù)γ,如γ=0.95。
(2)每個狀態(tài)的回報函數(shù)為步驟1中利用歷史數(shù)據(jù){tr1,tr2}訓練得到的R。
(3)將R(s17)置為0。
(4)轉(zhuǎn)移概率計算
(a)對當前MDP使用值迭算法,得到每個狀態(tài)s的最優(yōu)值函數(shù)V*(s)。
(b)對每個狀態(tài)計算相鄰狀態(tài)的Q函數(shù)值,如Q(s1→s5|R)=R(s1)+γV*(s5)。
(c)計算每兩個相鄰狀態(tài)之間轉(zhuǎn)移的概率,如
(5)構(gòu)建圖G
(a)構(gòu)建頂點集為{s1,s2,...s17},
(b)對每相鄰兩個狀態(tài)建立一條邊,邊權(quán)值為轉(zhuǎn)移概率的負對數(shù),如e(s1→s2)=-logP(s2|s1,R),e(s1→s5)=-logP(s5|s1,R)。
(6)在圖G中使用最短路算法(如Dijkstra算法)計算s1到s7的最短路徑,如s1→s5→s12→s16→s17,則s1→s5→s12→s16→s17就是s1到s17之間缺失的路徑。
下面通過真實數(shù)據(jù)集上的實驗來驗證路徑算法的準確性,以及在長距離缺失下的有效性。我們使用葡萄牙共78萬條出租車軌跡的數(shù)據(jù)集,通過對原數(shù)據(jù)進行人為消除路徑后讓算法進行恢復以檢測其正確率。正確率的評判標準為總共恢復出的路徑的長度比上總?cè)笔У穆窂介L度。我們使用了最短路徑、最快路徑、最熱門路徑,數(shù)據(jù)驅(qū)動型方法的最新工作(HRIS@1、5、10),以及本發(fā)明的方法。圖3為這幾種方法在不同的缺失長度下的準確率,可以看出,本發(fā)明方法在長距離路徑缺失的情況下,依然具有很高的準確率。