本文---基于改进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