kmeans是可重复的吗?

Posted

技术标签:

【中文标题】kmeans是可重复的吗?【英文标题】:Is kmeans repeatable? 【发布时间】:2015-01-31 05:13:12 【问题描述】:

鉴于初始质心点是随机选择的,我想知道我们是否为完全相同的数据集获得大致相同的质心点。

我正在编写一个测试 kmeans 程序,但它们似乎不匹配。我想知道我所做的是否正确。

【问题讨论】:

【参考方案1】:

不,不能保证。

考虑具有 4 个点的 2 均值的简单情况:(1, 1), (-1, 1), (1, -1), (-1, -1)(二维平面中的正方形) 那么这两个质心可能是(0, 1), (0, -1)(1, 0), (-1, 0),两个截然不同的结果。

【讨论】:

【参考方案2】:

k-means 算法需要对质心位置进行一些初始化。对于大多数算法,这些质心是通过某种方法(例如 Forgy 方法或随机分区)随机初始化的,这意味着算法的重复迭代可以收敛到截然不同的结果。

请记住,k-means 是迭代的,并且在每个“移动质心”步骤中,每个质心都会移动到与其组成点的距离最小的位置。这使得它在很大程度上依赖于起始位置。

因此,通常建议运行 k-means 多次,并选择误差最小的聚类。

【讨论】:

【参考方案3】:

许多 k-means 实现允许修复随机数生成器以使结果可重现。

ELKI:-kmeans.seed 参数

Weka:-s 参数

在其他情况下,您通常可以自己提供初始中心,然后使用可重复的伪随机播种来自己选择它们。

【讨论】:

以上是关于kmeans是可重复的吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何保证多线程从mysql数据库查询的数据不重复

Mysql基础篇之事务真的是隔离的吗?--08

传递道具:道具“key”之一是未定义的,但另一个是可读的[重复]

使用 'var' 声明变量是可选的吗? [复制]

Kmeans算法

KMeans and optimization