目录

  • 2.距离函数
  • 2.1 轨迹距离函数
  • 3.轨迹分段
  • 3.1 MDL原则
  • 参考资料


现有的轨迹聚类算法可分为两类:

  • 一种是基于整体的轨迹聚类,即将一条轨迹视为一个整体而对其不做分段,通过定义轨迹的相似度函数将其聚类,这样一条轨迹只能属于一个簇;
  • 另一种是基于分段的轨迹聚类,即将一条轨迹分为多段,分段的轨迹之和可以是原轨迹,也可以是原轨迹特征的抽取。之后再进行轨迹聚类,这样同一条轨迹可能分属于多个簇,可视的结果会出现分流与聚流的效果。

基于不同的应用场景会运用不同的算法,如果只从准确度上评价而不考虑其它因素,基于分段的轨迹聚类相对更好一此。因为它研究的粒度更细,而基于整体的轨迹聚类会丢失一些细节信息,举一个例子:
————————————————

轨迹聚类python 轨迹聚类方法_算法


如上图,有五条轨迹轨迹聚类python 轨迹聚类方法_机器学习_02,如果运用基于分段的聚类算法,则方框内的轨迹将聚为一簇;而如果是基于整体的聚类算法,由于五条轨迹最终的走向各不相同,因而很有可能五条轨迹归属于不同的类。然而忽略掉起始时的聚集状态是不合理的,显然在这种情况下基于分段的轨迹聚类更好一些。

基于此,原文提出了“分段及归组”的轨迹聚类框架,正如其名,算法分为两大步:

  1. 分段:将轨迹进行分段以作为下一阶段的输入;
  2. 归组:相似的线段归为一类。归类的算法采用基于密度的聚类算法,本文采用的是DBSCAN算法。

2.距离函数

2.1 轨迹距离函数

由于DBSCAN算法是基于密度的算法,对于散点的聚类利用欧氏距离衡量就可以,但轨迹就不同如此。

因此必须事先定义轨迹之间的距离。

给定任意的两条线段,其长度及方向不一定相同,如何衡量它们之间的相似度?

先从简单的开始,情况一:给定两条同等长度相互平行且两起点的连线或两终点的连线与这两条线段垂直,那么我们可以用它们之间的垂直距离 轨迹聚类python 轨迹聚类方法_算法_03 来衡量它们的相似度,距离越近就越相似,如果这两条线段完全重合就意味着其完全相同。(一个衡量指标,即轨迹聚类python 轨迹聚类方法_数据_04

轨迹聚类python 轨迹聚类方法_聚类_05


若在上面的基础上,情况二:将两条线段沿其方向错位或改变其中一条线段的长度,在同等 轨迹聚类python 轨迹聚类方法_算法_03 的情况一和二下,显然它们的相似度只用垂直距离是不够的,需要用水平方向的差别来衡量,即水平距离轨迹聚类python 轨迹聚类方法_轨迹聚类python_07。(两个衡量指标,即轨迹聚类python 轨迹聚类方法_数据_04轨迹聚类python 轨迹聚类方法_轨迹聚类python_09)若在情况二的基础上,情况三:将其中一条线段沿某一方向旋转,则两条线段的夹角越大,其相似度越小,因此又需要引入夹角距离 轨迹聚类python 轨迹聚类方法_机器学习_10 的概念。(下图描述情况三,求轨迹聚类python 轨迹聚类方法_聚类_11轨迹聚类python 轨迹聚类方法_轨迹聚类python_12的相似度,通过三个指标衡量,即轨迹聚类python 轨迹聚类方法_数据_04轨迹聚类python 轨迹聚类方法_轨迹聚类python_09轨迹聚类python 轨迹聚类方法_聚类_15

原文对距离的定义就基于这种思想。

轨迹聚类python 轨迹聚类方法_聚类_16

情况三


3.轨迹分段

轨迹聚类python 轨迹聚类方法_机器学习_17

轨迹分段是在原轨迹中选取一些特征点,利用特征点的连线来近似原轨迹。特征点是多指轨迹中角度变化较大的点。
对轨迹的分段要保证两个性质:准确性和简洁性。
准确性是指特征点不能太少,否则不足以概括轨迹特征;
简洁性是指特征点要利用尽可能少的点来概括轨迹特征。
这两个特性相互矛盾,因此算法要能够很好地平衡这两个特性。

3.1 MDL原则

原文采用信息压缩中广泛采用的标准来平衡:MDL(Minimum Description Length)原则。

最小描述长度( MDL) 原理是 Rissane 在研究通用编码时提出的。

其基本原理是对于一组给定的实例数据 D , 如果要对其进行保存 ,为了节省存储空间, 一般采用某种模型 H 对其进行编码压缩,然后再保存压缩后的数据。同时, 为了以后正确恢复这些实例数据,将所用的模型也保存起来。所以需要保存的数据长度( 比特数) 等于这些实例数据进行编码压缩后的长度加上保存模型所需的数据长度,将该数据长度称为总描述长度。最小描述长度( MDL) 原理就是要求选择总描述长度最小的模型。

如果将贝叶斯网络作为对实例数据进行压缩编码的模型, MDL原理就可以用于贝叶斯网络的学习。该度量被视为网络结构的描述长度和在给定结构下样本数据集的描述长度之和。一方面,用于描述网络结构的编码位随模型复杂度的增加而增加 ; 另一方面, 对数据集描述的编码位随模型复杂度的增加而下降。因此,贝叶斯网络的 MDL总是力求在模型精度和模型复杂度之间找到平衡。构建贝叶斯网络首先定义一个评分函数, 该评分函数描述了每个可能结构对观察到的数据拟合, 其目的就是发现评分最大的结构,这个过程连续进行到新模型的评分分数不再比老模型的高为止。

MDL原则包含两个部分:

  1. L(H): 描述压缩模型(或编码方式)所需要的长度
  2. L(D|H): 描述利用压缩模型所编码的数据所需要的长度
    原文中对两部分的定义如下:
    轨迹聚类python 轨迹聚类方法_聚类_18
    轨迹聚类python 轨迹聚类方法_机器学习_19

L(D|H)中没有包含水平距离是因为对于闭合的两条线段,其水平距离为零。

例如:

轨迹聚类python 轨迹聚类方法_聚类_20

参考资料

[1] 轨迹聚类(一):分段及归组框架(Trajectory Clustering:A Partition-and-Group Framework)) 2016.3
[2] 轨迹聚类(二):分段及归组框架(Trajectory Clustering:A Partition-and-Group Framework) 2016.3
[3] 基于 DBTCAN 算法的船舶轨迹聚类与航路识别 2022.5
[4] Hausdorff Distance(豪斯多夫距离) 2018.3
[5] Hausdorff 距离 2020.3
[6] Metric评价指标-图像分割之豪斯多夫距离(Hausdorff distance )
[7] 最小描述长度(MDL)2012.12
[8] 最小描述长度准则—Minimum Description Length 2017.5
[9] 如何判断两条轨迹(或曲线)的相似度?2017.12
[10] 轨迹相似性度量方法总结 2021.6
[11] 相似性方法调研 2019.1