什么聚类算法适合聚类路径?

数据挖掘 聚类 顺序
2022-01-23 22:15:56

我有一个数据集,其中包含二维空间中的向量,这些向量形成单独的序列(路径)。完整数据如下所示:在此处输入图像描述,而 5 条路径的随机样本如下所示(请注意,路径的不连续性对于数据来说是自然的,并不意味着缺失值): 在此处输入图像描述

我想找到相似的路径,其中相似的意思是(从最突出到不太突出的顺序):

  1. 他们最终在一个相似的地区
  2. 它们的直接长度相似(即 x 轴上从开始到结束的长度)
  3. 它们的复杂性相似(即向量的数量)
  4. 他们从相似的地区开始

什么样的聚类算法是这种设置的自然选择?聚类路径时需要注意哪些事项?我该如何处理不同路径具有不同数量的向量的事实?我如何表示数据以考虑到这一点?

2个回答

就像里卡多在他对您的问题的评论中提到的那样,这里的主要步骤是找到路径之间的距离度量。然后,您可以尝试不同的聚类算法,看看哪些是有效的。

想到的是动态时间扭曲(DTW)。DTW 为您提供了一种方法来找到两个时间序列之间的“距离”度量(实际上它不是严格的距离度量,但它很接近)。一件非常有用的事情是它可以用来比较两个不同长度的时间序列。

DTW上有很多不错的文,我就不多解释了。它也有很多python实现为了让算法变得非常快,我们做了很多工作。DTW 是一种奇怪的算法——在某些方面非常简单,但通常效果很好。修改算法以处理路径后,您可以构建距离矩阵并将其用于聚类。与 DTW 结合使用的一种常见聚类算法是光谱聚类,因为可以直接使用距离矩阵(而不是我们这里没有的数据点矩阵)。

您的问题表明您可能希望提取特征而不是使用 DTW。然而,您必须仔细构建一个相异矩阵,因为起点、终点与复杂性需要区别对待和加权。

一旦你有一个体面的和经过测试的相异性度量,你就有多种算法可供选择:HAC、Affinity Propagation、Spectral、DBSCAN、OPTICS,......

但是您不能指望他们“只”处理您拥有的任何数据。您需要准备数据并选择相异性。