不均匀簇的聚类(k-means)

Posted

技术标签:

【中文标题】不均匀簇的聚类(k-means)【英文标题】:Clustering with uneven clusters (k-means) 【发布时间】:2016-12-03 04:26:45 【问题描述】:

我有两个点集群。在我应用任何聚类技术之前,我确切地知道哪些点应该属于每个聚类,但是标记数据的唯一方法是使用聚类技术,例如 k-means。如果我所处的情况看起来令人费解,请不要关注它,我对 k-means 的这个潜在的特定问题更感兴趣。

假设我的数据看起来像这样(x-y 平面上的简单 2D 点):

我想获得两组点但是有一个小问题。当我运行 k-means 算法时,我会得到如下结果:

我应该补充一下,这只是一个草图。

我遇到的问题是,在算法运行之前,集群中的点数量非常不均匀,那么它最终会对算法聚类产生显着影响,以至于它掩盖了数据。当然,这只是集群模糊地靠近在一起时的问题,但我想知道是否有 k-means 变体或其他聚类算法可以很好地处理不同种群大小的集群。我试图找到这样的东西,但我担心我使用了错误的搜索词,例如“k-means cluster population 不均匀”和类似的措辞只会让我获得有关更快 k-means 实现以及与其他统计分析组合的论文。

只是为了解决一些问题。我已经多次运行 k-means,结果始终是上面的草图,两个视觉集群之间有一个集群质心。

如果这只是 k-means 的一个缺点(我可以看到它确实如此),那么我可以接受。

【问题讨论】:

你如何选择初始质心。 @AbhishekBansal 随机。 您是否尝试过基于密度的层次聚类(或其他100种聚类算法中的任何一种)? 【参考方案1】:

K-Means 算法的输出很大程度上取决于您选择的初始质心。如果您选择彼此靠近的质心,那么您得到的聚类将是倾斜的。

此外,如果真实集群的数据点数量不平衡,那么通过随机选择初始质心,您很有可能会从同一集群中选择初始质心。

因此,我建议您尝试选择尽可能远的初始质心。这应该是可能的,因为您的点是二维的。

您甚至可以探索聚合聚类方法,例如单链接或完整链接算法。

也就是说,这些算法不能保证最佳结果,因此您必须满足于一些次优。

希望这会有所帮助。

【讨论】:

以上是关于不均匀簇的聚类(k-means)的主要内容,如果未能解决你的问题,请参考以下文章

K-means聚类算法及python代码实现

K-means聚类算法

Canopy聚类算法

K-均值(K-means)聚类算法

理论知识+Python实践 | 在聚类算法中,如何确定类簇的个数?

基于k-means的聚类算法—机器学习