k-means

主要思想

有四个牧师去郊区布道,一开始牧师们随意选择了几个布道点,并且把这几个布道点的情况公告给了郊区所有的居民,于是每个居民到离自己家最近的布道点去听课。听课之后,大家觉得距离太远了,于是每个牧师统计了一下自己上课所有居民的地址,搬到了所有地址的中心地带,并且在海报上更新了自己的布道点的位置。牧师每一次移动不可能离所有人都很近。有的人发现A牧师移动以后自己还不如去B牧师出听课更近,于是每个居民又去了离自己最近的布道点,…,这样,牧师每个礼拜更新自己的位置,居民根据自己的情况选择布道点,最终稳定下来。
算法强化 —— K-means
算法强化 —— K-means
从上图中,我们可以看到,A,B,C,D,E是五个在图中点,而灰色的点是我们的种子点,也就是我们用来找点群的点。有两个种子点,所以看= 2

然后K-mean的算法如下:
1.随机在图中取k(这里k = 2)个种子点
2.然后对图中所有点求到这个k个种子点的距离,假如点PiP_i离种子点SiS_i最近,那么PiP_i属于SiS_i点群(上图中,我们可以看到A,B输入上面的种子点,C,D,E属于下面中部的种子点)
3.接下来,我们要移动种子点到属于他的"点群"的中心
4.重复第2、3步,直到种子点没有移动(我们可以看到图中的第四步上面的种子点聚合了A,B,C,下面的种子点聚合了D,E)

归纳下K-mean算法的过程是

1.选取初始聚类中心
2.通过计算距离进行聚类
3.重新计算聚类中心
4.重复2-3步直至聚类中心不发生改变(或者变化小于一定的阈值)或者达到迭代次数上限

k-mean损失函数浅探

该算法旨在最小化目标函数,即在上面这些情况下的平方误差函数
argminSi=1kjSixjμSi2\underset{S}{\arg \min } \sum_{i=1}^{k} \sum_{j \in S_{i}}\left\|x_{j}-\mu_{S_{i}}\right\|^{2}
其中S=S1,S2,...,SkS = S_1,S_2,...,S_k代表聚类后的k个类别xjμsi2||x_j - \mu_{si}||^2是我们这里选定的距离公式,用于计算数据点和群集中心的距离
那么,k-means是否一定会收敛?k-means背后的理论支撑————EM(Expectation Maximum)算法

Expectation Maximum

问题定义
假设有两枚硬币A,B,以相同的概率随机选择一个硬币,进行如下抛硬币实验:共做5次实验,每次实验独立的抛10次,结果如下表,例如某次实验产生了H,T,T,T,H,H,T,H,T,H(H代表正面朝上)。a是在知道每次选择的是A还是B的情况下进行,b是在不知道选择的是A还是B的情况下进行,问如何估计两个硬币正面出现的概率。
a Maximum likelihood

CoinA CoinB
NULL 5H,5T
9H,1T NULL
8H,2T NULL
NULL 4H,6T
7H,3T NULL
24H,6T 9H,11T

b Expectation maximization

CoinA CoinB
2.2H,2.2T 2.8H,2.8T
7.2H,0.8T 1.8H,0.2T
5.9H,1.5T 2.1H,0.5T
1.4H,2.1T 2.6H,3.9T
4.5H,1.9T 2.5H,1.1T
21.3H,8.6T 11.7H,8.4T

在case b中,我们假设A硬币投正面的概率是0.6,B硬币投正面的概率是0.5,然后通过极大似然估计来估计每一组结果是由A硬币投出的概率和由B硬币投出的概率。然后通过估计出来的选择硬币概率反过来重新计算投正面概率。其中每一轮选择的是A硬币还是B硬币我们称之为隐参数z,A硬币投正面的概率和B硬币投正面的概率称之为模型参数θ\theta
总而言之,EM就是解决带隐参数的参数估计问题的一类算法。

Jensen不等式

算法强化 —— K-means
如果f是凸函数,X是随机变量,那么
E[f(X)]f(EX)E[f(X)]\geq f(EX)
更特殊的形式
f(x1+x2++xnn)f(x1)+f(x2)++f(xn)nf\left(\frac{x_{1}+x_{2}+\cdots+x_{n}}{n}\right) \leq \frac{f\left(x_{1}\right)+f\left(x_{2}\right)+\cdots+f\left(x_{n}\right)}{n}
log函数上的jensen不等式:
算法强化 —— K-means
E[log(X)]log(EX)E[log(X)] \leq log(EX)

算法思路

给定的m个观察样本{x(1),x(2),...,x(m)x^{(1)},x^{(2)},...,x^{(m)}},模型的参数为θ\theta,我们想找到隐参数z,能使得p(X,z)p(X,z)最大,简历似然函数
(θ)=i=1mlogp(x(i);θ)=i=1mlogzp(x(i),z;θ)\begin{aligned} \ell(\theta) &=\sum_{i=1}^{m} \log p\left(x^{(i)} ; \theta\right) \\ &=\sum_{i=1}^{m} \log \sum_{z} p\left(x^{(i)}, z ; \theta\right) \end{aligned}
直接计算上述似然函数的最大值比较困难,所以我们希望能够找到一个不带隐变量z的函数γ(xθ)l(x,z;θ)\gamma (x|\theta) \leq l(x,z;\theta)恒成立,并用$\gamma (x|\theta) $逼近目标函数。

算法强化 —— K-means
在绿色线位置,找到一个函数γ\gamma,能够使得该函数最接近目标函数,固定γ\gamma函数,找到最大值,然后更新θ\theta,得到红线
对于红线位置的参数θ\theta:固定θ\theta,找到一个最好的函数γ\gamma,使得该函数最接近目标函数。重复该过程,直到收敛到局部最大值。

K-means的收敛性

求解的似然函数是
P(x,zμ1,μ2,,μk){exp(xμz22),xμz2=minkxμk20,xμz2>minkxμk2P\left(x, z | \mu_{1}, \mu_{2}, \ldots, \mu_{k}\right) \propto\left\{\begin{aligned} \exp \left(-\left\|x-\mu_{z}\right\|_{2}^{2}\right),\left\|x-\mu_{z}\right\|_{2}=\min _{k}\left\|x-\mu_{k}\right\|_{2} \\ 0,\left\|x-\mu_{z}\right\|_{2}>\min _{k}\left\|x-\mu_{k}\right\|_{2} \end{aligned}\right.
E步是固定模型参数μk\mu_k(中心点的位置),进而求隐变量的分布,也就是每个样本属于哪个类型
γnk={1, if k=argminjxnμj20, otherwise \gamma_{n k}=\left\{\begin{array}{ll} 1, & \text { if } k=\operatorname{argmin}_{j}\left\|x_{n}-\mu_{j}\right\|^{2} \\ 0, & \text { otherwise } \end{array}\right.
M步是计算出所有样本所属类别之后,更新模型参数μk\mu_k(中心点的位置):
μk=nγnkxnnγnk\mu_{k}=\frac{\sum_{n} \gamma_{n k} x_{n}}{\sum_{n} \gamma_{n k}}
通过将K-means"EM"化,就可以通过说明EM收敛性等价到K-means收敛性

相关文章: