K-means聚类算法背后的EM思想

来源:互联网 发布:linux下mysql安装 编辑:程序博客网 时间:2024/05/16 12:41

参考JerryLead
[https://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html]
K-means是聚类算法里最简单的一种,聚类属于无监督学习。K-means算法将样本{x1,x2,x3,...xn},每个样本xiRn ,聚类成 k 个cluster。
算法描述如下:
初始化阶段:从 N 个样本中随机选择 k 个聚类质心点c1,c2,...ck,且每个ciRn
迭代阶段直至收敛{
for i=1 to N ,计算距离它最近的cluster center
b(i):=argminj||xicj||2
for j=1 to k,重新计算该cluster的质心
cj:=Ni=11{b(i)=j}xiNi=11{b(i)=j}
}
K-means的目标是:
minJ(b,c)=Ni=1||xicb(i)||2
J是非凸函数,意味着K-means不能保证取得的是全局最小值,即K-means对质心初始化比较敏感。如果怕陷入局部最优,那么可以选取不同的初始值跑多次K-means,然后取其最小的J对应的cb
简单指出EM的思想,E步是估计隐含类别y的期望值,M步调整其他参数使得在给定类别y的情况下,极大似然估计P(x,y)能够达到极大值。然后重新估计y,重复上面的E步,M步,直至收敛。
对于K-means而言,开始我们将每个样本归属为距离它最近的cluster center,为了使J最小,我们调整cluster center;然后再将每个样本归属为离它最近的新的cluster center,…上述过程重复下去。可以看到,在K-means中,E步就是确定每个样本隐含变量(硬指定,而不是对每个类别赋予不同的概率),M步更新cluster center来使J最小化。
总体思想还是一个迭代优化的过程,有目标函数,有参数变量,多了隐变量,确定其他参数估计隐变量,再由确定的隐变量估计其他参数,直至目标最优。

原创粉丝点击