我有两组点。在我应用任何聚类技术之前,我确切地知道哪些点应该属于每个聚类,但是标记数据的唯一方法是使用聚类技术,例如 k-means。如果我所处的情况似乎令人费解,请不要关注它,我对 k-means 的这个潜在特定问题更感兴趣。
假设我的数据如下所示(x-y 平面上的简单 2D 点):
我想得到两组点,但是有一个小问题。当我运行 k-means 算法时,我最终会得到这样的结果:
我应该补充一点,这只是一个草图示例。
我遇到的问题是,如果在运行算法之前集群中的点数非常不均匀,那么它最终会对算法聚类产生显着的结果,以至于它掩盖了数据。当然,这只是当集群模糊地靠近时才会出现的问题,但我想知道是否有 k-means 变体或其他聚类算法可以很好地处理不同人口规模的集群。我试图找到这样的东西,但我担心我使用了错误的搜索词,例如“不均匀的 k-means 集群种群”和类似的措辞只能让我找到关于更快的 k-means 实现以及与其他统计分析组合的论文。
只是为了平息一些顾虑。我已经多次运行 k-means,结果总是上面的草图,在两个视觉集群之间有一个集群质心。
如果这只是 k-means 的一个缺点(我可以看到它是这样),那么我可以接受。
最佳答案
K-Means 算法的输出很大程度上取决于您选择的初始质心。如果您选择彼此接近的质心,那么您得到的集群将是偏斜的。
此外,如果真实集群的数据点数量不平衡,那么通过随机选择初始质心,您很可能会从同一集群中选择初始质心。
因此,我建议您尝试选择相距尽可能远的初始质心。这应该是可能的,因为您的点是二维的。
您甚至可以探索单一链接或完整链接算法等凝聚聚类方法。
也就是说,这些算法不能保证最佳结果,因此您将不得不满足于某些次优性。
希望这可以帮助。
关于algorithm - 不均匀聚类的聚类(k-means),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38642117/