首先来几个博客:
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、它的特殊性在于含有隐变量。
c、它是一种算法不是模型,使用该算法的模型,属于生成模型。
回想下似然函数=>逻辑回归=>李航的书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、我们有了观测序列,也就是HHHHTHHHHH,我们可以求出该观测序列来自A的概率和来自B的概率,具体的做法就是:
假设只使用硬币A抛出上面的结果,记为P(A),那么:,假设只使用硬币B抛出上面的结果,记为P(B),那么,当然,观测序列的取值很有可能是有的是抛A得到的,有的是抛B得到的,那么在P(A)及P(B)已知的情况下,通过,就可以知道序列里抛A的概率,也就知道了抛B的概率,也就是序列来自A的概率及序列来自B的概率。我们已经看到观测序列的结果为9个H和1个T,那么来自A的H的个数就是0.8*9=7.2个,来自A的T的个数就是0.8个,来自B的H的个数就是0.2*9=1.8个,来自B的T的个数就是0.2*1=0.2个。
c、我们可以获取多个观测序列,这些观测序列都按照a-b的步骤计算:来自A的H的个数,来自A的T的个数,来自B的H的个数,来自B的T的个数(比如上图b),然后对来自A的H和T进行统计,可以计算得到新的,抛A得到H和T的概率,及抛B得到H和T的概率:
然重复b-c,最终重复10次,我们得到了最优解:,即A正面的概率及B正面的概率,其实我们也得到了来自A和来自B的概率,但是这个概率是因变量的参数。
一些总结:
EM算法的输出就是参数θ,θ对应的变量既包含隐变量也包含已知变量。
怎么能对EM有个简单的认识:
回顾逻辑回归中似然函数的形式: