k-means
主要思想
有四个牧师去郊区布道,一开始牧师们随意选择了几个布道点,并且把这几个布道点的情况公告给了郊区所有的居民,于是每个居民到离自己家最近的布道点去听课。听课之后,大家觉得距离太远了,于是每个牧师统计了一下自己上课所有居民的地址,搬到了所有地址的中心地带,并且在海报上更新了自己的布道点的位置。牧师每一次移动不可能离所有人都很近。有的人发现A牧师移动以后自己还不如去B牧师出听课更近,于是每个居民又去了离自己最近的布道点,…,这样,牧师每个礼拜更新自己的位置,居民根据自己的情况选择布道点,最终稳定下来。
从上图中,我们可以看到,A,B,C,D,E是五个在图中点,而灰色的点是我们的种子点,也就是我们用来找点群的点。有两个种子点,所以看= 2
然后K-mean的算法如下:
1.随机在图中取k(这里k = 2)个种子点
2.然后对图中所有点求到这个k个种子点的距离,假如点
离种子点
最近,那么
属于
点群(上图中,我们可以看到A,B输入上面的种子点,C,D,E属于下面中部的种子点)
3.接下来,我们要移动种子点到属于他的"点群"的中心
4.重复第2、3步,直到种子点没有移动(我们可以看到图中的第四步上面的种子点聚合了A,B,C,下面的种子点聚合了D,E)
归纳下K-mean算法的过程是
1.选取初始聚类中心
2.通过计算距离进行聚类
3.重新计算聚类中心
4.重复2-3步直至聚类中心不发生改变(或者变化小于一定的阈值)或者达到迭代次数上限
k-mean损失函数浅探
该算法旨在最小化目标函数,即在上面这些情况下的平方误差函数
其中
代表聚类后的k个类别
是我们这里选定的距离公式,用于计算数据点和群集中心的距离
那么,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是随机变量,那么
更特殊的形式
log函数上的jensen不等式:
算法思路
给定的m个观察样本{
},模型的参数为
,我们想找到隐参数z,能使得
最大,简历似然函数
直接计算上述似然函数的最大值比较困难,所以我们希望能够找到一个不带隐变量z的函数
恒成立,并用$\gamma (x|\theta) $逼近目标函数。
在绿色线位置,找到一个函数
,能够使得该函数最接近目标函数,固定
函数,找到最大值,然后更新
,得到红线
对于红线位置的参数
:固定
,找到一个最好的函数
,使得该函数最接近目标函数。重复该过程,直到收敛到局部最大值。
K-means的收敛性
求解的似然函数是
E步是固定模型参数
(中心点的位置),进而求隐变量的分布,也就是每个样本属于哪个类型
M步是计算出所有样本所属类别之后,更新模型参数
(中心点的位置):
通过将K-means"EM"化,就可以通过说明EM收敛性等价到K-means收敛性