是否可以仅通过知道点对之间的距离来运行聚类方法?

数据挖掘 聚类
2021-09-17 12:49:17

通过知道每个数据点的坐标,很容易将它们与聚类方法(如 k-means 等)一起应用。如果我们只知道每对数据点之间的距离而不知道每个数据点的确定位置坐标,则为在这种情况下可以应用任何聚类方法吗?

2个回答

K-中心点

使用经过调整的半监督 K-Means(也称为K-Medoids )将成为可能

K-Means 的棘手部分是您不知道质心。但是,您可以通过假设您的一些数据点是质心来热启动。然后,在每次迭代中计算新质心时,而不是计算“虚构的”中心位置,而是选择集群中的点,使与集群中所有其他点的总和最小化。

层次聚类

您也可以尝试分层聚类方法。一个例子是 Scikit-Learn 的AgglomerativeClustering这个想法是您开始合并点以最小化它们的链接距离。然后,有一定的标准来确定“太远”的点,应该创建一个新的集群。

这是fit()方法文档。请注意如何传递实例特征或实例之间的距离矩阵。

https://scikit-learn.org/stable/modules/generated/sklearn.cluster.AgglomerativeClustering.html#sklearn.cluster.AgglomerativeClustering.fit

是的,但并非所有算法都支持这一点。例如,k-means 将无法做到这一点,因为 k-means 使用质心,它是空间上的“假想”点,因此在不知道位置的情况下无法推断从该点到数据集上另一个点的距离每个数据点。另一方面,DBScan 能够做到这一点,因为该算法本质上是对彼此靠近的点集进行联合。

一般来说,您可能想大致了解每个算法如何工作以“猜测”是否支持此行为。您还可以查看文档,例如 sklearn 的文档。