本發(fā)明屬于計算機(jī)應(yīng)用領(lǐng)域,特別涉及一種軌跡相似度計算方法。
背景技術(shù):
隨著傳感器技術(shù)和個人智能設(shè)備的發(fā)展,GPS設(shè)備被廣泛用于追蹤移動物體(人、車、動物等),每天都有大量的軌跡數(shù)據(jù)在不斷產(chǎn)生。軌跡是移動物體隨著時間變化而在空間中留下的時空數(shù)據(jù)序列,隨著物聯(lián)網(wǎng)、城市計算等領(lǐng)域的推動,時空數(shù)據(jù)的存儲與分析已經(jīng)成為數(shù)據(jù)庫和機(jī)器學(xué)習(xí)領(lǐng)域的一個研究熱點(diǎn),通過分析這些軌跡數(shù)據(jù)能為各行各業(yè)帶來巨大的推動力,例如:通過分析游樂場游客的運(yùn)動軌跡規(guī)劃游樂場基礎(chǔ)設(shè)施建設(shè)、分析優(yōu)秀足球運(yùn)動員的移動模式、分析臺風(fēng)的頻繁移動路徑等。
計算軌跡間相似性度量是軌跡分析重要研究內(nèi)容之一?;谲壽E相似性度量算法,可以對軌跡進(jìn)行的聚類、分類、檢索等。許多學(xué)者在軌跡相似性度量算法上進(jìn)行了大量的研究,提出了很多高性能算法,應(yīng)用比較廣泛的相似性度量有DTW(動態(tài)時間歸整)。DTW算法基于動態(tài)規(guī)劃的思想找出軌跡點(diǎn)之間的最佳匹配,可以有效解決局部時間偏移問題和軌跡不等長問題,其最早的應(yīng)用領(lǐng)域?yàn)檎Z音識別,后被引入到時間序列分析。最長公共子序列距離算法——LCSS算法,可以有效消除軌跡數(shù)據(jù)中噪聲的干擾,但由于采用得分機(jī)制沒有考慮到匹配點(diǎn)之間的間隔點(diǎn),相似性度量精度不高。EDR也采用得分機(jī)制,考慮到了匹配點(diǎn)之間的間隔點(diǎn),較LCSS更加精確;ERP在EDR的基礎(chǔ)上采用參考點(diǎn)的方式作為未匹配點(diǎn)的懲罰值,但參考點(diǎn)的選取對結(jié)果影響很大。對DTW、LCSS、ERP、EDR、SPaDe等算法,在大量時間序列數(shù)據(jù)集進(jìn)行了多組比較實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明DTW在多數(shù)數(shù)據(jù)集上都取得最高的查詢準(zhǔn)確度。但是DTW對采樣頻率較敏感,且沒有將軌跡形狀作為計算軌跡相似度要素,導(dǎo)致其計算精度不夠完美。
本發(fā)明公開了一種基于段的動態(tài)時間歸整算法(Segment–based Dynamic Time Warping,SDTW),SDTW算法可以減少對采樣頻率的敏感性;采用點(diǎn)間時間距離的計算方式,將時間維度的差異與空間緯度的差異統(tǒng)一考慮,并可通過參數(shù)調(diào)節(jié),改變各維度權(quán)重;使用段間距離代替點(diǎn)間距離,將軌跡形狀納入計算要素,并通過參數(shù)調(diào)整,修正形狀因子,提高軌跡相似性度量算法的精度。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:針對現(xiàn)有技術(shù)中存在的問題,本發(fā)明提供一種軌跡相似度計算方法,可以降低軌跡采樣頻率對算法精確性的影響,提高軌跡相似性度量算法的精確性。
技術(shù)方案:為解決上述技術(shù)問題,本發(fā)明提供一種軌跡相似度計算方法,包括如下步驟:
步驟一:通過用戶手持GPS設(shè)備采集用戶時空數(shù)據(jù),并取兩條軌跡R和S;
步驟二:將經(jīng)緯度坐標(biāo)轉(zhuǎn)換為通用橫軸墨卡托投影坐標(biāo)系,并使用卡爾曼濾波算法對軌跡數(shù)據(jù)進(jìn)行濾波處理;
步驟三:結(jié)合點(diǎn)段距離和點(diǎn)間歐氏距離,計算兩條軌跡R和S中每點(diǎn)間改進(jìn)空間距離;
步驟四:計算兩條軌跡R和S中每點(diǎn)間預(yù)測距離;
步驟五:使用步驟三和步驟四的結(jié)果和段間角距離,計算兩條軌跡R和S中每段間距離;
步驟六:計算兩條軌跡R和S的累積距離;
步驟七:將步驟六的結(jié)果進(jìn)行歸一化處理。
進(jìn)一步的,步驟三中計算兩條軌跡R和S中每點(diǎn)間改進(jìn)距離的具體計算方法如下:取軌跡R中的第i個軌跡點(diǎn)Pi(xi,yi),軌跡S中的第j個軌跡點(diǎn)SPj(xj,yj),定義distps(Pi,SPj)為Pi和SPj的點(diǎn)段距離,定義distps(SPj,Pi)為SPj和Pi的點(diǎn)段距離,distps(Pi,SPj)≠distps(SPj,Pi);計算distps(Pi,SPj)的方法如下:
步驟3.1:點(diǎn)段距離即點(diǎn)到另外一點(diǎn)的替代軌跡段的距離,故首先求SPj的替代軌跡段,替代SPj參與距離計算,點(diǎn)的替代軌跡段的定義如下:
SPj的空間坐標(biāo)為(xj,yj),取該取樣點(diǎn)前后兩個點(diǎn)SPj-1和SPj+1的空間坐標(biāo)為(xj-1,yj-1)和(xj+1,yj+1);取點(diǎn)(xj,yj)與(xj-1,yj-1)的中點(diǎn)為Pmid1(xmid1,ymid1),取點(diǎn)(xj,yj)與點(diǎn)(xj+1,yj+1)的中點(diǎn)為Pmid2(xmid2,ymid2);點(diǎn)Pmid1與點(diǎn)Pmid2形成的線段Rseg即為(xj,yj)的替代軌跡段;如果(xj,yj)為起點(diǎn)則(xj-1,yj-1)等于(xj,yj),如果(xj,yj)為終點(diǎn)則(xj+1,yj+1)等于(xj,yj);
其中(xmid1,ymid1)、(xmid1,ymid1)的計算公式為:
步驟3.2:計算點(diǎn)Pi到Rseg之間的最短距離distps(Pi,Rseg),其計算方法如下:
其中r=(xmid2-xmid1)×(xi-xmid1)+(ymid2-ymid1)×(yi-ymid1);Lseg即為派生段的長度;dx=(xmid1+(xmid2-xmid1)×(r/Lseg));dy=(ymid1+(ymid2-ymid1)×(r/Lseg));distps(SPj,Pi)的計算方式與distps(Pi,Rseg)相同;
步驟3.3:求Pi到待SPj的歐幾里得距離disteuc(Pi,SPj),其計算公式為:
步驟3.4:Pi與SPj的改進(jìn)空間距離distp(Pi,SPj)的計算公式為:
distp(Pi,SPj)=(min{disteuc(Pi,SPj),distps(Pi,SPj)}+min{disteuc(Pi,SPj),distmin(SPj,Pi)})/2。
步驟四中計算軌跡R中的第i個軌跡點(diǎn)Pi(xi,yi,ti)和軌跡S中的第j個軌跡點(diǎn)SPj(xj,yj,tj)的預(yù)測距離時,兩點(diǎn)間的預(yù)測距離的具體計算步驟如下:
步驟4.1:比較點(diǎn)Pi與點(diǎn)SPj的時間先后關(guān)系,設(shè)時間大的點(diǎn)為A,時間小的點(diǎn)為B;其時間差Δt=tA-tB;
步驟4.2:求點(diǎn)B的預(yù)測位置B',假設(shè)B點(diǎn)為一個運(yùn)動點(diǎn),遍歷各個點(diǎn)的時間,尋找tB+Δt時B點(diǎn)處于哪兩個軌跡點(diǎn)之間,即其預(yù)測位置在哪里,假定在tB+Δt時B點(diǎn)處于第i-1個和第i個點(diǎn)之間,則對于B點(diǎn)的預(yù)測位置B'的空間坐標(biāo)(xB′,yB′)計算公式如下:
假定軌跡上任意兩點(diǎn)之間的運(yùn)動為勻速直線運(yùn)動,故可求出兩點(diǎn)之間運(yùn)動速度,其求解公式如下:
如果時間tB+Δt在B軌跡上不存在,則B′計算如下:
其中N為B點(diǎn)所在軌跡的點(diǎn)的總數(shù)目;
步驟4.3:計算A和B的預(yù)測距離,計算公式如下:
distt(A,B)=dist(A,B′)
其中dist(A,B′)為A和B′的在空間坐標(biāo)上的歐幾里得距離。
步驟五中計算兩條軌跡R和S中每段間距離的具體步驟如下:
步驟5.1:其中Si為軌跡R的第i段,SSj為軌跡S的第j段;求Si和SSj的角度θ,Si的兩個端點(diǎn)為Pi(xi,yi)和Pi+1(xi+1,yi+1),SSj的兩個端點(diǎn)為SPj(xj,yj)和SPj+1(xj+1,yj+1),其角度θ的計算公式為:
θ=|arctan2(yi+1-yi,xi+1-xi)-arctan2(yj+1-yj,xj+1-xj)|
步驟5.2:段間的時空距離為段的兩端點(diǎn)的時空距離之和,因此Si與SSj的段間距離dists(Si,SSj)的計算公式為:
dists(Si,SSj)=f(θ)(distst(Pi,SPj)+distst(Pi+1,SPj+1))
步驟5.3:求f(θ),其計算公式為:
其中:ω為可調(diào)節(jié)參數(shù)形狀負(fù)因子,ω越大距離對形狀因素越不敏感,其中ω=1,distsmid(Si,SSj)為中點(diǎn)Si和SSj中點(diǎn)的時空距離,distmax(R,S)為軌跡R和軌跡S的任意兩點(diǎn)間最大時空距離。引入的原因?yàn)椋褐挥挟?dāng)段間時空距離較近時,形狀因素才更有意義,因此使用動態(tài)調(diào)整形狀因素的權(quán)重。
步驟六中進(jìn)行歸一化處理,即將累積距離歸一化到[0,1]之間,其中,0表示兩條軌跡完全無關(guān),1表示兩條軌跡完全相似的具體步驟如下:
其中,D表示縮放因子,用來描述相似度對累積距離的敏感度,累積距離相同的情況下,當(dāng)D較大時相似度較高,當(dāng)D較小時相似度較低。
本發(fā)明結(jié)合點(diǎn)段距離與點(diǎn)間歐式距離,給出了改進(jìn)點(diǎn)間距離的解決方案。為了將軌跡數(shù)據(jù)在時間維度與空間維度進(jìn)行統(tǒng)一度量,使得結(jié)果具有可解釋性。本算法改進(jìn)點(diǎn)間時間距離計算方法,提出了預(yù)測距離,預(yù)測距離就是時間小點(diǎn)的預(yù)測位置點(diǎn)到時間大點(diǎn)的歐式距離,這樣將時間度量轉(zhuǎn)化為空間度量。使用段間距離代替點(diǎn)間距離,將軌跡形狀納入計算要素,并通過參數(shù)調(diào)整,修正形狀因子,提高軌跡相似性度量算法的精度。段間距離由點(diǎn)間距離和形狀負(fù)因子的乘積計算而來,其中點(diǎn)間距離為改進(jìn)點(diǎn)間空間距離與預(yù)測距離的加權(quán)求和,形狀負(fù)因子由段間夾角變形計算而來。基于步驟三的段間距離矩陣,使用類似于DTW的遞歸計算的方法,計算兩條軌跡的累積距離。然后對輸出結(jié)果統(tǒng)一進(jìn)行累積距離,進(jìn)行歸一化處理。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
降低軌跡采樣方式對算法精確性的影響;將軌跡形狀納入軌跡相似性度量算法的考慮范圍,并且可以通過調(diào)節(jié)參數(shù),修正形狀因素對計算結(jié)果的影響;將時間維度與空間緯度的度量統(tǒng)一,加強(qiáng)時間與空間的聯(lián)系,并可通過調(diào)節(jié)參數(shù)改變各維度的權(quán)重,提高軌跡相似性度量算法的精確性。
附圖說明
圖1為本發(fā)明的總體流程圖;
圖2為本發(fā)明公開的點(diǎn)間空間距離的計算方法示意圖;
圖3為本發(fā)明公開的預(yù)測距離執(zhí)行過程示意圖;
圖4為本發(fā)明開的段間距離的計算示意圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施方式,進(jìn)一步闡明本發(fā)明。
如圖1所述,本發(fā)明的實(shí)施步驟如下:
步驟1:通過用戶手持GPS設(shè)備(手機(jī)、PAD等)采集用戶時空數(shù)據(jù)。并取其中兩條軌跡R和S。
步驟2:將經(jīng)緯度坐標(biāo)轉(zhuǎn)換為通用橫軸墨卡托投影坐標(biāo),并使用卡爾曼濾波算法對軌跡數(shù)據(jù)進(jìn)行濾波處理。
步驟3:結(jié)合點(diǎn)段距離和點(diǎn)間歐氏距離,計算R和S中每點(diǎn)間改進(jìn)空間距離。
步驟4:計算R和S中每點(diǎn)間預(yù)測距離
步驟5:使用步驟3和步驟4的結(jié)果和段間角距離,計算R和S中每段間距離。
步驟6:計算R和S的累積距離。
步驟7:將步驟6的結(jié)果進(jìn)行歸一化處理
在本例中,本發(fā)明首先需要收集用戶的時空數(shù)據(jù),然后取出其中兩條進(jìn)行計算。由于采集到的空間數(shù)據(jù)使用經(jīng)緯度坐標(biāo),所以要將其轉(zhuǎn)化為二維的通用橫軸墨卡托投影坐標(biāo)。由于采集設(shè)備存在一定誤差,因此需要使用卡爾曼濾波算法對軌跡進(jìn)行濾波處理。
求R與S的每個點(diǎn)的空間距離,圖1是計算改進(jìn)點(diǎn)間空間距離的示意圖,以R中的第i個軌跡點(diǎn)Pi(xi,yi)和S中的第j個軌跡點(diǎn)SPj(xj,yj)的空間距離計算過程為例。定義distps(Pi,SPj)為Pi和SPj的點(diǎn)段距離,定義distps(SPj,Pi)為SPj和Pi的點(diǎn)段距離,distps(Pi,SPj)≠distps(SPj,Pi),下面以distps(Pi,SPj)的計算為例。
首先求點(diǎn)SPj的替代軌跡段Rseg的兩個端點(diǎn)Pmid1(xmid1,ymid1)、Pmid2(xmid2,ymid2),其計算公式為:
然后計算點(diǎn)Pi到Rseg之間的最短距離,由點(diǎn)到段的最短距離計算公式[10]可知distps(Pi,Rseg)的計算公式如下:
其中r=(xmid2-xmid1)×(xi-xmid1)+(ymid2-ymid1)×(yi-ymid1);Lseg即為派生段的長度;dx=(xmid1+(xmid2-xmid1)×(r/Lseg));dy=(ymid1+(ymid2-ymid1)×(r/Lseg))。distps(SPj,Pi)的計算方式與distps(Pi,Rseg)相同。
此外,還存在兩點(diǎn)本身就很接近的情況,因此還需要求Pi到待SPj的歐幾里得距離disteuc(Pi,SPj),其計算公式為:
則Pi與SPj的改進(jìn)空間距離distp(Pi,SPj)的計算公式為:
distp(Pi,SPj)=(min{disteuc(Pi,SPj),distps(Pi,SPj)}+min{disteuc(Pi,SPj),distmin(SPj,Pi)})/2
求R與S的每個點(diǎn)的時間維度的距離--預(yù)測距離,圖2展示了預(yù)測距離執(zhí)行示意圖,其中,實(shí)心點(diǎn)表示取樣點(diǎn),空心點(diǎn)表示預(yù)測距離根據(jù)對應(yīng)點(diǎn)的時間進(jìn)行補(bǔ)正后預(yù)測用來計算距離的點(diǎn)。各個點(diǎn)之上的數(shù)字表示到達(dá)該點(diǎn)的時間。虛線表示對應(yīng)點(diǎn)之間的預(yù)測距離。
在計算R中的第i個軌跡點(diǎn)Pi(xi,yi,ti)和S中的第j個軌跡點(diǎn)SPj(xj,yj,tj)的預(yù)測距離時,首先比較點(diǎn)Pi與點(diǎn)SPj的時間先后關(guān)系,設(shè)時間大的點(diǎn)為A,時間小的點(diǎn)為B。其時間差Δt=tA-tB。
然后求點(diǎn)B的預(yù)測位置B′,假設(shè)B點(diǎn)為一個運(yùn)動點(diǎn),遍歷各個點(diǎn)的時間,尋找tB+Δt時B點(diǎn)處于哪兩個軌跡點(diǎn)之間,即其預(yù)測位置在哪里。假定在tB+Δt時B點(diǎn)處于第i-1個和第i個點(diǎn)之間,則對于B點(diǎn)的預(yù)測位置B′的空間坐標(biāo)(xB′,yB′)計算公式如下:
假定軌跡上任意兩點(diǎn)之間的運(yùn)動為勻速直線運(yùn)動,故可求出兩點(diǎn)之間運(yùn)動速度,其求解公式如下:
如果時間tB+Δt在B軌跡上不存在,則B′計算如下:
其中N為B點(diǎn)所在軌跡的點(diǎn)的總數(shù)目。
最后,最后A和B的預(yù)測距離計算公式如下:
distt(A,B)=dist(A,B′)
其中dist(A,B′)為A和B′的在空間坐標(biāo)上的歐幾里得距離。
求R與S的每個軌跡段之間的距離,圖3展示了段間距離的計算示意圖,點(diǎn)間距離既包括空間距離也包括時間距離,因此需要結(jié)合步步驟3和步驟4的計算結(jié)果,點(diǎn)Pi與SPj的時空距離distst(Pi,SPj)的計算公式為:
distst(Pi,SPj)=distp(Pi,SPj)+t×distt(Pi,SPj)
其中t為時間敏感度,t越大距離對時間維度越敏感,當(dāng)t=0時忽略時間維度。
將軌跡段間夾角引入計算。假定Si為軌跡R的第i段,SSj為軌跡S的第j段。以這兩段的距離計算為例。
首先求Si和SSj的角度θ,Si的兩個端點(diǎn)為Pi(xi,yi)和Pi+1(xi+1,yi+1),SSj的兩個端點(diǎn)為SPj(xj,yj)和SPj+1(xj+1,yj+1),其角度θ的計算公式為:
θ=|arctan2(yi+1-yi,xi+1-xi)-arctan2(yj+1-yj,xj+1-xj)|
段間的時空距離為段的兩端點(diǎn)的時空距離之和,因此Si與SSj的段間距離dists(Si,SSj)的計算公式為:
dists(Si,SSj)=f(θ)(distst(Pi,SPj)+distst(Pi+1,SPj+1))
其中f(θ)的計算公式為:
其中:ω為可調(diào)節(jié)參數(shù)形狀負(fù)因子,ω越大距離對形狀因素越不敏感,若無特殊需求取ω=1即可。distsmid(Si,SSj)為中點(diǎn)Si和SSj中點(diǎn)的時空距離,distmax(R,S)為軌跡R和軌跡S的任意兩點(diǎn)間最大時空距離。引入的原因?yàn)椋褐挥挟?dāng)段間時空距離較近時,形狀因素才更有意義,因此使用動態(tài)調(diào)整形狀因素的權(quán)重。
使用步驟4的結(jié)果求兩條軌跡的累積距離,累積距離的計算過程如下:
其中n為軌跡R的線段數(shù),m為軌跡S的線段數(shù),Head(R)表示軌跡R第一個段S1;Rest(R)表示軌跡R除S1后形成的新軌跡。
步驟4的輸出結(jié)果為累積距離,其與相似性呈反向關(guān)系,而且兩條不同軌跡的累積距離會有很大的差異,不能帶來直觀的對比。所以需要將累積距離進(jìn)行歸一化處理,即將累積距離歸一化到[0,1]之間,其中,0表示兩條軌跡完全無關(guān),1表示兩條軌跡完全相似。歸一化函數(shù)采用反正切型函數(shù),其計算公式如下式所示:
其中,D表示縮放因子,用來描述相似度對累積距離的敏感度,累積距離相同的情況下,當(dāng)D較大時相似度較高,當(dāng)D較小時相似度較低。
以上所述僅為本發(fā)明的實(shí)施例子而已,并不用于限制本發(fā)明。凡在本發(fā)明的原則之內(nèi),所作的等同替換,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。本發(fā)明未作詳細(xì)闡述的內(nèi)容屬于本專業(yè)領(lǐng)域技術(shù)人員公知的已有技術(shù)。