k-means
主要思想
有四个牧师去郊区布道,一开始牧师们随意选择了几个布道点,并且把这几个布道点的情况公告给了郊区所有的居民,于是每个居民到离自己家最近的布道点去听课。听课之后,大家觉得距离太远了,于是每个牧师统计了一下自己上课所有居民的地址,搬到了所有地址的中心地带,并且在海报上更新了自己的布道点的位置。牧师每一次移动不可能离所有人都很近。有的人发现A牧师移动以后自己还不如去B牧师出听课更近,于是每个居民又去了离自己最近的布道点,…,这样,牧师每个礼拜更新自己的位置,居民根据自己的情况选择布道点,最终稳定下来。


从上图中,我们可以看到,A,B,C,D,E是五个在图中点,而灰色的点是我们的种子点,也就是我们用来找点群的点。有两个种子点,所以看= 2
然后K-mean的算法如下:
1.随机在图中取k(这里k = 2)个种子点
2.然后对图中所有点求到这个k个种子点的距离,假如点Pi离种子点Si最近,那么Pi属于Si点群(上图中,我们可以看到A,B输入上面的种子点,C,D,E属于下面中部的种子点)
3.接下来,我们要移动种子点到属于他的"点群"的中心
4.重复第2、3步,直到种子点没有移动(我们可以看到图中的第四步上面的种子点聚合了A,B,C,下面的种子点聚合了D,E)
归纳下K-mean算法的过程是
1.选取初始聚类中心
2.通过计算距离进行聚类
3.重新计算聚类中心
4.重复2-3步直至聚类中心不发生改变(或者变化小于一定的阈值)或者达到迭代次数上限
k-mean损失函数浅探
该算法旨在最小化目标函数,即在上面这些情况下的平方误差函数
Sargmini=1∑kj∈Si∑∥xj−μSi∥2
其中S=S1,S2,...,Sk代表聚类后的k个类别∣∣xj−μ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硬币投正面的概率称之为模型参数θ
总而言之,EM就是解决带隐参数的参数估计问题的一类算法。
Jensen不等式

如果f是凸函数,X是随机变量,那么
E[f(X)]≥f(EX)
更特殊的形式
f(nx1+x2+⋯+xn)≤nf(x1)+f(x2)+⋯+f(xn)
log函数上的jensen不等式:

E[log(X)]≤log(EX)
算法思路
给定的m个观察样本{x(1),x(2),...,x(m)},模型的参数为θ,我们想找到隐参数z,能使得p(X,z)最大,简历似然函数
ℓ(θ)=i=1∑mlogp(x(i);θ)=i=1∑mlogz∑p(x(i),z;θ)
直接计算上述似然函数的最大值比较困难,所以我们希望能够找到一个不带隐变量z的函数γ(x∣θ)≤l(x,z;θ)恒成立,并用$\gamma (x|\theta) $逼近目标函数。

在绿色线位置,找到一个函数γ,能够使得该函数最接近目标函数,固定γ函数,找到最大值,然后更新θ,得到红线
对于红线位置的参数θ:固定θ,找到一个最好的函数γ,使得该函数最接近目标函数。重复该过程,直到收敛到局部最大值。
K-means的收敛性
求解的似然函数是
P(x,z∣μ1,μ2,…,μk)∝⎩⎪⎨⎪⎧exp(−∥x−μz∥22),∥x−μz∥2=kmin∥x−μk∥20,∥x−μz∥2>kmin∥x−μk∥2
E步是固定模型参数μk(中心点的位置),进而求隐变量的分布,也就是每个样本属于哪个类型
γnk={1,0, if k=argminj∥xn−μj∥2 otherwise
M步是计算出所有样本所属类别之后,更新模型参数μk(中心点的位置):
μk=∑nγnk∑nγnkxn
通过将K-means"EM"化,就可以通过说明EM收敛性等价到K-means收敛性