EM 算法的英文全称是: Expectation-Maximum。
EM 算法的步骤
假设 (Z) 是隐变量,( heta) 是待定参数。
- E 步:固定参数 ( heta),求 (Z) 的期望;
- M 步:求 ( heta) 的极大似然估计。
与 K-means 算法的比较
1、固定聚类中心,把每一个数据点分配到最近的中心(先确定隐含类别变量 (c),得到每个数据点的类别);
2、现在每个数据点都有了类别,我们发现,可以重新计算每个类别的中心,使得损失函数 (J) 变得更小(固定了每个数据点的类别,找到聚类中心,使得损失函数变得更小)。
这样从 K-means 里我们可以看出它其实就是 EM 的体现,E 步是 ,M 步更新其他参数 (mu) 来使 (J) 最小化。
K-means 一开始不知道每个样例 (x^{(i)}) 对应隐含变量,也就是每个数据 (x^{(i)}) 对应的类别 (c^{(i)}) ,这里 (i) 是数据集编号。
最开始可以对每一个数据任意指定一个 (c^{(i)}) 给它,然后为了让完全数据的联合概率分布的似然函数 (P(x,y)) 最大(这里是要让损失函数 (J) 最小)。
我们求出在每个数据给定 (c^{(i)}) 情况下,(J) 最小时的(mu_j)(前面提到的其他未知参数,这里是聚类中心),然而此时发现,可以有更好的 (c^{(i)})(质心与样例距离最小的类别 (x^{(i)}) )指定给样例 (x^{(i)}) ,那么(c^{(i)})得到重新调整,上述过程就开始重复了,直到没有更好的 (c^{(i)}) 指定。
K-means 算法的介绍可以参考:http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html 。
这里的隐含类别变量指定方法比较特殊,属于硬指定,从 (k) 个类别中硬选出一个给样例,而不是对每个类别赋予不同的概率。总体思想还是一个迭代优化过程,有目标函数,也有参数变量,只是多了个隐含变量,确定其他参数估计隐含变量,再确定隐含变量估计其他参数,直至目标函数最优。
(EM算法)The EM Algorithm
https://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html
E 步:找到下界;
M 步:优化下界。
刘建平:EM算法原理总结
https://www.cnblogs.com/pinard/p/6912636.html
E 步:计算联合分布的条件概率期望:
M 步:极大化 (L( heta, heta^{j})),得到 ( heta^{j+1}):
EM算法的收敛性思考:对数似然函数的值在迭代的过程中一直在增大。
K-Means聚类和EM算法复习总结:https://www.cnblogs.com/arachis/p/KMeans.html