GPS轨迹聚类算法TRACLUS介绍(四)

线段聚类LINE SEGMENT CLUSTERING

这篇博客将说明TRACLUS算法的归组聚类阶段。首先,先讨论线段的密度属性;其次,介绍基于密度的聚类算法DBSCAN;然后,介绍计算线段聚类中代表性轨迹的方法;最后,介绍一中基于启发式的算法确定基于密度聚类算法的相关参数。

1、线段密度

1.1、距离函数回顾

距离函数是三种距离的加权和。首先,垂直距离主要测量从不同轨迹中提取的线段之间的位置差。其次,平行距离主要测量从同一轨迹中提取的线段之间的位置差。在一个轨迹中,两个相邻的线段之间的平行距离始终为零。第三,角度距离测量线段之间的方向差。
在这里插入图片描述

1.2、基于密度聚类的概念

通过下面六个定义总结基于密度的聚类。 D D D代表所有线段的集合。这里将DBSCAN中关于点的聚类扩展为关于线段的聚类。
ε \varepsilon ε:两个线段的距离函数的值。
M i n L n s MinLns MinLns:聚类集合的最小线段数量。
定义1:线段 L i ∈ D L_i\in{D} LiD ε \varepsilon ε领域
N ε ( L i ) = { L j ∈ D ∣ d i s t ( L i , L j ) ≤ ε } N_{\varepsilon}(L_i) = \{L_j\in{D}|dist(L_i,L_j)\le{\varepsilon}\} Nε(Li)={LjDdist(Li,Lj)ε}
定义2:当 ∣ N ε ( L i ) ∣ ≥ M i n L n s |N_{\varepsilon}(L_i)|\ge{MinLns} Nε(Li)MinLns时,线段 L i ∈ D L_i\in{D} LiD被称为核心线段
定义3:当 L i ∈ N ε ( L j ) L_i\in{N_{\varepsilon}(L_j)} LiNε(Lj) ∣ N ε ( L j ) ∣ ≥ M i n L n s |N_{\varepsilon}(L_j)|\ge{MinLns} Nε(Lj)MinLns时,线段 L i ∈ D L_i\in{D} LiD直接密度可达线段 L j ∈ D L_j\in{D} LjD
定义4:当存在一组线段 L j , L j − 1 , ⋯   , L i + 1 , L i ∈ D L_j,L_{j-1},\cdots,L_{i+1},L_i\in{D} Lj,Lj1,,Li+1,LiD,其中 L k L_k Lk是直接密度可达 L k + 1 L_{k+1} Lk+1,则线段 L i ∈ D L_i\in{D} LiD密度可达线段 L j ∈ D L_j\in{D} LjD
定义5:当存在一个线段 L k ∈ D L_k\in{D} LkD使得线段 L i L_i Li和线段 L j L_j Lj都密度可达 L k L_k Lk,则线段 L i ∈ D L_i\in{D} LiD密度连接线段 L j ∈ D L_j\in{D} LjD
定义6:当一个非空子集 C ⊆ D C\subseteq{D} CD满足以下两个条件:

  1. 连接性: ∀ L i , L j ∈ C \forall{L_i,L_j}\in{C} Li,LjC L i L_i Li密度连接 L j L_j Lj
  2. 最大化性: ∀ L i , L j ∈ D \forall{L_i,L_j}\in{D} Li,LjD,如果 L i ∈ C L_i\in{C} LiC L j L_j Lj密度可达 L i L_i Li,那么 L j ∈ C L_j\in{C} LjC

C C C被称作密度连接集
密度可达性是直接密度可达性的传递闭环,而这种关系是不对称的。只有核心线段是相互密度可达的。然而,密度连接性是一种对称的关系。
在这里插入图片描述
考虑上图。令 M i n L n s = 3 MinLns = 3 MinLns=3。粗线段表示核心线段。不规则椭圆表示 ε \varepsilon ε领域。基于上述定义:

  1. L 1 , L 2 , L 3 , L 4 , L_1,L_2,L_3,L_4, L1,L2,L3,L4, L 5 L_5 L5都是粗线段,即是核心线段;
  2. L 2 L_2 L2(或 L 3 L_3 L3)是直接密度可达 L 1 L_1 L1,因为二者都在 L 1 L_1 L1的椭圆内;
  3. L 6 L_6 L6是密度可达 L 1 L_1 L1,但 L 1 L_1 L1并不是密度可达 L 6 L_6 L6。因为 L 3 L_3 L3直接密度达于 L 1 L_1 L1,而 L 6 L_6 L6直接密度可达于 L 3 L_3 L3,因此 L 6 L_6 L6密度可达于 L 1 L_1 L1,但由于 L 6 L_6 L6不是核心线段,因此这种密度可达关系不具有对称性。
  4. L 1 , L 4 L_1,L_4 L1,L4 L 5 L_5 L5都是密度连接的。

2、聚类算法

这里介绍基于密度的线段聚类算法。给定一组线段集合 D D D,算法求解一组聚类 O O O,它要求指定两个参数 ε \varepsilon ε M i n L n s MinLns MinLns。这里一个聚类是指一个密度连接集。该算法与DBSCAN有很多相似的特征。
然而不像DBSCAN,并非所有的密度连接集都是一个线段聚类。需要考虑被提取线段的轨迹的数量,该数量值明显小于线段的数量。比如极端情况,所有的线段都是从一个轨迹中提取出来的。这样的聚类肯定是不合理的,因为它并不能解释足够数量轨迹的行为。这里,就需要校验轨迹的基数
一个聚类 C i C_i Ci中的分段轨迹集被表示为 P T R ( C i ) = { T R ( L j ) ∣ ∀ L j ∈ C i } PTR(C_i)=\{TR(L_j)|\forall{L_j\in{C_i}}\} PTR(Ci)={TR(Lj)LjCi}。这里, T R ( L j ) TR(L_j) TR(Lj)表示 L j L_j Lj被提取所在的轨迹。那么 ∣ P T R ( C i ) ∣ |PTR(C_i)| PTR(Ci)被称作聚类 C i C_i Ci的轨迹基数。
下图展示了线段聚类的算法流程。
在这里插入图片描述
一开始,假设所有的线段都没有被分类。随着算法计算,最终它们都将被分类成一个聚类或者噪声。这个算法包括三个步骤:

  1. 计算出每一个未被分类的线段 L L L ε \varepsilon ε领域 N ε ( L ) N_{\varepsilon}(L) Nε(L)(1-12行)。如果 L L L被确定为一个核心线段(7-10行),则执行第二步去扩大一个聚类(9行)。这个聚类当前只包含 N ε ( L ) N_{\varepsilon}(L) Nε(L)
  2. 计算一个核心线段的密度连接集(17-18行)。函数 E x p a n d C l u s t e r ( ) ExpandCluster() ExpandCluster()计算了直接密度可达的线段(19-21行)并添加到当前的聚类中(22-24行)。如果一个新添加的线段是未被分类的,那么它将被添加到队列 Q Q Q中进一步处理因为它可能会是一个核心线段(25-26行);否则,不会添加到队列 Q Q Q中。
  3. 检查每一个聚类的轨迹基数(13-16行)。如果它的轨迹基数小于阈值,则从关联的聚类中剔除出。

该算法可以很容易地进行扩展,以支持具有权重的轨迹。这个扩展在许多应用中都非常有用。例如,一个更强的飓风自然会有更高的权重 。为了实现这一点,我们需要修改确定一个 ε \varepsilon ε邻域的基数(即 ∣ N ε ( L ) ∣ |N_{\varepsilon}(L)| Nε(L))的方法。不是简单地计算线段的数量,而是通过综合计算线段的权重来计算加权计数。

3、一个聚类的代表性轨迹

一个聚类的代表性轨迹可以表达这个聚类中轨迹分段的整体行为。可以看作是一个线段聚类的数据模型。下图说明了如何生成一个代表性轨迹。
在这里插入图片描述
一个代表性轨迹是一组点的队列 R T R i = p 1 p 2 p 3 ⋯ p j ⋯ p l e n i ( 1 ≤ i ≤ n u m c l u s ) RTR_i=p_1p_2p_3\cdots{p_j}\cdots{p_{len_i}}(1\le{i}\le{num_{clus}}) RTRi=p1p2p3pjpleni(1inumclus)。通过一种扫描线的方法可以确定这些点。

  1. 用一条垂线沿着线段聚类主轴方向进行扫描,可以计算出与这条扫描线(即垂线)相交的线段的数量。
  2. 只有当扫描线经过一个线段的起点或终点时,这个数量才会被考虑计算。
  3. 如果这个数字大于或等于 M i n L n s MinLns MinLns时,则计算聚类中的线段与扫描线的交点相对于主轴的平均值;否则,不考虑这些点(例如,第5和第6时的扫描线的位置情况就不考虑)。
  4. 此外,如果一个上一个点的位置太近(例如,第3时的位置),将忽略该点以平滑代表性轨迹。
    为了计算出一个线段聚类的主轴,下面定义了平均方向向量
    定义:假设一组向量 V = { v 1 ⃗ , v 2 ⃗ , v 3 ⃗ , ⋯   , v n ⃗ } V=\{\vec{v_1},\vec{v_2},\vec{v_3},\cdots,\vec{v_n}\} V={v1 ,v2 ,v3 ,,vn }。那么这个向量集合的平均方向向量为:
    在这里插入图片描述
    其中, ∣ V ∣ |V| V V V V的基数,即集合的变量总数量。
    有了平均方向向量,就要计算相对于它的交点的平均坐标。为了便于计算,旋转坐标轴以使 X X X轴平行于平均方向向量。旋转矩阵计算可以使用如下公式:
    在这里插入图片描述
    其中,角度 ϕ \phi ϕ可以通过计算平均方向向量与单位向量 x ^ \hat{x} x^的内积得到。
    在这里插入图片描述
    在计算得出 X ′ Y ′ X^{'}Y^{'} XY坐标系下的平均值后,再转换回 X Y XY XY坐标系下的值。
    在这里插入图片描述
    上图描述了计算代表性轨迹的方法:
    首先,计算平均方向向量和暂时旋转坐标轴(1-2行)。
    然后,根据旋转坐标系下的坐标对起点和终点排序(3-4行)。
    最后,在按照排序顺序扫描起点和终点时,计算出线段的数量,并计算出扫描线与这些线段的交点的平均值(5-12行)。

4、关于参数 ϵ \epsilon ϵ M i n L n s MinLns MinLns选取的启发式方法

在聚类过程中,有两个重要参数会影响到聚类结果,距离阈值 ϵ \epsilon ϵ和每个簇中的线段数量阈值 M i n L n s MinLns MinLns
首先讨论参数 ϵ \epsilon ϵ的选取方法,这里采用熵理论解决这个问题。在信息理论中,熵指的是一个有确定概率分布的事件的不确定性。如果所有输出都一样,那么熵最大。启发式方法可以基于下面这样的观察来讨论。在最差的聚类结果中, ∣ N ϵ ( L ) ∣ |N_\epsilon{(L)}| Nϵ(L)趋于统一。也就是说,当 ϵ \epsilon ϵ很小时,那么所有线段的 ∣ N ϵ ( L ) ∣ |N_\epsilon{(L)}| Nϵ(L)将等于1;当 ϵ \epsilon ϵ很大时,那么所有线段的 ∣ N ϵ ( L ) ∣ |N_\epsilon{(L)}| Nϵ(L)等于 n u m l n num_{ln} numln(线段总数量)。这样,熵就是最大值。相对的,在一个好的聚类中,熵应该更小。
用下面公司来表达熵,依据公式确定参数 ϵ \epsilon ϵ使得 H ( X ) H(X) H(X)最小。最优解可以通过一种模拟退火算法得到 H ( X ) = ∑ i = 1 n p ( x i ) l o g 2 1 p ( x i ) = − ∑ i = 1 n p ( x i ) l o g 2 p ( x i ) H(X)=\sum_{i=1}^np(x_i)log_2{1\over{p(x_i)}}=-\sum_{i=1}^np(x_i)log_2{p(x_i)} H(X)=i=1np(xi)log2p(xi)1=i=1np(xi)log2p(xi),其中 p ( x i ) = ∣ N ϵ ( x i ) ∣ ∑ j = 1 n ∣ N ϵ ( x j ) ∣ p(x_i)={|N_\epsilon{(x_i)}|\over{\sum_{j=1}^n|N_\epsilon(x_j)|}} p(xi)=j=1nNϵ(xj)Nϵ(xi) n = n u m l n n=num_{ln} n=numln
接下来,讨论参数 M i n L n s MinLns MinLns的选取方法。当确定了最优 ϵ \epsilon ϵ后,计算每个线段的 ∣ N ϵ ( L ) ∣ |N_\epsilon{(L)}| Nϵ(L),并求解平均值 a v g ∣ N ϵ ( L ) ∣ avg_{|N_\epsilon(L)|} avgNϵ(L)。这样选取 M i n L n s = a v g ∣ N ϵ ( L ) ∣ + 1 ∽ 3 MinLns = avg_{|N_\epsilon(L)|} + 1\backsim3 MinLns=avgNϵ(L)+13,这样做是因为 M i n L n s MinLns MinLns要略大于 a v g ∣ N ϵ ( L ) ∣ avg_{|N_\epsilon(L)|} avgNϵ(L)以发现更有意义的聚类簇

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值