本文---基於改進LCSS的移動用戶軌跡類似性查詢算法研究: (1)移動用戶原始軌跡數據->抽取位置序列->映射爲具備時間和地理位置信息的序列。 解決移動用戶軌跡數據的稀疏性致使類似度算法效率低下的問題。 (2)FP-tree頻繁模式樹的加權頻繁模式挖掘移動用戶軌跡的頻繁序列。 解決因爲用戶軌跡隨機性和繁雜性而致使的算法效率低下的問題。 (3)經過改進LCSS算法 結合時間和地理因素衡量用戶軌跡的類似性。
歐氏距離是指經過計算每一個時間點上軌跡所對應的兩個點的歐式距離,而後再對全部點的歐式距離進行綜合處理,包括取平均值、求和、取中位數等。 $$dist(p_{k}^{A}, p_{k}^{B}) = \sqrt{(p_{k,x}^{A} - p_{k,x}^{B})^{2} + (p_{k,y}^{A} - p_{k,y}^{B})^{2}}$$ 其中$dist(p_{k}^{A}, p_{k}^{B})$表示用戶A和B在某時間段內的距離,$p_{k}^{A}, p_{k}^{B}$表示A和B在k時刻的位置,$p_{k,x}^{A} - p_{k,x}^{B}$表示用戶A和用戶B在x維度的位置,同理,$p_{k,y}^{A} - p_{k,y}^{B}$表示用戶A和B在y維度上的位置。所以歐式距離爲: $$EU = \sum\limits_{k=1}^{n} dist(p_{k}^{A}, p_{k}^{B})$$算法
歐式距離的缺點:容易受到噪音的影響,尤爲是現實中兩個移動用戶的軌跡在時間和個數上都存在很大差別(缺失,異常),所以須要提早對移動用戶的軌跡進行預處理才能使用歐氏距離。瀏覽器
P=<p_{1}, p_{2}, ..., p_{m}>
和Q=<q_{1}, q_{2}, ..., q_{m}>
,基於DTW對兩條軌跡的採樣點數量沒有任何的要求,那麼兩條軌跡之間每兩個點的類似度公式爲: $$D(i, j) = ||p_{i}, q_{j}|| + \min {D{i-1,j}, D{i,j-1}, D{i-1, j-1}}$$ 其中$||.||$爲兩點座標的二範數,也就是兩點之間的歐式距離。$D(i,j)$通常也採用歐氏距離,或者其餘路徑函數也行。所以兩條軌跡之間的類似度爲: $$DTW(P,Q) = f(m,n)$$來源:DTW和歐式距離對軌跡的個別點差別性很是敏感,若是兩個時間序列在大多數時間段具備類似的形態,僅僅在很短的時間具備必定的差別,(即很小的差別也會對類似度衡量產生影響)歐式距離和DTW沒法準確衡量這兩個時間序列的類似度。LCSS能處理這種問題。markdown
原理:假設如今有兩個長度分別爲n何m的時間序列數據A和B,那麼最長公共子序列的長度爲: $$ LCSS(A,B) = \left{ \begin{array}{l} 0 & \textrm{if $A = \varnothing \ or \ B = \varnothing$}\ 1+LCSS(a_{t-1}, b_{i-1}) & \textrm{if $dist(a_{t}, b_{i}) < \gamma$}\ \max(LCSS(a_{t-1}, b_{i}), LCSS(a_{t}, b_{i-1})) & \textrm{otherwise} \end{array} \right. $$ 其中,$\gamma$爲一個成員類似閾值,$t=1,2,...,n$;$i=1,2,...,m$。基於上述公式,最長公共子序列的類似度公式爲: $$D_{LCSS} = 1 - (LCSS(A,B)) / min(len_{A}, len_{B})$$函數
LCSS算法能夠計算兩個子序列之間的最長公共子序列。(子序列是有序的,但不必定是連續的,做用對象是序列)網站
例如:序列X= <B,C,D,B>是序列Y = <A,B,C,B,D,A,B>的子序列,對應的下標序列爲<2,3,5,7>。spa
L(<AGGTAB>, <GXTXAYB>) = 1 + L(<AGGTA>, <GXTXAY>)
L(<ABCDGH>, <AEDFHR>) = MAX ( L(<ABCDG>, <AEDFHR>), L(<ABCDGH>, <AEDFH>) )
4.1 抽取位置序列.net
4.2 採用FP-Growth算法挖掘移動用戶軌跡的頻繁序列code
4.3 基於改進LCSS的移動用戶軌跡類似性查詢算法對象
TP樹得到用戶常駐區域模式後,以時間係數來反映全部用戶在鄰近時間相同地理位置的比例。時間類似性係數公式爲: $$COL = \frac{\sum\limits_{i=1}^{n(u)} \sum\limits_{j=1}^{n(v)} (\Delta T - |T_{i}(u) - T_{j}(v)|) \delta (L_{i}(u), L_{j}(v))}{\sum\limits_{i=1}^{n(u)} \sum\limits_{j=1}^{n(v)} (\Delta T - |T_{i}(u) - T_{j}(v)|)}$$blog
其中,$\Delta T$爲精度(通常設爲1個小時),$T_{i}(u)$表示移動用戶u在某一個時間精度內到達某一個基站$L_{i}(u)$的時刻,$T_{j}(v)$表示移動用戶v在某一個時間精度內到達某一個基站$L_{j}(v)$的時刻,$\delta (L_{i}(u), L_{j}(v))$是一個重合性公式,當兩個用戶的基站重合時,值爲1,不然爲0。
結合時間因素,改進的LCSS類似度算法爲: $$D_{LCSS} = \frac{1 - (LCSS(u,v))}{\min(len_{u}, len_{v})} \times COL$$ 即 $$D_{LCSS} = \frac{1 - (LCSS(u,v))}{\min(len_{u}, len_{v})} \times \frac{\sum\limits_{i=1}^{n(u)} \sum\limits_{j=1}^{n(v)} (\Delta T - |T_{i}(u) - T_{j}(v)|) \delta (L_{i}(u), L_{j}(v))}{\sum\limits_{i=1}^{n(u)} \sum\limits_{j=1}^{n(v)} (\Delta T - |T_{i}(u) - T_{j}(v)|)}$$ 其中,公式的第一部分表示用戶u和用戶v一天的最長公共子序列,第二部分表示在每個時間精度下,兩位用戶在鄰近時間相同的地理位置的比例。
4.4 改進LCSS算法與LCSS算法的優缺點
參考: 一、LCSS論文:http://www.cs.bu.edu/groups/dblab/pub_pdfs/icde02.pdf 二、基於改進LCSS的移動用戶軌跡類似性查詢算法研究:https://www.sohu.com/a/133750116_354885 三、簡書:LCSS實現:https://www.jianshu.com/p/d7b8db280a01 四、博客之用戶重合度:https://blog.csdn.net/zyy160alex5/article/details/8791864