k-means 算法陷入局部最小值意味着啥?

Posted

技术标签:

【中文标题】k-means 算法陷入局部最小值意味着啥?【英文标题】:What does it mean for the k-means algorithm to be trapped in a local minimum?k-means 算法陷入局部最小值意味着什么? 【发布时间】:2020-12-30 14:49:29 【问题描述】:

我正在学习 k-means 聚类算法。我读过这个算法的一个特点是它可以陷入局部最小值,增加找到全局最优值的机会的一个简单方法是用不同的随机种子重新启动算法。我了解算法的基本概念,它在第一次迭代中初始化任意质心/均值,然后将数据点分配给这些集群。在点全部分配后更新质心,并再次重新分配点。算法继续迭代,直到集群不再发生变化。

但是,在此算法的上下文中,我无法准确理解局部最小值的含义。任何见解都值得赞赏。

【问题讨论】:

【参考方案1】:

k-means 算法是一种迭代方法,它收敛到某个配置,使得点到中心的分配不再改变,并保持在该配置中。事实上,有很多这样的“吸引子”配置,每一个都对应于“拟合误差”的某个值(点到中心的总距离)。

如果您将拟合误差绘制为配置(中心位置)的函数,则此函数将具有许多局部最小值,并且您需要很大的运气才能进入全局最小值。

下图形象化了问题:

左图显示了您想要最小化的“拟合误差”。您想要达到的目标全局最小值是右图中的红点。但是因为每个蓝点也是一个局部最小值,所以算法很可能会卡在其中一个点上。

【讨论】:

可视化对我不起作用。对于大约 (1.8, 2.6) 处的蓝点,我希望有一个局部 最大值,并且只有一个“较小”的局部最小值在 (2.9, 2.4) 左右。

以上是关于k-means 算法陷入局部最小值意味着啥?的主要内容,如果未能解决你的问题,请参考以下文章

提醒一下技术人,你是不是陷入局部最优了

2D 中的滑动窗口最小值/最大值

K-means: optimization objective(最小化cost function来求相应的参数)

用`lsqcurvefit`拟合高斯时初始点的局部最小值

K-means聚类算法

scipy中的最小化,找到N维标量函数的所有局部最小值的算法