k-Means的单程种子选择算法

时间:2013-07-02 13:36:51

标签: algorithm machine-learning

我最近阅读了Single Pass Seed Selection Algorithm for k-Means文章,但并不是真正理解这个算法,它是:

  1. 计算距离矩阵Dist,其中Dist (i,j)表示距ij的距离
  2. 查找Sumv,其中Sumv (i)是从i点到所有其他点的距离之和。
  3. 找到imin (Sumv)并设置Index = i
  4. 首先将C添加为第一个质心
  5. 对于每个点xi,将D (xi)设置为xiC中最近点之间的距离
  6. y视为n/k
  7. Index个最近点的距离总和
  8. 找到唯一的整数i,以便D(x1)^2+D(x2)^2+...+D(xi)^2 >= y > D(x1)^2+D(x2)^2+...+D(x(i-1))^2
  9. xi添加到C
  10. 重复步骤5-8直到k居中
  11. 特别是第6步,我们是否仍然反复使用相同的Index(同一点),或者我们使用C中新添加的点?关于第8步,i是否必须大于1

2 个答案:

答案 0 :(得分:4)

老实说,我不担心理解那篇论文 - 它不是很好。

  • 该算法描述不清楚。
  • 它实际上不是一次通过,它需要做n ^ 2/2对成对计算+一次额外的数据传递。
  • 他们没有报告种子选择方案的运行时间,可能是因为做O(n ^ 2)工作非常糟糕。
  • 他们正在评估非常简单的数据集,这些数据集没有很多针对k-Means的不良解决方案。
  • 他们的“更好”的指标之一是在给定种子选择的情况下需要多少次迭代才能运行。虽然这是一个有趣的指标,但它们报告的微小差异毫无意义(k-means ++种子可能更多迭代,但每次迭代完成的工作量更少),并且它们不报告运行时间或它们使用的k-means算法。

通过学习和理解他们正在比较的k-means ++算法,并从中读取一些历史记录,您将获得更多好处。

如果你真的想了解他们在做什么,我会刷你的matlab并阅读他们提供的matlab代码。但它并不值得。如果你查看分位数种子选择算法,它们基本上是在做一些非常相似的事情。它们不是使用到第一个种子的距离来对点进行排序,而是使用成对距离的总和(这意味着它们不需要初始种子,因此是唯一的解决方案)。

答案 1 :(得分:-1)

单程种子选择算法是一种新颖的算法。单通道意味着没有任何迭代,可以选择第一个种子。 k-means ++的表现取决于第一粒种子。它在SPSS中被克服。请通过同一作者的论文“用于k-means的鲁棒种子选择算法”

John J. Louis