【问题标题】:Why doesn't k-means give the global minima?为什么 k-means 不给出全局最小值?
【发布时间】:2013-01-12 16:39:46
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    不要把问题和算法混为一谈。

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

    有多种算法可以找到解决方案。

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

    更多的注意力放在更快时间内找到近似解。

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

    MacQueens 方法在技术上不是迭代的。这是一种单程、一次一个元素的算法,甚至无法找到 Lloyd 意义上的局部最小值。 (但是,您可以在数据集上多次运行,直到收敛,以获得局部最小值!)如果您执行单次遍历,则在 O(n*k) 中,对于多次遍历添加 i。它可能需要也可能不会比 Lloyd 需要更多的通行证。

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

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

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

    【讨论】:

    • 好点。我要补充的是不要混合成本函数和问题。您可以使用各种成本函数,而不仅仅是平方误差。
    【解决方案2】:

    考虑:

    .   c   .
    
    .   c   .
    

    其中 c 是簇质心。算法会停止,但更好的解决方案是:

    .       .
    c       c
    .       .
    

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

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

    【讨论】:

    • 正如我所说,我可以想象次优聚类如何发生,以及算法如何停止在局部最小值。但我需要数学证明[或链接]。另外,您知道数学计算是否不可能/效率低下?如果不是,您是说人们会选择迭代过程而不是单步过程,只是因为 k-means 是这样定义的?
    • 适当地编辑了答案。
    • 只是支持这个答案的评论。一个反例是一个数学证明,证明(次优)局部最小值是可能的。不存在更高的证明标准。如果你想证明更强大的东西;可能有 40% 的时间你得到了一个糟糕的解决方案或其他东西,你必须准确地定义你的意思,然后证明它(很难)。但这是您问题的正确答案,符合最高证明标准。
    猜你喜欢
    • 2022-06-11
    • 2020-12-30
    • 2018-01-19
    • 2022-01-15
    • 2014-10-26
    • 2013-02-02
    • 2021-01-04
    • 2015-01-06
    • 2014-01-09
    相关资源
    最近更新 更多