"seed"在 weka K 中的意义意味着聚类



weka SimpleKMeans实现允许用户使用选项-s指定一个"种子值"。我不明白这是什么意思。在这个链接中,weka架构师Mark Hall说,它应该生成随机数。

Weka的实现应该遵循关于KMenas++的论文(如文档中提到的),如果我理解的话,簇质心点是使用上述论文第3页第2.2节的等式1b来确定的,并且没有其他随机性来源。

谁能指出我错在哪里?

这是k-means算法的常见最佳实践(注意:k-means有不止一种算法;它们是启发式的,因为找到最优解据报道是np困难的)用不同的随机初始中心进行多次迭代

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

为什么你要寻找另一个随机来源,而不是初始均值?

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

最新更新