轨迹聚类:选择哪种聚类方法?

作为机器学习的新手,我有一组轨迹,它们的长度可能不同。我希望对它们进行聚类,因为其中一些轨迹实际上是相同的路径,只是由于噪声的影响,看起来有所不同。

此外,并非所有轨迹的长度都相同。因此,尽管轨迹A与轨迹B不同,但它可能是轨迹B的一部分。我希望在聚类后也能展示这一特性。

我只对K-means聚类Fuzzy N-means聚类有一点了解。如何在这两者之间做出选择?或者我应该采用其他方法?

有没有考虑到“归属感”的方法?(例如,聚类后,我有3个聚类A、B和C。一个特定的轨迹X属于聚类A。而一个较短的轨迹Y,虽然没有被聚类到A中,但被识别为轨迹B的一部分。)

=================== 更新 ======================

上述轨迹是行人的轨迹。它们可以表示为一系列(x, y)点或一系列步长向量(长度, 方向)。表示形式由我控制。


回答:

虽然可能有点晚,但我也在研究相同的问题。我建议你看看TRACLUS,这是由Jae-Gil Lee、Jiawei Han和Kyu-Young Wang创建的算法,发表在SIGMOD’07上。http://web.engr.illinois.edu/~hanj/pdf/sigmod07_jglee.pdf

这是我迄今为止见过的最佳轨迹聚类方法,因为:

  • 可以发现常见的子轨迹
  • 关注的是段而不是点(因此可以过滤掉噪声异常值)。
  • 适用于不同长度的轨迹。

基本上这是个两阶段的方法:

  1. 第一阶段 – 分割:将轨迹分成段,使用MDL优化,复杂度为O(n),其中n是给定轨迹中的点数。这里的输入是一组轨迹,输出是一组段。

    • 复杂度:O(n),其中n是轨迹上的点数
    • 输入:一组轨迹
    • 输出:段集D
  2. 第二阶段 – 分组:这一阶段使用类似于DBSCAN的密度聚类方法发现聚类。输入是第一阶段获得的段集以及一些定义邻域和构成聚类所需的最小线数的参数。输出是一组聚类。聚类是在段上进行的。他们定义了自己的距离度量,由三部分组成:平行距离、垂直距离和角度距离。这一阶段的复杂度为O(n log n),其中n是段的数量。

    • 复杂度:O(n log n),其中n是集合D中的段数
    • 输入:段集D,参数E设置邻域阈值,参数MinLns是最小线数
    • 输出:聚类集C,即段的聚类(聚类的轨迹)

最后,他们为每个聚类计算一个代表性轨迹,这实际上是每个聚类中发现的共同子轨迹。

他们有非常酷的例子,论文解释得非常清楚。再次强调,这不是我的算法,所以如果你在做研究,请不要忘记引用他们。

附注:我基于他们的工作制作了一些幻灯片,仅供教育目的:http://www.slideshare.net/ivansanchez1988/trajectory-clustering-traclus-algorithm

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注