我想知道K-Mean和K-Means ++算法之间的区别。如果有人理解K-Means ++算法的流程,你能用例子解释我吗?虽然,我理解K-Mean算法,找到方法实现K-Means ++算法对我来说很难,因为我不明白这个算法的工作流程:显然。 谢谢大家。
答案 0 :(得分:2)
说你想知道 k-means 和 k-means ++ 之间的区别是不准确的。因为,这两种算法不具有可比性,而是相互融合。
来自维基百科的Kmeans++定义:
k-means ++是一种为k-means聚类算法选择初始值(或"种子")的算法
并且需要存在这样的算法,因为k-means在性能和准确性方面存在问题(取决于您分析数据的方式和整个预处理步骤)。
关于你的问题:
找到如何实施K-Means ++算法对我来说很难,因为我不明白这个算法的工作流程:显然。
从数据集中的随机点开始,然后计算集合中每个点与所选点之间的距离(欧几里德距离可以是您的选择之一)。然后,使用weighted probability distribution随机选择一个新数据点作为新中心,其中选择点x,probability proportional到D(x)2。并且重做同样的事情(除了从随机点开始),直到你到达你需要的k
个集群(k
应该作为参数传递给算法。)
之后您拥有k
群集,您可以继续使用k-means
。
注意这主要是来自维基百科,但我的观点是,你将k-means ++作为k-means的替代品,而不是,这就是前面提到的定义。
最后,k-means ++足以帮助克服k-means所具有的一些问题,但是通过将簇的数量(k
)作为输入参数传递给它,它就不再可扩展了。但是,如果您感兴趣的话,还有另一个名为k-means2的k-means版本(我没有搜索其他来源)可能会克服可扩展性问题。