具有不均匀簇的聚类(k-means)
Clustering with uneven clusters (k-means)
我有两组点。在我应用任何聚类技术之前,我确切地知道哪些点应该属于每个聚类,但是标记数据的唯一方法是使用聚类技术,例如 k-means。如果我所处的情况看起来令人费解,请不要关注它,我对 k-means 的这个潜在的特定问题更感兴趣。
假设我的数据如下所示(x-y 平面上的简单二维点):
我想得到两组点,但是有一个小问题。当我 运行 一个 k-means 算法时,我得到这样的结果:
我应该补充一下,这只是一个粗略的例子。
我遇到的问题是,在算法 运行 之前,聚类中的点数非常不均匀,那么它最终会对算法聚类产生重大影响,以至于它掩盖了数据。当然,这只是当集群模糊地靠在一起时的一个问题,但我想知道是否有 k-means 变体或其他聚类算法可以很好地处理不同数量的集群。我试图找到这样的东西,但我担心我使用了错误的搜索词,例如 "uneven k-means cluster populations" 和类似的措辞只会让我获得关于更快的 k-means 实现和与其他统计分析的组合的论文。
打消一些顾虑。我有几次 运行 k 均值,结果总是上面的草图,两个视觉集群之间有一个集群质心。
如果这只是 k-means 的缺点(我可以看到它是这样),那么我可以接受。
K-Means 算法的输出在很大程度上取决于您选择的初始质心。如果您选择彼此靠近的质心,那么您得到的聚类将会倾斜。
此外,如果真正的聚类具有不平衡数量的数据点,那么通过随机选择初始质心,您很可能会从同一聚类中选择初始质心。
因此我建议您尽量选择相距较远的初始质心。这应该是可能的,因为你的点是二维的。
您甚至可以探索凝聚聚类方法,例如单一 Link 或完整 Link 算法。
也就是说,这些算法不能保证最佳结果,因此您将不得不满足于一些次优。
希望对您有所帮助。
我有两组点。在我应用任何聚类技术之前,我确切地知道哪些点应该属于每个聚类,但是标记数据的唯一方法是使用聚类技术,例如 k-means。如果我所处的情况看起来令人费解,请不要关注它,我对 k-means 的这个潜在的特定问题更感兴趣。
假设我的数据如下所示(x-y 平面上的简单二维点):
我想得到两组点,但是有一个小问题。当我 运行 一个 k-means 算法时,我得到这样的结果:
我应该补充一下,这只是一个粗略的例子。
我遇到的问题是,在算法 运行 之前,聚类中的点数非常不均匀,那么它最终会对算法聚类产生重大影响,以至于它掩盖了数据。当然,这只是当集群模糊地靠在一起时的一个问题,但我想知道是否有 k-means 变体或其他聚类算法可以很好地处理不同数量的集群。我试图找到这样的东西,但我担心我使用了错误的搜索词,例如 "uneven k-means cluster populations" 和类似的措辞只会让我获得关于更快的 k-means 实现和与其他统计分析的组合的论文。
打消一些顾虑。我有几次 运行 k 均值,结果总是上面的草图,两个视觉集群之间有一个集群质心。
如果这只是 k-means 的缺点(我可以看到它是这样),那么我可以接受。
K-Means 算法的输出在很大程度上取决于您选择的初始质心。如果您选择彼此靠近的质心,那么您得到的聚类将会倾斜。
此外,如果真正的聚类具有不平衡数量的数据点,那么通过随机选择初始质心,您很可能会从同一聚类中选择初始质心。
因此我建议您尽量选择相距较远的初始质心。这应该是可能的,因为你的点是二维的。
您甚至可以探索凝聚聚类方法,例如单一 Link 或完整 Link 算法。
也就是说,这些算法不能保证最佳结果,因此您将不得不满足于一些次优。
希望对您有所帮助。