为什么k-means不能给出全局最小值?

时间:2013-01-29 06:58:47

标签: cluster-analysis gradient data-mining k-means convergence

我读到k-means算法只收敛到局部最小值而不是全局最小值。为什么是这样?我可以从逻辑上思考初始化如何影响最终的聚类,并且有可能出现次优聚类,但我没有找到任何可以在数学上证明这一点的东西。

另外,为什么k-means是一个迭代过程? 我们不能仅仅部分区分目标函数w.r.t.到质心,把它等于零,找到最小化这个函数的质心?为什么我们必须使用梯度下降来逐步达到最小值?

2 个答案:

答案 0 :(得分:9)

考虑:

.   c   .

.   c   .

其中c是聚类质心。该算法将停止,但更好的解决方案是:

.       .
c       c
.       .

关于证明 - 您不需要数学证明来证明某些事情并非总是如此,您只需要一个反例,如上所述。您可以将上述内容转换为数学证明,但这是不必要的,通常需要大量工作;即使在学术界,仅仅举一个反例来反驳某些东西也是可以接受的。

k-means算法根据定义是一个迭代过程,它只是它的工作方式。 The problem of clustering is NP-hard,因此使用精确的算法计算质心将花费非常长的时间。

答案 1 :(得分:6)

不要混淆问题和算法。

k-means问题是找到质心的最小二乘分配。

有多种算法可供查找解决方案。

有一种明显的方法可以找到全局最优:枚举所有k^n可能的分配 - 产生全局最小值,但是在指数运行时。

更快时间内找到一个近似解决方案的重点更多。

Lloyd / Forgy算法是一种EM风格的迭代模型细化方法,保证收敛到局部最小值,因为存在有限数量的状态,并且目标函数必须减少在每一步。此算法通常在O(n*k*i) i << n运行,但通常只能找到本地最小值。

MacQueens方法在技术上不是迭代的。它是一种单通道,一元一元的算法,甚至在Lloyd意义上也找不到局部最小值。 (然而,您可以在数据集上多次传递,直到收敛,以获得局部最小值!)如果您执行单次传递,则在O(n*k)中,对于多次传递,添加i。它可能会或可能不会超过劳埃德。

然后是Hartigan和Wong。我不记得细节,IIRC它是Lloyd / Forgy的一个聪明,更懒惰的变种,所以可能也在O(n*k*i)中(尽管可能不会重新计算所有n*k距离以供以后迭代?)

你也可以做一个只测试l随机分配的随机算法。它可能根本找不到最小值,但以“线性”时间O(n*l)运行。

哦,您可以尝试不同的随机初始化,以提高找到全局最小值的机会。为试验次数添加因子t ...