Weka K中“种子”的意义意味着聚类

时间:2013-05-22 19:12:49

标签: java cluster-analysis weka data-mining k-means

weka SimpleKMeans实现允许用户使用选项-s指定“种子值”。我不明白它的意思。在this link中,Weka架构师马克·霍尔说,它应该生成随机数。

Weka实现应该遵循关于KMenas++的文章(如文档中所述),如果我理解了它,则使用方程1b,第2.2页第3页的{{{}来确定聚类质心点。 3}},并没有其他随机来源。

任何人都可以指出我错了什么?

1 个答案:

答案 0 :(得分:5)

这是一个常见的最佳实践与k-means算法(注意:k-means有多个算法;它们是启发式的,因为发现最佳解决方案被报告为NP-hard )使用不同的随机初始中心进行多次迭代

因此随机性通常与选择初始中心有关。 K-means ++是另一种选择初始种子的方法,幸运的是 仍然是随机的(有一些不是随机的,所以你再也不能尝试通过多次运行来改善你的结果),但是尝试选择一个更好的起始情况。

为什么你要寻找另一个随机性来源而不是初始手段?

我不推荐使用Weka进行群集。分类是可以的,但它对聚类和其他无监督方法的支持非常有限。相反,看看ELKI。例如他们的k-means package非常详尽。他们有6种不同的方法来选择初始方法。大多数是随机的。最简单和最常见的初始化可能只是从数据库中的k个随机对象开始。 IIRC,MacQueen使用了第一个k对象,因此变量不是随机的(除非你首先对数据集进行洗牌,这对于一些算法来说实际上是一个好主意 - 从不使用排序数据!) 因此,大多数这些初始化器都带有参数-kmeans.seed - 猜测是什么 - 允许您控制随机发生器播种,以获得可重现的结果。