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

参考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 对应的c b
简单指出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最小化。
总体思想还是一个迭代优化的过程,有目标函数,有参数变量,多了隐变量,确定其他参数估计隐变量,再由确定的隐变量估计其他参数,直至目标最优。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值