是否有一种仅使用成对距离作为输入的聚类算法?

数据挖掘 聚类
2021-10-15 05:22:40

我的数据是我知道所有成对旅行时间(='距离')的地方,我想对这些地方进行聚类,以最大限度地减少集群内的总成对旅行时间。

  • 不能使用 K-means,因为它是基于质心的,并且“距离”是提供的持续时间,由于坐标而不是计算
  • DBSCAN 不能使用,因为它排除了大纲,我想将每个地方都包含在一个集群中(这个不是 100% 确定的)

奖励:Java 库将不胜感激

1个回答

是的,这是一个经典的基于图的聚类问题,其中每个位置都是一个节点,并且您知道它们之间的距离。忘记可能很复杂的图和基于图的算法的概念,我直接跳到你的答案。

最著名的算法是光谱聚类那里有很多教程,并且在包括 Java 在内的所有编程语言中都得到了很好的实现。

如果您不熟悉数学术语,我会简要解释,但不要惊慌。它们非常直观且简单。你只需要遵循一个好的教程。

  1. 计算相似度矩阵(在文献中通常称为亲和矩阵)。当你有距离矩阵时,你有几种方法可以做到这一点。最简单的从说开始sim=1dist直到更复杂的使用高斯核来计算相似度
  2. 从相似度矩阵中计算拉普拉斯矩阵。
  3. 计算特征向量和特征值,以便将数据点嵌入到它们的特征空间中(就像我们在 PCA 中所做的一样)
  4. 使用简单的聚类算法(如 K-Means)对该空间中的点进行聚类