对于初始中心,k-means ++ vs random

时间:2016-07-21 07:41:21

标签: algorithm opencv cluster-analysis k-means vlfeat

我已经在很多K-means实现中看到过,例如VLFeat k-meansOpenCV k-means,基本上有两种选择起始质心的方法:

  1. 随机
  2. 遵循K-Means++算法
  3. 然而,我没有得到哪种情况,另一种情况更好,特别是因为起始方法被认为是重要的。你能帮我理解这一点吗?

1 个答案:

答案 0 :(得分:1)

理论上,k-means ++更好。这是一种有偏差的随机抽样,更喜欢彼此距离较远的点,并避免接近点。随机初始化可能不吉利,并选择附近的中心。

因此从理论上讲,k-means ++应该需要更少的迭代次数,并且更有可能找到全局最优值。

然而,k-means ++并不完全是“免费的”,在我的实验中,我没有看到两者之间有更先进的k-means算法的任何系统差异。 k-means ++需要O(k n)计算 - 关于一次完整迭代的成本。但是有一些改进的k-means算法迭代的次数要少得多。使用这些算法,k-means ++可能会占总运行时间的10-20%(教科书k-意味着它通常不到1%)。

我想我现在更喜欢简单的随机初始化,尝试多次,每次尝试10次迭代来优化样本,然后继续使用最好的。