LCSS最長公共子序列算法

0、論文基本介紹以及相關內容

  • 分析移動用戶位置的類似性,提取移動用戶的類似路徑在出行路徑預測、興趣區域發現、軌跡聚類、個性化路徑推薦等領域具備普遍的應用。
  • 重點:利用移動用戶定位數據找到合適軌跡的表示方法,如何高效計算移動用戶軌跡間的類似性成爲熱點。
本文---基於改進LCSS的移動用戶軌跡類似性查詢算法研究:
(1)移動用戶原始軌跡數據->抽取位置序列->映射爲具備時間和地理位置信息的序列。
解決移動用戶軌跡數據的稀疏性致使類似度算法效率低下的問題。
(2)FP-tree頻繁模式樹的加權頻繁模式挖掘移動用戶軌跡的頻繁序列。
解決因爲用戶軌跡隨機性和繁雜性而致使的算法效率低下的問題。
(3)經過改進LCSS算法
結合時間和地理因素衡量用戶軌跡的類似性。
  • 衡量類似度的方法有不少:歐式距離,動態時間規劃DTW,編輯距離EDR,最長公共子序列,最大時間出現法MCT,餘弦類似性,Hausdorff距離。其中基於軌跡數據衡量類似度的算法有三種:歐式距離,DTW算法,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})$$算法

  • 歐式距離的缺點:容易受到噪音的影響,尤爲是現實中兩個移動用戶的軌跡在時間和個數上都存在很大差別(缺失,異常),所以須要提早對移動用戶的軌跡進行預處理才能使用歐氏距離。瀏覽器

二、動態時間規劃DTW算法(關鍵輸入:兩個時間序列,包含時間、位置)

  • 動態時間規劃採用重複點以前的記錄點填補對應空缺的方式,以求出的最小距離最爲軌跡的類似度量,解決了歐式距離對採樣過於苛刻的要求。假設有兩個軌跡空間域的離散採樣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)$$

三、最長公共子序列LCSS(兩個時間序列,包含:時間,位置)

  • 來源: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>) )

四、改進的LCSS算法(關鍵輸入:兩個時間序列,包含時間、位置)

  • 改進LCSS的三個步驟:
    1. 抽取位置序列:將位置序列映射爲具備時間和地理位置信息的序列,以發生時間的序列表示移動用戶的軌跡。
    2. 採用FP-Growth算法挖掘移動用戶軌跡的頻繁序列。
    3. 結合時間和地理因素,採用改進LCSS方法衡量用戶軌跡的類似性

4.1 抽取位置序列.net

  • 移動用戶時間序列爲: $$Tr_{i} = {(L_{1}, t_{1}), (L_{2}, t_{2}), ..., (L_{i}, t_{i}), ..., (L_{n}, t_{n})}$$ 其中$(L_{i}, t_{i})$表示用戶出如今某個基站的位置$L_{i}$對應的時間$t_{i}$。
  • 移動用戶軌跡爲: $$Tr_{i} = {(L_{1}, L_{2}, t_{1}, t_{2}), (L_{2}, L_{3}, t_{2}, t_{3}), ..., (L_{i}, L_{i+1}, t_{i}, t_{i+1}), ..., (L_{n-1}, L_{n}, t_{n-1}, t_{n})}$$ 其中序列$(L_{1}, L_{2}, t_{1}, t_{2})$表示移動用戶在時刻$t_{1}$出如今基站$L_{1}$,而後在時刻$t_{2}$離開基站$L_{1}$前往基站$L_{2}$。

4.2 採用FP-Growth算法挖掘移動用戶軌跡的頻繁序列code

  • 移動軌跡的數據的頻繁模式定義:$L_{i} \to L_{j}$
  • 移動用戶頻繁軌跡提取是從移動用戶移動軌跡數據集中提取支持度大於最小支持度閾值的集合。移動用戶頻繁模式反映了移動用戶羣體在移動行爲上具備相同特徵或是規律。
  • 經過引入閉合頻繁項集保證了移動用戶行爲信息量最全面且數據規模最小。具體過程以下:
    1. 首先,以基站平均逗留時間做爲項目權重,以各項目count值降序依次爲頭結點和其餘節點,生成條件模式基;
    2. 而後,採用條件模式基構造對應的加權條件FP樹;
    3. 最後按照設定加權支持度的閾值判斷相應的頻繁模式。

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。

    • 用戶重合度:指一個網站內的多少訪問者同時瀏覽器了其餘網站。即同時訪問兩個網站的用戶中有多大比例是重合的。假設A和B分別爲須要計算用戶重合度的2個網站的獨立用戶數,則重合度計算公式爲: $$用戶重合度 = A \cap B / A \cup B *100%$$
  • 結合時間因素,改進的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類似度算法計算用戶軌跡的類似度,所以算法模型過程相對比較複雜。

參考: 一、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

相關文章
相關標籤/搜索