Processing math: 19%

K-means

1. Kmeans算法原理

Kmeans算法思想:按照样本间距离大小,划分为K个簇,使得每个簇内部的样本点尽量紧密,簇之间的样本点离得尽量远。

假设簇的划分为(C1,C2,,CK),Kmeans的目标是最小化平方误差ni=1xiCk||xiμk||22,其中μk=1|Ck|xCkxCk的质心。

Kmeans算法流程:(类别数K已经选定)

  1. 初始化簇的划分C=C1,C2,,CK和质心μ1,μ2,,μK
  2. 对于每一轮迭代:
    1. 每个计算样本xiμk之间的距离dik=||xiμk||22,假如dij=min,将样本归为C_j=C_j\cup{x_i}
    2. 得到了新的划分C,重新计算每个簇的质心\mu_k=\frac{1}{|C_k|}\sum\limits_{x\in C_k}x
  3. 质心不再发生变化了,说明算法已经收敛,输出最终的划分C

2. Kmeans与GMM、EM算法的关系

最直观的感受是Kmeans算法也是迭代的求解最优的参数(质心)。事实上,Kmeans可以看作是GMM的特殊情况。

回顾一下GMM(详见GMM博客),引入隐变量Z服从一个离散的分布p_kk=1,\dots,K,当Z属于第k个取值时,X服从高斯分布N(\mu_k,\Sigma_k),GMM就是找到参数p_k,\mu_k,\Sigma_k使得X的log-likelihood\sum\limits_{i}\log p(x|p,\mu,\Sigma)达到最大。

2.1. GMM如何变成Kmeans?

将GMM里面每个component的协方差矩阵\Sigma_k都变为\epsilon I,这样高斯分布的协方差就固定了,不需要再参数估计。

\Sigma_k=\epsilon I固定之后,会有什么影响?样本点x_i的后验概率为

\epsilon\rightarrow0,上式分母中最小的一项为||x_i-\mu_j||^2,最慢的趋向于0. 所以当\epsilon\rightarrow0时,p(z_i=C_k|x_i)中其他项都趋近于0,只有|||x_i-\mu_j||^2那一项比较大,所以

所以,我们得到了样本点分配到簇的hard assignment,正如Kmeans算法,每个样本点会被分配到离它最近的簇。

[2] Means algorithm performs hard assignment of data points to cluster, in which each data point is associated uniquely with one cluster, the EM algorithm makes a soft assignment based on the posterior probabilities.

2.2. Kmeans的E-step

GMM中的E-step是最大化Q函数

\epsilon\rightarrow 0时,如果只考虑参数\mu(不考虑参数p),把化简之后的后验概率p(z_i=C_k|x_i)代入Q函数,得到

因此,经过化简之后的GMM的最大化Q函数,实际上就是最小化每个点到最近质心的距离之和,与Kmeans的算法一致。

2.3. Kmeans的M-step

GMM中参数\mup迭代的公式为:

经过化简之后

  • \mu_k^{(t+1)} = \sum\limits_{i\in C_k}\frac{x_i}{|C_k|},即为属于第k个簇的样本均值,与Kmeans算法一致;

  • p_k^{(t+1)} = \frac{|C_k|}{n},即为每个簇占总样本的比例,不过在Kmeans算法里,这个参数不再重要。

2.4. 图解

下面2幅图是一维GMM和Kmeans的比较,当\epsilon\rightarrow0时,\epsilon I表示高斯分布几乎没有variance,GMM从上图变成下图的样子。

从混合模型的角度出发,GMM的点(例如图中的黄色星星)有一定的概率三种不同的高斯分布,但是Kmeans只有一种选择,那就是离这个点最近的\mu.

GMM的目标是确定三个高斯分布的参数,使得样本点的log-likelihood达到最大;而Kmeans的目标是确定\mu_1,\mu_2,\mu_3的值,使得样本点到最近\mu值的距离之和最小。从图容易理解,Kmeans里面参数p不再重要,只需要找到最佳的参数\mu.

GMM v.s. K-means

如果是样本是三维的话,Kmeans由于是GMM的协方差矩阵取\epsilon I的特殊情况,所以Kmeans是在球形范围内寻找样本点,GMM是椭球形范围内寻找。

因为Kmeans是简化之后的GMM,Kmeans的收敛速度更快。

3. References

  1. K-Means聚类算法原理 Pinard
  2. PRML Chapter 9.3.2
  3. 请问如何用数学方法证明K-means是EM算法的特例?