首先来几个博客:
1、https://www.jianshu.com/p/c57ef1508fa7
2、http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html
3、https://blog.csdn.net/lvhao92/article/details/50805021
4、https://blog.csdn.net/zouxy09/article/details/8537620
复述:
1、EM算法第一印象:
a、它是种特别的极大似然估计。
b、它的特殊性在于含有隐变量。
回想下似然函数=>逻辑回归=>李航的书79页=>P(Y=1|x)=π(x),P(Y=0|x)=1-π(x)=>P就是参数,y就是观测到的变量=>已经观测到了一系列的y值,最大似然就是求参数P,使得组成当前这一系列y的概率最大。
可以看到,y是可观测的序列,然鹅现实世界是复杂的,在你看到的表象的背后,还有阴暗的东西,冥冥之中操纵着y,但是我们看不到那个隐藏的东西,EM算法就是将隐变量及其对应的参数都最大似然出来。
如果还是不理解到底隐藏变量是啥,那么举个栗子(依然抛硬币)吧:
现在有两个硬币A和B,要估计的参数是它们各自翻正面(head)的概率。为什么是硬币A和B两个硬币呢?说明A和B应该是不同的,因为我们还有个隐藏的变量C,我们要以C的取值来决定抛A还是B,但是我们列不出来C的序列(它是隐藏的,观测不到)。我们只有一系列硬币正面和反面的数据,比如硬币被抛了10次,我们记录下来的只有H T T T H H T H T H,这么一个序列,至于序列里面哪些是A得到的T和H,哪些是B得到的T和H,我们不知道。但是我们可以用EM来估计出A出现的概率、B出现的概率,它们俩的出现的概率就是变量C对应的参数,我们还可以用EM来估计出A是正反面的概率也就是变量A的参数,B是正反面的概率也就是B的参数。
下面这个例子是真的好:
现在有两个硬币A和B,要估计的参数是它们各自翻正面(head)的概率。观察的过程是先随机选A或者B,然后扔10次。以上步骤重复5次。
下图是别人给的解释:
由图我们知道:
对于因变量C,我们不知道它的取值序列,但是我们应该得知道它的取值范围,或者可取哪些值,在该例子中,也就是我们得知道隐变量C的值有A和B两种。
对上面第二个图的解释:
按照EM算法的思想:
a、我们先假定(或者说给初始值)A正面朝上的概率为0.6,B正面朝上的概率为0.5,但是我们不给隐变量C为A和为B的概率(可能因为它是隐变量,对它比较歧视吧)。
b、我们有了观测序列,也就是