标题:Trajectory Clustering: A Partition-and-Group Framework
作者:Jae-Gil Lee, Jiawei Han, Kyu-Young Whang
机构:SIGMOD '07: 2007 年 ACM SIGMOD 国际数据管理会议论文集
引用:Lee J G, Han J, Whang K Y. Trajectory clustering: a partition-and-group framework[C]//Proceedings of the 2007 ACM SIGMOD international conference on Management of data. 2007: 593-604.
研究问题Research Question
科学问题Science Question
研究核心Core of the research
基于分区和分组架构(将轨迹划分为一组线段,然后将相似的轨迹聚为一个类)的轨迹聚类算法,整体过程如下图:
首先,每个轨迹被划分成一组线段;
其次,根据距离度量,彼此接近的线段被分组成一个簇;
最后,为每个簇生成一个有代表性的轨迹;
研究意义Research significance
考虑下图中的五个轨迹,可以发现,在虚线矩形中五条轨迹有一个共同的行为(用粗箭头表示)。然而,如果把这些轨迹以一个整体进行聚类,则无法发现其共同的行为,因为它们向完全不同的方向移动,因此将错过一些有价值的信息。
本文提出的分区与分组架构,是将一条轨迹分割成一组线段,然后将相似的线段进行分组,这样可以从一个轨迹集中发现共同的子轨迹。
共同子轨迹的实际应用价值 :
飓风的登陆预报
气象学家正试图提高预测飓风登陆地点和时间的能力。准确的登陆位置预测是至关重要的,因为它对减少飓风造成的损失至关重要。
海岸线附近(即登陆时)或海上(即登陆前)飓风的常见行为可以帮助气象学家提高飓风登陆预测的准确性,而飓风在这一阶段的常见行为就是它们的子轨迹。
道路和交通对动物运动的影响
动物学家正在调查不同程度的交通状况对动物的运动、分布和对栖息地的使用的影响。他们主要测量道路和动物之间的平均距离,他们会对交通速度不同的道路附近动物的常见行为感兴趣。因此,发现共同的子轨迹有助于揭示道路和交通对动物的影响。
考虑下图中的动物栖息地和道路(粗线代表道路,且它们有着不同的交通速率)。Wisdom等人探讨了骡鹿和麋鹿与不同交通速率的道路之间的空间格局。更具体地说,其中一个目标是评估骡鹿和麋鹿避开道路附近地区的程度(这些区域用实心矩形表示)。因此,本文提出的框架对这类研究确实很有用。
有人提出,可以修剪轨迹中无用的部分,而只保留有价值的部分,再使用传统的聚类算法——将轨迹作为一个整体进行聚类。然而,与本文提出的分区和分组框架相比,上述方案有两个主要的缺点:首先,难以确定轨迹的哪一部分是无用的。其次,修剪轨迹中“无用的”部分,使我们无法发现意外的聚类结果。
现有算法的不足Shortcomings of existing algorithm
现有算法将相似的轨迹作为一个整体进行分组,从而发现相似的轨迹,但可能会错过常见的子轨迹。
结论Conclusion
基于分区和分组架构,开发了一轨迹聚类算法,该算法包括以下两个阶段:
分区阶段 ——每个轨迹都被最优地划分为一组线段,这些线段将被提供给下一阶段
本文提出了一基于最小描述长度( M D L MDL M D L )原则的形式化轨迹划分算法。
分组阶段 ——将类似的线段分组为一个集群
本文提出了一基于密度的线段聚类算法。
基于密度的聚类方法是最适合用于线段的,因为它们可以发现任意形状的聚类,并可以过滤出噪声。
线段簇通常是任意形状的,且轨迹数据库通常包含大量的噪声(即异常值)。
结果表明,从真实轨迹数据中发现了常见的子轨迹。
理论与方法Theory and Method
距离函数
三个组成部分:垂直距离d ⊥ d_{⊥} d ⊥ 、平行距离d k d_{k} d k 和角距离d θ d_{\theta} d θ
假设:L i = s i e i L_{i} = s_{i}e_{i} L i = s i e i 和 L j = s j e j L_{j} = s_{j}e_{j} L j = s j e j 为两条 d d d 维的线段,其中, s i , e i , s j 和 e j s_{i},\ e_{i},\ s_{j}和e_{j} s i , e i , s j 和 e j 为d d d 维的点,且在不失一般性的前提下,令L i ≥ L j L_{i}≥L_{j} L i ≥ L j
垂直距离 d ⊥ ( L i , L j ) = l ⊥ 1 2 + l ⊥ 2 2 l ⊥ 1 + l ⊥ 2 d_{\perp}\left(L_{i}, L_{j}\right)=\frac{l_{\perp 1}^{2}+l_{\perp 2}^{2}}{l_{\perp 1}+l_{\perp 2}} d ⊥ ( L i , L j ) = l ⊥ 1 + l ⊥ 2 l ⊥ 1 2 + l ⊥ 2 2 (1)
假设点 s j 和 e j s_{j}和e_{j} s j 和 e j 在 L i L_{i} L i 上的投影点分别为 p s 和 p e p_{s}和p_{e} p s 和 p e , l ⊥ 1 l_{⊥1} l ⊥1 为 s j s_{j} s j 和 p s p_{s} p s 之间的欧氏距离,同理 l ⊥ 2 l_{⊥2} l ⊥2 是 e j e_{j} e j 和 p e p_{e} p e 之间的欧式距离
平行距离 d ∥ ( L i , L j ) = MIN ( l ∥ 1 , l ∥ 2 ) d_{\|}\left(L_{i}, L_{j}\right)=\operatorname{MIN}\left(l_{\| 1}, l_{\| 2}\right) d ∥ ( L i , L j ) = MIN ( l ∥1 , l ∥2 ) (2) 假设点 s j s_{j} s j 和 e j e_{j} e j 在 L i L_{i} L i 上的投影点分别为 p s p_{s} p s 和 p e p_{e} p e 。 l ∥ 1 l_{\| 1} l ∥1 为p s p_{s} p s 到s i s_{i} s i 和e i e_{i} e i 的欧氏距离的最小值。同理 l ∥ 2 l_{\| 2} l ∥2 为 p e p_{e} p e 到 s i s_{i} s i 和 e i e_{i} e i 的欧氏距离的最小值
平行距离被设计为对检测误差(尤其是断线段)是鲁棒的。如果使用 M A X ( l ∥ 1 , l ∥ 2 ) MAX(l_{\| 1},l_{\| 2}) M A X ( l ∥1 , l ∥2 ) 而不是 M I N ( l ∥ 1 , l ∥ 2 ) MIN(l_{\| 1},l_{\| 2}) M I N ( l ∥1 , l ∥2 ) ,平行距离可能会受到折线段的显著干扰
角距离 d θ ( L i , L j ) = { ∥ L j ∥ × sin ( θ ) , if 0 ∘ ≤ θ < 9 0 ∘ ∥ L j ∥ , if 9 0 ∘ ≤ θ ≤ 18 0 ∘ d_{\theta}\left(L_{i}, L_{j}\right)= \begin{cases}\left\|L_{j}\right\| \times \sin (\theta), & \text { if } 0^{\circ} \leq \theta<90^{\circ} \\ \left\|L_{j}\right\|, & \text { if } 90^{\circ} \leq \theta \leq 180^{\circ}\end{cases} d θ ( L i , L j ) = { ∥ L j ∥ × sin ( θ ) , ∥ L j ∥ , if 0 ∘ ≤ θ < 9 0 ∘ if 9 0 ∘ ≤ θ ≤ 18 0 ∘ (3),其中 ∥ L j ∥ \| L_{j}\| ∥ L j ∥ 为 L j L_{j} L j 的长度, θ \theta θ 角为 L i 和 L j L_{i}和L_{j} L i 和 L j 之间较小的那个角
角度距离是针对有方向的轨迹而设计的。当方向差异显著时,整个长度将对角距离有贡献,即会对夹角距离产生影响。如果处理的是没有方向的轨迹,则角距离被简单地定义为 ∥ k j ∥ × s i n ( θ ) \|k_{j}\|×sin(\theta) ∥ k j ∥ × s in ( θ )
向量表示
用a b → \overrightarrow{a b} ab 表示 a , b a,\ b a , b 两点构成的向量
公式(1)和(2)中的投影点可以用公式 p s = s i + u 1 ⋅ s i e i → , p e = s i + u 2 ⋅ s i e i → p_{s}=s_{i}+u_{1} \cdot \overrightarrow{s_{i} e_{i}}, \quad p_{e}=s_{i}+u_{2} \cdot \overrightarrow{s_{i} e_{i}} p s = s i + u 1 ⋅ s i e i , p e = s i + u 2 ⋅ s i e i ,
其中u 1 = s i s j → ⋅ s i e i → ∥ s i e i → ∥ 2 , u 2 = s i e j → ⋅ s i e i → ∥ s i e i → ∥ 2 u_{1}=\frac{\overrightarrow{s_{i} s_{j}} \cdot \overrightarrow{s_{i} e_{i}}}{\left\|\overrightarrow{s_{i} e_{i}}\right\|^{2}}, \quad u_{2}=\frac{\overrightarrow{s_{i} e_{j}} \cdot \overrightarrow{s_{i} e_{i}}}{\left\|\overrightarrow{s_{i} e_{i}}\right\|^{2}} u 1 = ∥ s i e i ∥ 2 s i s j ⋅ s i e i , u 2 = ∥ s i e i ∥ 2 s i e j ⋅ s i e i 计算公式(3)中的角度 θ \theta θ 可以用公式 cos ( θ ) = s i e i → ⋅ s j e j → ∥ s i e i → ∥ ∥ s j e j → ∥ \cos (\theta)=\frac{\overrightarrow{s_{i} e_{i}} \cdot \overrightarrow{s_{j} e_{j}}}{\left\|\overrightarrow{s_{i} e_{i}}\right\|\left\|\overrightarrow{s_{j} e_{j}}\right\|} cos ( θ ) = ∥ s i e i ∥ ∥ s j e j ∥ s i e i ⋅ s j e j 计算
综上,两线段之间的距离定义为 ( L i , L j ) = w ⊥ ⋅ d ⊥ ( L i , L j ) + w ∥ ⋅ d ∥ ( L i , L j ) + w θ ⋅ d θ ( L i , L j ) (L_{i},L_{j}) = w_{⊥}·d_{⊥}(L_{i},\ L_{j})+w_{\|}·d_{\|}(L_{i},\ L_{j})+w_{\theta}·d_{\theta}(L_{i},\ L_{j}) ( L i , L j ) = w ⊥ ⋅ d ⊥ ( L i , L j ) + w ∥ ⋅ d ∥ ( L i , L j ) + w θ ⋅ d θ ( L i , L j )
其中,权重 w k 和 w θ w_{k}和w_{\theta} w k 和 w θ 根据实际应用而定,其值平均设置为1
轨迹划分
理想属性
轨迹行为中快速变化的点,称之为特征点。
轨迹划分过程:首先,从轨迹T R i = p 1 p 2 p 3 ⋯ p j ⋯ p l e n i T R_{i}=p_{1} p_{2} p_{3} \cdots p_{j} \cdots p_{l e n_{i}} T R i = p 1 p 2 p 3 ⋯ p j ⋯ p l e n i 中确定一组特征点{ p c 1 , p c 2 , p c 3 , ⋯ , p c pari } \left\{p_{c_{1}}, p_{c_{2}}, p_{c_{3}}, \cdots, p_{c_{\text {pari }}}\right\} { p c 1 , p c 2 , p c 3 , ⋯ , p c pari } ( c 1 < c 2 < c 3 < ⋅ ⋅ ⋅ < c p a r i ) (c_{1}<c_{2}<c_{3}<···<c_{par_{i}}) ( c 1 < c 2 < c 3 < ⋅⋅⋅ < c p a r i ) 。然后,对轨迹 T R i TR_{i} T R i 的每个特征点进行分割,每个分割由两个连续特征点之间的一条线段表示,即 T R i TR_{i} T R i 被划分为一组(p a r i par_{i} p a r i −1)线段{ p c 1 p c 2 , p c 2 p c 3 , ⋯ , p c p a r i − 1 p c p a r i } \left\{p_{c_{1}} p_{c_{2}}, p_{c_{2}} p_{c_{3}}, \cdots, p_{c_{p a r_{i}}-1} p_{c_{p a r_{i}}}\right\} { p c 1 p c 2 , p c 2 p c 3 , ⋯ , p c p a r i − 1 p c p a r i } ,这样的线段称为轨迹划分
轨迹的最优划分应该具有两个理想的特性——精确性和简洁性,精确性意味着轨迹与其一组轨迹分区之间的差异应该尽可能小,简洁性意味着轨迹分区的数量应该尽可能少。
实验发现,实现精确性要求每一处轨迹分区其行为是迅速变化的。否则,就无法达到精确性。如在上图中若没有选择 p c 2 p_{c2} p c 2 ,由于 T R i TR_{i} T R i 和 p c 1 p c 3 p_{c1}\ p_{c3} p c 1 p c 3 之间的差异很大,精度会降低。
精确性和简洁性是相互矛盾的。例如,如果选择一个轨迹中的所有点都作为特征点(即 p a r i = l e n i par_{i}=len_{i} p a r i = l e n i ),则精度是最大化的,但简洁性却是最小的。相比之下,如果只选择轨迹的起点和结束点作为特征点(即 p a r i = 2 par_{i}=2 p a r i = 2 ),简洁性是最大化的,但精度却是最小化的。因此,需要在这两个属性之间找到一个最优的权衡。
使用MDL原理进行形式化
M D L MDL M D L 由两个部分组成: L ( H ) 和 L ( D ∣ H ) L(H)和L(D|H) L ( H ) 和 L ( D ∣ H ) 。其中, H H H 表示假设, D D D 表示数据。
H 和 D H和D H 和 D 非正式地表述如下:“L ( H ) L(H) L ( H ) 是假设描述的长度,以位表示;L ( D ∣ H ) L(D|H) L ( D ∣ H ) 是根据假设编码数据描述时的长度,以位表示。”用来解释D D D 的最佳假设H H H 是将L ( H ) 和 L ( D ∣ H ) L(H)和L(D|H) L ( H ) 和 L ( D ∣ H ) 的和最小化的假设。
在轨迹划分问题中,一个假设对应于一组特定的轨迹划分。因此,找到最优划分可以转化为使用M D L MDL M D L 原则找到最佳假设。
假设一个轨迹 T R i = p 1 p 2 p 3 ⋅ ⋅ ⋅ p j ⋅ ⋅ ⋅ p l e n i TR_{i}=p_{1}p_{2}p_{3}···p_{j}···p_{len_{i}} T R i = p 1 p 2 p 3 ⋅⋅⋅ p j ⋅⋅⋅ p l e n i 和一组特征点 = p c 1 、 p c 2 、 p c 3 、 ⋅ ⋅ ⋅ 、 p c p a r i ={p_{c1}、p_{c2}、p_{c3}、···、p_{c_{par_{i}}}} = p c 1 、 p c 2 、 p c 3 、 ⋅⋅⋅ 、 p c p a r i ,有如下两个公式:
L ( H ) = ∑ j = 1 p a r i − 1 log 2 ( len ( p c j p c j + 1 ) ) L(H)=\sum_{j=1}^{p a r_{i}-1} \log _{2}\left(\operatorname{len}\left(p_{c_{j}} p_{c_{j+1}}\right)\right) L ( H ) = ∑ j = 1 p a r i − 1 log 2 ( len ( p c j p c j + 1 ) ) (6) 其中,l e n ( p c j p c j + 1 ) len(p_{c_{j}}p_{c_{j+1}}) l e n ( p c j p c j + 1 ) 表示线段 p c j p c j + 1 p_{c_{j}}p_{c_{j+1}} p c j p c j + 1 的长度,即 p c j p_{c_{j}} p c j 与 p c j + 1 p_{c_{j+1}} p c j + 1 之间的欧氏距离。因此,L ( H ) L(H) L ( H ) 表示所有轨迹分区的长度之和。
L ( D ∣ H ) = ∑ j = 1 p a r i − 1 ∑ k = c j c j + 1 − 1 { log 2 ( d ⊥ ( p c j p c j + 1 , p k p k + 1 ) ) + log 2 ( d θ ( p c j p c j + 1 , p k p k + 1 ) ) } L(D \mid H)=\sum_{j=1}^{p a r_{i}-1} \sum_{k=c_{j}}^{c_{j+1}-1}\left\{\log _{2}\left(d_{\perp}\left(p_{c_{j}} p_{c_{j+1}}, p_{k} p_{k+1}\right)\right)+\log _{2}\left(d_{\theta}\left(p_{c_{j}} p_{c_{j+1}}, p_{k} p_{k+1}\right)\right)\}\right. L ( D ∣ H ) = ∑ j = 1 p a r i − 1 ∑ k = c j c j + 1 − 1 { log 2 ( d ⊥ ( p c j p c j + 1 , p k p k + 1 ) ) + log 2 ( d θ ( p c j p c j + 1 , p k p k + 1 ) ) } (7)L ( D ∣ H ) L(D|H) L ( D ∣ H ) 表示一段轨迹与其所属轨迹分区之间的差值之和,即对于每个轨迹分区p c j p c j + 1 p_{c_{j}}p_{c_{j+1}} p c j p c j + 1 ,将该轨迹分区与属于该分区的线段p k p k + 1 ( c j ≤ k ≤ c j + 1 − 1 ) p_{k}p_{k+1}(c_{j}≤k≤c_{j+1}−1) p k p k + 1 ( c j ≤ k ≤ c j + 1 − 1 ) 之间的差异相加。
使用垂直距离和角度距离的和来衡量差异。不考虑平行距离是因为一个轨迹包含了它的轨迹分区
长度和距离都是实数。在实践中,对实数 x x x 进行编码,假设其精度为δ δ δ ,以便编码的数字x δ x_{δ} x δ 满足∣ x − x δ ∣ < δ |x−x_{δ}|<δ ∣ x − x δ ∣ < δ 。如果 x x x 很大且x ≈ x δ x≈x_{δ} x ≈ x δ ,则L ( x ) = l o g 2 x − l o g 2 δ L(x)=log_{2}x−log_{2}δ L ( x ) = l o g 2 x − l o g 2 δ 。在本文,将δ δ δ 设为1。因此,L ( x ) L(x) L ( x ) 仅简单地等于l o g 2 x log_{2}x l o g 2 x 。
线段的长度而不是线段的端点来定义L ( H ) L(H) L ( H ) 的原因如下:
首先,我们的任务是根据线段(子轨迹)的相对距离对它们进行聚类。长度(反映在L ( H ) L(H) L ( H ) )和距离函数,即线段之间的垂直、平行和角度距离(反映在L ( D ∣ H ) L(D|H) L ( D ∣ H ) ),比线段的端点更好地测量相对距离。也就是说,新的定义更适合于子轨迹聚类的任务。
其次,不使用端点的一个非常重要的原因是为了使聚类结果不受线段的坐标值的影响。也就是说,一堆线段可以从低坐标位置移动到高坐标位置,但距离函数应该仍然能够正确地测量相对距离。如果用两个端点的坐标值来表示L ( H ) L(H) L ( H ) ,聚类结果可能会因为这种移动而被扭曲。
注意到,L ( H ) L(H) L ( H ) 测量的是简洁度,而L ( D ∣ H ) L(D|H) L ( D ∣ H ) 测量的是精确度。由于三角形不等式,L ( H ) L(H) L ( H ) 会随着轨迹分割的数量的增加而增加,而L ( D ∣ H ) L(D|H) L ( D ∣ H ) 会随着一组轨迹分区偏离轨迹程度的增加而增加。
如前所述,需要找到使L ( H ) + L ( D ∣ H ) L(H)+L(D|H) L ( H ) + L ( D ∣ H ) 最小化的最优划分,这也是精确和简洁之间的权衡。
寻找最优分区的代价是高昂的,因为需要考虑一个轨迹中点的每个子集。
近似解
关键思想是将局部最优的集合视为全局最优
M D L c o s t = L ( H ) + L ( D ∣ H ) MDL\ cost =L(H)+L(D|H) M D L cos t = L ( H ) + L ( D ∣ H )
设 M D L p a r ( p i , p j ) MDL_{par}(p_{i}, p_{j}) M D L p a r ( p i , p j ) 表示在假设 p i p_{i} p i 和 p j p_{j} p j 只是特征点时 p i p_{i} p i 和 p j ( i < j ) p_{j}(i<j) p j ( i < j ) 之间轨迹的 M D L c o s t MDL\ cost M D L cos t 。
设 M D L n o p a r ( p i , p j ) MDL_{nopar}(p_{i}, p_{j}) M D L n o p a r ( p i , p j ) 表示在假设 p i p_{i} p i 和p j p_{j} p j 之间没有特征点时的 M D L c o s t MDL\ cost M D L cos t ,即在保持原始轨迹时。
M D L n o p a r ( p i , p j ) MDL_{nopar}(p_{i}, p_{j}) M D L n o p a r ( p i , p j ) 中的 L ( D ∣ H ) L(D|H) L ( D ∣ H ) 为零,且局部最优是每 k k k 个满足 M D L p a r ( p i , p k ) ≤ M D L n o p a r ( p i , p k ) MDL_{par}(p_{i},p_{k})≤MDL_{nopar}(p_{i},p_{k}) M D L p a r ( p i , p k ) ≤ M D L n o p a r ( p i , p k ) 的最长轨迹分区 p i p k p_{i}p_{k} p i p k ,即 i < k ≤ j i<k≤j i < k ≤ j 。如果前者小于后者,选择 p k p_{k} p k 作为一个特征点会使 M D L c o s t MDL\ cost M D L cos t 比不选择它更小。此外,为了简洁,需尽可能地增加这个轨迹分割的长度。
下图显示了近似轨迹划分算法。
先计算轨迹中每个点的 M D L p a r MDLpar M D L p a r 和 M D L n o p a r MDLnopar M D L n o p a r (行5∼6),如果 M D L p a r MDLpar M D L p a r 大于 M D L n o p a r MDLnopar M D L n o p a r ,则将前面的点 p c u r r I n d e x − 1 p_{currIndex−1} p c u rr I n d e x − 1 插入到特征点的集合 C P i CP_{i} C P i 中(第8行),然后从该点开始重复相同的过程(第9行)。否则,将增加候选轨迹分区的长度(第11行)。
定理1 。上图中算法的时间复杂度为 O ( n ) O(n) O ( n ) ,其中 n n n 是一个轨迹T R i TR_{i} T R i 的长度(即点的数量)。
证明:所需的M D L MDL M D L 计算次数等于轨迹T R i TR_{i} T R i 中的线段数(即 n − 1 n−1 n − 1 )。
当然,该算法可能无法找到最优的分区。
如下图所示,假设具有最小 M D L c o s t MDL\ cost M D L cos t 的最优划分为 { p 1 p 5 } \{ p_{1}p_{5} \} { p 1 p 5 } 。但该算法无法找到精确的解,因为它在 p 4 p_{4} p 4 处M D L p a r MDL_{par} M D L p a r 大于 M D L n o p a r MDL_{nopar} M D L n o p a r 时停止扫描。
然而,该算法的精度相当高。经验表明,算法精度平均约为80%,这意味着80%的近似解也出现在精确解中。
线段聚类
线段密度
距离函数回顾
距离函数是三种距离的加权和。
垂直距离主要测量从不同轨迹中提取的线段之间的位置差异
平行距离主要测量从同一轨迹中提取的线段之间的位置差异。在一个轨迹中,两个相邻的线段之间的平行距离始终为零
角度距离测量线段之间的方向差
距离函数的对称性是避免聚类结果的模糊性的重要方法。如果一个距离函数是不对称的,则根据处理顺序的不同可以得到不同的聚类结果。以下是对本文提出的距离函数的对称性的证明:
距离函数 d i s t ( L i , L j ) dist(L_{i},L_{j}) d i s t ( L i , L j ) 是对称的,即 d i s t ( L i , L j ) = d i s t ( L j , L i ) dist(L_{i},L_{j})=dist(L_{j},L_{i}) d i s t ( L i , L j ) = d i s t ( L j , L i ) 。证明:为了使 d i s t ( L i , L j ) dist(L_{i},L_{j}) d i s t ( L i , L j ) 对称,可以将一个较长的线段分配给L i L_{i} L i ,将一个较短的线段分配给L j L_{j} L j 。(可以通过比较线段的内部标识符来打破联系)因此,可以认为d i s t ( L i , L j ) dist(L_{i},L_{j}) d i s t ( L i , L j ) 是对称的。
基于密度的聚类的概念
设D D D 表示所有线段的集合
直线段L i ∈ D L_{i}∈D L i ∈ D 的 ε − ε- ε − 邻域N ε ( L i ) N_{ε}(L_{i}) N ε ( L i ) 由N ε ( L i ) = { L j ∈ D ∣ d i s t ( L i , L j ) ≤ ε } N_{ε}(L_{i})={\{ L_{j}∈D|dist(L_{i},L_{j})≤ε \}} N ε ( L i ) = { L j ∈ D ∣ d i s t ( L i , L j ) ≤ ε } 定义
如果∣ N ε ( L i ) ∣ ≥ M i n L n s |N_{ε}(L_{i})|≥MinLns ∣ N ε ( L i ) ∣ ≥ M in L n s ,则线段L i ∈ D L_{i}∈D L i ∈ D 被称为一个关于 ε ε ε 和 M M M 的核心线段
线段L i ∈ D L_{i}∈D L i ∈ D 可以关于 ε 和 M i n L n s \varepsilon\ 和\ MinLns ε 和 M in L n s 从线段L j ∈ D L_{j}∈D L j ∈ D 直接密度可达,当且仅当 L i ∈ N ε ( L j ) L_{i} \in N_{\varepsilon}(L_{j}) L i ∈ N ε ( L j ) 且 ∣ N ε ( L i ) ∣ ≥ M i n L n s |N_{ε}(L_{i})|≥MinLns ∣ N ε ( L i ) ∣ ≥ M in L n s
线段L i ∈ D L_{i}∈D L i ∈ D 可以从关于 ε 和 M i n L n s \varepsilon\ 和\ MinLns ε 和 M in L n s 的线段L j ∈ D L_{j}∈D L j ∈ D 直接密度可达,当且仅当存在一组线段 L j , L j − 1 , ⋅ ⋅ ⋅ , L i + 1 , L i ∈ D L_{j} , L_{j−1}, · · · , L_{i+1}, L_{i} ∈ D L j , L j − 1 ,⋅⋅⋅, L i + 1 , L i ∈ D 使得 L k L_{k} L k 可以关于 ε 和 M i n L n s \varepsilon\ 和\ MinLns ε 和 M in L n s 由直接密度可达
如果有一个线段L k ∈ D L_{k}∈D L k ∈ D ,使得从 L k L_{k} L k 关于 ε 和 M i n L n s \varepsilon\ 和\ MinLns ε 和 M in L n s 到L i L_{i} L i 和L j L_{j} L j 密度可达,则一个线段L i ∈ D L_{i}∈D L i ∈ D 关于 ε 和 M i n L n s \varepsilon\ 和\ MinLns ε 和 M in L n s 到一个线段L j ∈ D L_{j}∈D L j ∈ D 密度可达
一个非空的子集C ⊆ D C⊆D C ⊆ D 被称为关于 ε 和 M i n L n s \varepsilon\ 和\ MinLns ε 和 M in L n s 的密度连接集当且仅当 C C C 满足如下两个条件:
连通性:∀ L i , L j ∈ C ∀L_{i},L_{j}∈C ∀ L i , L j ∈ C ,L i L_{i} L i 都关于 ε \varepsilon ε 和 M i n L n s \ MinLns M in L n s 与 L j L_{j} L j 密度连接
极大性:∀ L i , L j ∈ D ∀L_{i},L_{j}∈D ∀ L i , L j ∈ D ,如果L i ∈ C L_{i}∈C L i ∈ C 且L j L_{j} L j 可以从L i L_{i} L i 关于ε 和 M i n L n s ε\ 和\ MinLns ε 和 M in L n s 直接密度可达,则有L j ∈ C L_{j}∈C L j ∈ C
密度可达性是直接密度可达性的传递闭包。
密度可达性是不对称的,其只有核心线段是相互密度可达的;而密度-连通性是一种对称的关系。
考虑下图中的线段。设 M i n L n s MinLns M in L n s 为3,粗线段表示核心线段,ε − ε- ε − 邻域用不规则的椭圆表示,则有
L 1 、 L 2 、 L 3 、 L 4 和 L 5 L_{1}、L_{2}、L_{3}、L_{4}和L_{5} L 1 、 L 2 、 L 3 、 L 4 和 L 5 为核心线段
L 2 L_{2} L 2 (或L 3 L_{3} L 3 )从L 1 L_{1} L 1 直接到达密度
L 6 L_{6} L 6 从 L 1 L_{1} L 1 直接密度可达,但反之则不然
L 1 L_{1} L 1 、L 4 L_{4} L 4 和 L 5 L_{5} L 5 都是相互密度可达的
观察
线段由于同时具有方向和长度,因此具有一些与基于密度的聚类相关的有趣特征:
线段的ε ε ε -邻域的形状不是一个圆或球体,相反,它的形状非常依赖于数据,很可能是一个椭圆或一个椭球体,主要受核心线段和边界线段的方向和长度的影响。
一个短线段可能会大大降低聚类质量。一个线段的长度代表其方向强度,即如果一个线段较短,则它的方向强度较低。这意味着,如果其中一个线段非常短,那么无论实际的角度如何,角度距离都很小。
如下图所示两组线段,其唯一的区别是l 2 l_{2} l 2 的长度。在(a)图中,L 1 L_{1} L 1 可以通过L 2 L_{2} L 2 从L 3 L_{3} L 3 密度可达(反之亦然);而在图(b)中,则不然。
图(a)中的结果是违反直觉的,因为L 1 L_{1} L 1 和L 3 L_{3} L 3 相距很远。
因此,一个短线段可能会导致过度聚类。
这个问题的一个简单解决方案是通过调整划分轨迹的近似算法中的分区标准来使轨迹分区变长,即以牺牲精确性为代价来抑制划分。具体而言,为了抑制划分,可以在划分轨迹的近似算法的第6行的c o s t n o p a r cost_{nopar} cos t n o p a r 中增加一个小常数。实验表明,将轨迹分区的长度增加20∼30%,通常可以提高聚类质量。
聚类算法
本文所提出的基于密度的线段聚类算法:给定一个线段集合D D D ,基于两个参数ε ε ε 和M i n L n s MinLns M in L n s ,该算法生成一组簇 O O O 。其中,将一个集群定义为一个密度连接集。
该算法与D B S C A N DBSCAN D BSC A N 算法有许多相似的特征,所不同的是并不是所有的密度连接集都可以成为集群。我们需要考虑从线段中提取出的轨迹的数量,而这个轨迹的数量通常比线段的数量要小。例如,在极端情况下,密度连接集中的所有线段都可以是从一个轨迹中提取的。应避免这样的集群,因为它们不能解释足够数量的轨迹的行为。
由此,引出如下“轨迹基数”的概念:
一个簇C i C_{i} C i 的参与轨迹集由P T R ( C i ) = { T R ( L j ) ∣ ∀ L j ∈ C i } PTR(C_{i}) ={\{ TR(L_{j})|∀L_{j}∈C_{i} \}} PTR ( C i ) = { TR ( L j ) ∣∀ L j ∈ C i } 定义。其中,T R ( L j ) TR(L_{j}) TR ( L j ) 表示从L j L_{j} L j 中提取的轨迹,而∣ P T R ( C i ) ∣ |PTR(C_{i})| ∣ PTR ( C i ) ∣ 被称为簇C i C_{i} C i 的轨迹基数。
最初,假定所有的线段都是未分类的。随着算法的进行,它们被分为簇或噪声。该算法包括如下三个步骤:
第一步(第1∼12行)
计算每个未分类线段L L L 的ε ε ε 邻域。如果L L L 被确定为核心线段(第7∼10行),则算法执行第二步以展开簇(第9行)。当前的集群只包含N ε ( L ) N_{ε}(L) N ε ( L ) 。
第二步(第17∼28行)
计算核心线段的密度连接集。E x p l a n d C l u s t e r ( ) ExplandCluster () E x pl an d Cl u s t er ( ) 计算直接密度可达的线段(第19∼21行),并将它们添加到当前的集群(第22∼24行)。如果新添加的线段未分类,则它将被添加到队列Q Q Q 中以获得更多的扩展,因为它可能是一个核心线段(第25∼26行);否则,它不会被添加到Q Q Q 中,因为它不可能是一个核心线段。
第三步(第13∼16行)
检查每个簇的轨迹基数。如果其轨迹基数低于阈值,则将过滤掉相应的聚类。
时间复杂度分析: 如果使用空间索引,该算法的时间复杂度为O ( n l o g n ) O(nlogn) O ( n l o g n ) ,其中n n n 是数据库中的线段总数。否则,对于高维( ≥ 2 ) (≥2) ( ≥ 2 ) ,该算法的时间复杂度为O ( n 2 ) O(n^{2}) O ( n 2 ) 。
分析该算法的第5行和第20行可得对每个线段都会执行一次ε ε ε -邻域查询。因此,该算法的时间复杂度为n × (一次 ε − 邻域查询的时间复杂度) n×(一次ε-邻域查询的时间复杂度) n × (一次 ε − 邻域查询的时间复杂度) 。
该算法可以很容易地进行扩展,以支持带有权重的轨迹。例如,一个更强的飓风将有更大的质量,因此需要修改决定一个ε ε ε -邻域(即∣ N ε ( L ) ∣ |N_{ε}(L)| ∣ N ε ( L ) ∣ )的基数的方式,通过计算线段的权重来计算加权计数。
本文的距离函数不是一个度量,因为它不服从三角形不等式,即存在d i s t ( L 1 , L 3 ) > d i s t ( L 1 , L 2 ) + d i s t ( L 2 , L 3 ) dist(L_{1}, L_{3}) > dist(L_{1}, L_{2}) + dist(L_{2}, L_{3}) d i s t ( L 1 , L 3 ) > d i s t ( L 1 , L 2 ) + d i s t ( L 2 , 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_{1}p_{2}p_{3}···p_{j}···p_{len_{i}}(1≤i≤num_{clus}) RT R i = p 1 p 2 p 3 ⋅⋅⋅ p j ⋅⋅⋅ p l e n i ( 1 ≤ i ≤ n u m c l u s ) 。这些点是通过使用扫描线的方法来确定的。当在集群的主轴方向上扫描一条横跨线段的垂直线时,计算到达扫描线的线段的数量,这个值只有当扫描线通过一个起点或一个终点时才会发生变化。如果这个数字等于或大于M i n L n s MinLns M in L n s ,则计算这些线段相对于主轴的平均坐标,并将平均值插入代表性轨迹;否则,跳过当前点(如下图中的第5和第6位置)。此外,如果前面的点位置太近(如下图中的第3位置),则跳过当前点来平滑具有代表性的轨迹。
为了表示集群的主轴,定义如下平均方向向量:
上述公式将向量而不是它们的方向向量(即单位向量)相加,并对结果进行归一化处理,是一个很好的启发式方法,可以使一个较长的向量对平均方向向量贡献更大的效果。我们计算代表簇中每个线段的向量集合上的平均方向向量。
如上所述,我们计算相对于平均方向向量的平均坐标。为了便于计算,通过[ x ′ y ′ ] = [ cos ϕ sin ϕ − sin ϕ cos ϕ ] [ x y ] \left[\begin{array}{l}x^{\prime} \\ y^{\prime}\end{array}\right]=\left[\begin{array}{cc}\cos \phi & \sin \phi \\ -\sin \phi & \cos \phi\end{array}\right]\left[\begin{array}{l}x \\ y\end{array}\right] [ x ′ y ′ ] = [ cos ϕ − sin ϕ sin ϕ cos ϕ ] [ x y ] (旋转矩阵[1] )旋转轴使X轴平行于平均方向向量。通过平均方向向量与单位向量x ^ \hat{x} x ^ 之间的内积得到角φ φ φ 。
如下图所示,在计算出X ′ Y ′ X'Y' X ′ Y ′ 坐标系中的平均值后,它被转换回X Y XY X Y 坐标系中的一个点
具有代表性的轨迹生成算法
首先,计算平均方向向量,并暂时旋转轴(第1∼2行)。
然后,根据旋转轴的坐标(第3∼4行)对起点和终点进行排序。在按排序的顺序扫描起点和终点时,计算线段的数量,并计算这些线段的平均坐标(第5∼12行)。
关于参数值选择的启发式方法
在信息论中,熵与与给定概率分布相关的事件的不确定性量有关。如果所有的结果都是等可能的,那么熵应该是最大的。
作者通过观察发现:在最差的聚类中,∣ N ε ( L ) ∣ |N_{ε}(L)| ∣ N ε ( L ) ∣ 趋向于一致。也就是说,对于太小的ε ε ε ,∣ N ε ( L ) ∣ |N_{ε}(L)| ∣ N ε ( L ) ∣ 对于几乎所有的线段都变成1;对于太大的ε ε ε ,∣ N ε ( L ) ∣ |N_{ε}(L)| ∣ N ε ( L ) ∣ 对于几乎所有的线段都变成n u m l n num_{ln} n u m l n ,其中,n u m l n num_{ln} n u m l n 为行段总数。因此,熵成为最大的。相反,在一个较好的聚类中,∣ N ε ( L ) ∣ |N_{ε}(L)| ∣ N ε ( L ) ∣ 倾向于偏离的。因此,熵就变小了。
熵通过如下公式定义,
H ( X ) = ∑ i = 1 n p ( x i ) log 2 1 p ( x i ) = − ∑ i = 1 n p ( x i ) log 2 p ( x i ) where p ( x i ) = ∣ N ε ( x i ) ∣ ∑ j = 1 n ∣ N ε ( x j ) ∣ and n = n u m l n \begin{gathered}
H(X)=\sum_{i=1}^{n} p\left(x_{i}\right) \log_{2} \frac{1}{p\left(x_{i}\right)}=-\sum_{i=1}^{n} p\left(x_{i}\right) \log_{2} p\left(x_{i}\right) \\
\text { where } p\left(x_{i}\right)=\frac{\left|N_{\varepsilon}\left(x_{i}\right)\right|}{\sum_{j=1}^{n}\left|N_{\varepsilon}\left(x_{j}\right)\right|} \text { and } n=n u m_{l n}
\end{gathered}
H ( X ) = i = 1 ∑ n p ( x i ) log 2 p ( x i ) 1 = − i = 1 ∑ n p ( x i ) log 2 p ( x i ) where p ( x i ) = ∑ j = 1 n ∣ N ε ( x j ) ∣ ∣ N ε ( x i ) ∣ and n = n u m l n
通过模拟退火技术得到时H ( X ) H(X) H ( X ) 最小化的ε ε ε 的值
选择参数M i n L n s MinLns M in L n s 值的启发式方法过程: 首先,计算最优ε ε ε 下∣ N ε ( L ) ∣ |N_{ε}(L)| ∣ N ε ( L ) ∣ 的平均a v g ∣ N ε ( L ) ∣ avg_{|N_{ε}(L)|} a v g ∣ N ε ( L ) ∣ 。该操作不会产生额外的成本,因为它可以在计算H ( X ) H(X) H ( X ) 时完成。然后,确定最优的M i n L n s MinLns M in L n s 为( a v g ∣ N ε ( L ) ∣ + 1 ∼ 3 ) (avg_{|N_{ε}(L)|}+1∼3) ( a v g ∣ N ε ( L ) ∣ + 1 ∼ 3 ) ,之所以如此,是因为M i n L n s MinLns M in L n s 应该大于a v g ∣ N ε ( L ) ∣ avg|N_{ε}(L)| a vg ∣ N ε ( L ) ∣ 以发现有意义的集群。
通过本文的启发式方法估计的这些参数值是否是真正最优的是不明显的,但该启发式方法提供了一个合理的范围,其中可能存在最优值。可以尝试估计值附近的一些值,并通过目测选择最优值。
实验Experiment
实验设置
数据集: 飓风轨迹数据集和动物运动数据集
聚类质量度量: 平方误差和+噪声惩罚[2] ,公式如下:
QMeasure = Total S S E + Noise Penalty = ∑ i = 1 n u m c l u s ( 1 2 ∣ C i ∣ ∑ x ∈ C i ∑ y ∈ C i dist ( x , y ) 2 ) + 1 2 ∣ N ∣ ∑ w ∈ N ∑ z ∈ N dist ( w , z ) 2 \begin{aligned}
\text { QMeasure }=& \text { Total } S S E+\text { Noise Penalty } \\
=& \sum_{i=1}^{n u m_{clus}}\left(\frac{1}{2\left|C_{i}\right|} \sum_{x \in C_{i}} \sum_{y \in C_{i}} \operatorname{dist}(x, y)^{2}\right)+\\
& \frac{1}{2|\mathcal{N}|} \sum_{w \in \mathcal{N}} \sum_{z \in \mathcal{N}} \operatorname{dist}(w, z)^{2}
\end{aligned}
QMeasure = = Total SSE + Noise Penalty i = 1 ∑ n u m c l u s ⎝ ⎛ 2 ∣ C i ∣ 1 x ∈ C i ∑ y ∈ C i ∑ dist ( x , y ) 2 ⎠ ⎞ + 2∣ N ∣ 1 w ∈ N ∑ z ∈ N ∑ dist ( w , z ) 2
其中,N \mathcal{N} N 表示所有噪声线段的集合,目的是获得聚类质量
实验结果
飓风跟踪数据的结果
下图显示了ε ε ε 变化时熵的变化,在ε = 31 ε=31 ε = 31 时达到了最小值,a v g ∣ N ε ( L ) ∣ = 4.39 avg|N_{ε}(L)|=4.39 a vg ∣ N ε ( L ) ∣ = 4.39 。
根据启发式方法,对ε = 31 ε=31 ε = 31 和M i n L n s = 5 ∼ 7 MinLns=5∼7 M in L n s = 5 ∼ 7 附近的参数值进行尝试,利用目测和领域知识,得到最优的参数值为ε = 30 ε=30 ε = 30 和M i n L n s = 6 MinLns=6 M in L n s = 6 。注意到,最优值ε = 30 ε=30 ε = 30 非常接近于估计值ε = 31 ε=31 ε = 31 。
下图显示了ε ε ε 和M i n L n s MinLns M in L n s 变化时质量度量的变化。质量度量越小,聚类质量就越好。
实际的集群质量和作者的度量结果之间有一点差异。目测结果显示,最好的聚类是在M i n L n s = 6 MinLns=6 M in L n s = 6 时,而不是在M i n L n s = 5 MinLns=5 M in L n s = 5 。然而,作者的度量被证明在相同的M i n L n s MinLns M in L n s 值内是一个很好的实际聚类质量的指标。也就是说,如果只考虑M i n L n s = 6 MinLns=6 M in L n s = 6 的结果,可以看到,当使用ε ε ε 的最优值时,度量结果几乎变得最小。
下图显示了使用最优参数值进行的聚类结果。其中,绿色的细线表示轨迹,粗的红色线表示代表性轨迹。
这些具有代表性的轨迹正是共同的子轨迹,而集群的数量即为红线的数量。
该结果与现实中飓风的移动情况较为贴切,是相当合理的。
动物运动数据的结果
1993年的麋鹿运动
下图显示了ε ε ε 变化时熵的变化。在ε = 25 ε=25 ε = 25 处达到最小值,a v g ∣ N ε ( L ) ∣ = 7.63 avg|N_{ε}(L)|=7.63 a vg ∣ N ε ( L ) ∣ = 7.63 。
在视觉上,得到的最优参数值为ε = 27 ε=27 ε = 27 和M i n L n s = 9 MinLns=9 M in L n s = 9 。同样,最优值ε = 27 ε=27 ε = 27 非常接近于估计值ε = 25 ε=25 ε = 25 。
下图显示了ε ε ε 和M i n L n s MinLns M in L n s 变化时质量度量的变化。
由图可知:当使用最优参数值时,度量结果几乎变得最小;实际集群质量与度量之间的相关性比飓风数据的更强。
下图显示了使用最优参数值进行的聚类结果。
虽然右上角的区域看起来很密集,但麋鹿实际上是沿着不同的路径移动的。因此,在该区域中没有集群的结果被验证是正确的。
1995年的鹿运动
下图显示了使用最优参数值(ε = 29 和 M i n L n s = 8 ε=29和MinLns=8 ε = 29 和 M in L n s = 8 )的聚类结果。
结果表明,在两个最密集的区域中发现了两个集群,该结果正是所期望的。
参数值的影响
如果使用更小的ε ε ε 或更大的M i n L n s MinLns M in L n s ,该算法会发现更多的更小的集群(即有更少的线段)。相反,如果使用更大的ε ε ε 或更小的M i n L n s MinLns M in L n s ,该算法会发现更少的更大的集群。
讨论Discussion
该算法的一些可能拓展:
可扩展性: 支持无向的或加权的轨迹,使用简化角距离来处理无向轨迹,使用ε ε ε 邻域的扩展基数处理加权轨迹。
参数不敏感性: 使该算法对参数值更不敏感。如将O P T I C S OPTICS OPT I CS 算法应用于轨迹数据。
效率: 通过使用索引来进行ε ε ε -邻域查询以提高聚类性能。主要的困难是本文的距离函数不是一个度量标准。
运动模式: 扩展该算法以支持各种类型的运动模式,特别是圆周运动。该扩展可以通过增强生成一个具有代表性的轨迹的方法来实现。
时间信息: 在聚类过程中考虑时间信息。