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

相关文章
相关标签/搜索