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