最多包含 N 个聚类的数据集的聚类算法

计算科学 算法
2021-12-18 13:04:33

我有一个正在尝试聚类的数据集,并且我知道最多会有 N 个聚类(基于数据集所代表的事物的某些物理属性)。但是,可能只有 1 个集群。集群本身非常紧密,并且集群间隔非常大(至少集群间距离比集群内距离大一个数量级)。这是其他处理步骤的下游,所以我(有理由)相信极端异常值已被删除。N 通常为 1、2 或 4。对于这种情况,是否有众所周知的算法?

我考虑过使用 K-Means,运行它K{1,...,N},并以某种方式选择最佳结果(也许是使集群间与集群内距离比率最大化的结果,或其他东西),但我提出的区分最佳运行的标准对我来说似乎都是临时的。

谢谢!

2个回答

你可以看看贝叶斯聚类。这似乎很合适,因为您可以从精确N集群开始,当您的解决方案收敛时,不需要的集群将退出。如果您的数据已经很好地分离,我希望这种方法会很快收敛。有关这方面的示例,请参见 [1] 第 10 章。

[1] Christopher M. Bishop,模式识别和机器学习

您可以尝试一种递归方法,其中给定一组点S, 你首先计算协方差矩阵 CS点的坐标。

然后您可以使用最大的特征向量vmaxCS作为您的搜索方向,即每个点xi, 计算ξi=vmaxxi,这将您的问题简化为ξi值,可以通过排序来解决ξi并在两个条目之间的最大间隙处拆分它们,为您提供两个子集SleftSright.

然后,只要生成的集群充分分离,您就可以递归地进行。

请注意,这种方法对于病理情况将失败,例如如果粒子在圆圈上,但大多数方法也会如此。主要优点是它与使用的维度数量无关。