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


17

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

另外,为什么k-means是一个迭代过程?我们不能仅将目标函数wrt与质心进行部分区分,将其等于零以找到使该函数最小化的质心吗?为什么我们必须使用梯度下降来逐步达到最小?


4
当一个平滑函数具有多个局部最小值时,它们中的每个必定会成为一个临界点(所有偏导数都消失了),因此您的算法是正确的,但通常它是无用的:您可以获得数量巨大的极其复杂的方程解决方案(甚至无限多个)。但是还有另一个问题:您如何知道k均值目标函数甚至在任何地方都是可微的?
whuber

1
我相信,当我对一个质心部分地区分目标函数时,另一质心簇中的点在导数中消失。因此,我们可以获得的质心将仅最小化特定簇的平方距离之和。
Prateek Kulkarni 2013年

3
只是部分原因,但并不能真正解释其行为。更重要的是,将点分配给质心是k-means所做的很大一部分。(一旦完成分配,就很容易计算出质心,而无需执行任何操作。)该分配是离散的:根本无法区分。而且,它组合起来很复杂:有种方式分配O(nk)n指向k簇。确实,完全没有必要使用梯度下降来找到质心。
Whuber

我同意,作业部分不能直接放入数学形式。只有通过这个孤立的步骤,我们才能移动质心以最小化功能。这是我看待梯度下降的方式:如果由于错误的初始化而使我们接近局部最小值,则梯度下降会将您拖到局部最小值。如果您通过良好的初始化接近全局最小值,则会将您拖到全局最小值下。但是,这种运动如何映射到群集分配是一个模糊的过程。
Prateek Kulkarni

不可微性被高估了:莱昂·巴托(Leon Bottou)在估计非常大的数据集上具有随机梯度下降的K-Means方面做了一些工作,并取得了一些成功。由于许多数据点,不可微性不会像在许多问题中那样造成大问题。(例如,卷积网络在本地也是不可微的,但无论如何都可以很好地工作,具有校正线性传递函数的许多神经网络体系结构也是如此)。真正的原因是多重最小值。
2013年

Answers:


10

您可以将k-means视为EM算法的特殊版本,可能会有所帮助。

说你是估计用于与固定到为所有的单位矩阵的协方差矩阵的每个集群中的多元正态分布,而是可变的均值其中是群集的索引。显然,如果参数{ μ }是已知的,就可以分配给每个点p其似群集(即,所述μ 要为其距离p中最小的)。用于此问题的EM算法几乎等同于k均值。μii{μi}pμip

周围的其他方法,如果你知道哪些点属于哪个集群,可以估算出最优的。封闭的形式解决这个(指找到全局最优)基本上说,找到最大似然模型{ μ }您点的所有可能的任务集成到集群。由于即使只有三十个点和两个聚类,仍然有大约十亿个这样的可能分配,因此这是不可行的。μi{μ^i}

取而代之的是,我们可以对隐藏参数(或模型参数)进行一些猜测,并重复执行这两个步骤(可能会以局部最大值结尾)。如果让每个集群对一个点承担部分责任,那么最终将获得EM,如果仅分配最优集群,则得到k-均值。

因此,执行摘要:从概率上讲,有一个全局解决方案,但是它要求您遍历所有可能的群集。显然,如果您具有目标函数,则同样如此。您可以遍历所有解决方案并最大化目标函数,但是迭代次数与数据大小成指数关系。


说得好!我将其标记为答案!
2013年

4

这是您要解决的问题:

X一世=1个ñĴ=1个ķX一世Ĵ||p一世-CĴ||2受:Ĵ=1个ķX一世Ĵ=1个一世CĴ 是聚类j的质心X一世Ĵ{01个}一世Ĵ

二进制变量指示是否将点i分配给聚类j。符号p ic j分别表示第j个簇的第i个点和质心的坐标。它们都位于R d中,其中d是数据点的维数。X一世Ĵ一世Ĵp一世CĴ一世Ĵ[Rdd

第一组约束条件是,应将每个点精确分配给一个群集。第二组约束条件(我们尚未在数学上定义)说,群集的质心坐标实际上取决于x i j变量的值。例如,我们可以将约束表达如下: c j = i x i j p i jĴX一世Ĵ

CĴ=一世X一世Ĵp一世Ĵ一世X一世Ĵ

但是,代替处理这些非线性约束,在K-Means中,我们(近似)解决了一个不同的问题,该问题的最优解与我们的原始问题相同:

X一世=1个ñĴ=1个ķX一世Ĵ||p一世-ÿĴ||2受:Ĵ=1个ķX一世Ĵ=1个一世X一世Ĵ{01个}一世ĴÿĴ[RdĴ

我们没有最小化到质心的距离,而是最小化了到任何点集的距离,这将提供更好的解决方案。事实证明,这些点恰好是质心。

现在要解决此问题,我们在该算法的步骤2-3中进行迭代,直到收敛为止:

  1. 变量赋一些值ÿĴ
  2. ÿĴX一世Ĵ
  3. X一世ĴÿĴ

在每个步骤中,目标函数都会提高(或在算法收敛时保持不变),因为在上一步中找到的解决方案位于当前步骤的搜索空间中。但是,由于我们在每个步骤中都固定了一些变量,因此这是一个局部搜索过程,不能保证最优性。

X一世ĴÿĴÿĴX一世ĴÿĴ


2

一个简单的例子可能会有所帮助。

让我们定义要聚类为的点集A = {1,2,3,4}

假设您要为A(2均值)找到2个合适的群集。至少有两个不同的设置可以满足k均值的固定条件。

设置1:

Center1 = 1, Cluster1 = {1}
Center2 = 3, Cluster1 = {2,3,4}

这里的目标是2。事实上,这是一个鞍点(try center1 = 1 + epsiloncenter1 = 1 - epsilon

设置1:

Center1 = 1.5, Cluster1 = {1,2}
Center2 = 3.5, Cluster1 = {3,4}

这里的目标是1/4。

如果将k均值初始化为第一个设置,则它将卡住..这绝不是全局最小值。

您可以使用前面示例的变体来创建两个不同的局部最小值。对于A = {1,2,3,4,5},设置cluster1={1,2}cluster2={3,4,5}在相同的客观价值将结果cluster1={1,2,3}cluster2={4,5}

最后,如果您选择

A = {1,2,3,4,6}
center1={2.5} cluster1={1,2,3,4} and 
center1={6} cluster1={6}

center1={2} cluster1={1,2,3} and 
center1={5} cluster1={4,6}


0

[这是@Peter回答之前的内容]
经过简短的讨论(在“评论”部分中),我觉得我必须回答自己的问题。

我相信,当我部分区分某个质心的目标函数时,另一质心的簇中的点在导数中会消失。因此,我们可以获得的质心将仅使特定簇的平方距离之和最小。

@whuber添加:

只是部分原因,但并不能真正解释其行为。更重要的是,将点分配给质心是k-means所做的很大一部分。(一旦完成分配,就很容易计算出质心,而无需执行任何操作。)该分配是离散的:根本无法区分。

如果有人要添加更多,那就太棒了。


0

每个人都已经解释了所有内容,但是我想补充一点,如果样本数据没有以高斯分布的形式分布,那么它可能会停留在局部最小值上。在K-means算法中,我们实际上是在尝试实现这一点。


我认为您不是“高斯”,而是“单峰”
Peter Leopold
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.