【问题标题】:Single Pass Seed Selection Algorithm for k-Meansk-Means 的单通道种子选择算法
【发布时间】:2013-06-29 21:49:12
【问题描述】:

最近看了Single Pass Seed Selection Algorithm for k-Means的文章,但是对算法不是很了解,就是:

  1. 计算距离矩阵Dist,其中Dist (i,j)表示从ij的距离
  2. 找到Sumv,其中Sumv (i) 是从ith 点到所有其他点的距离之和。
  3. 找到imin (Sumv) 并设置Index = i
  4. 将 First 添加到 C 作为第一个质心
  5. 对于每个点xi,将D (xi)设置为xiC中最近点之间的距离
  6. 找到y作为第一个n/kIndex最近的点的距离之和
  7. 找到唯一的整数i,这样D(x1)^2+D(x2)^2+...+D(xi)^2 >= y > D(x1)^2+D(x2)^2+...+D(x(i-1))^2
  8. xi 添加到C
  9. 重复步骤 5-8,直到 k 中心

尤其是第 6 步,我们是否仍然一遍又一遍地使用相同的Index(同一点)还是使用来自C 的新添加点?关于第 8 步,i 是否必须大于1

【问题讨论】:

    标签: algorithm machine-learning


    【解决方案1】:

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

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

    您将从学习和理解他们所比较的 k-means++ 算法以及从中阅读一些历史中获得更多好处。

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

    【讨论】:

    【解决方案2】:

    Single Pass Seed Selection 算法是一种新颖的算法。单次通过意味着无需任何迭代即可选择第一个种子。 k-means++ 性能取决于第一个种子。它在 SPSS 中被克服。请阅读同一作者的论文《Robust Seed Selestion Algorithm for k-means》

    约翰·J·路易斯

    【讨论】:

      猜你喜欢
      • 2011-12-03
      • 2018-04-22
      • 2013-07-03
      • 2010-12-05
      • 2017-04-20
      • 2013-04-22
      • 2021-04-02
      • 2011-09-15
      相关资源
      最近更新 更多