从似然函数到EM算法

来源:互联网 发布:qq群优化排名多少钱 编辑:程序博客网 时间:2024/06/06 07:04

上次关于似然函数的学习中我们知道:

求最大似然函数预计值的一般步骤:

(1)写出似然函数;

(2)对似然函数取对数,并整理;

(3)求导数,令导数为0,得到似然方程;

(4)解似然方程,得到的參数即为所求;

 

我们说似然函数的意思就是说如果给你一大堆观察数据,然后你自己估计一个模型去最大的逼近这个输出结果。现在问题来了,如果给你的这一大堆数据又分成了两个小区域,比如性别,男或者女,男生的服从另一个分布,女生服从一个分布,这两个分布肯定是不一样的。那么问题来了,一堆混合样本让你训练出两个模型去逼近样本。关键这些样本你并不知道属于两个模型中的哪一个。你应该怎么办呢?

也就是说现在有了中间变量分成了两类,性别。说白了,如果有了中间变量的信息,你可以轻松的训练出模型,现在没有中间变量,你怎么用似然方法去求解呢?‘

其实这个时候可以按照聚类的思想来求解均值的,但是我们先按照似然的思想来看。

似然的问题这个时候就是EM算法的问题了。我们假定中间变量也是一个参数,也就是如果他是已知的,这样问题是不是就回归到普通过的似然函数的求解问题了。直接按上面说的最大似然预计就好了。

你可能觉得这个隐含变量是未知的,这个假设是不存在的,是不是?那么给它赋值一个初始值呢?此时我们是不是就可以正常的求解我们的似然函数,然后的到我们的模型了呢(也就是说我们知道了数据,知道了中间变量,这样我们就可以将数据分开,然后训练了。训练之后得到了我们的模型,这个时候我们的模型是在已知未知参数的情况下得到的。它显然是不精确的,那么怎么办呢,假定我们的未知变量是z,我们训练出模型之后,theta是已知的了,这样我们用得到的这个模型去产生我们的样本的概率就知道了(它是一个关于z的函数),为了让这个概率最大,显然这就变成了由z去求解一个函数最大化的问题,直接求导数等于0就好了。是不是大功告成了。

等等,你会发现跟EM算法描述的好像不对。是的,相差很大的,为什么呢?因为最初我们假设的是z不是变量,是一个初值的,具体的数值的,因此我们并不能根据这个方法通过求导来得到我们想要模型了。那么具体用什么方法呢,边缘概率密度函数啊。(其实就是用迭代的方法啊,也就是我们的EM算法了,但是还是要做一定的变换分析其实还是一样的思想,只是你不能假定我们的数据是定值了,这样其实就转化到了概率上的边缘概率密度的公式上了。)(对原来的似然对位置变量求导,就得到了参数theta的边缘概率密度。)

公式如下:(公式是倒推的,从模型到概率最大化)

 

其中(2)到(3)是jiesen不等式(关于log函数的杰森不等式 log((a+b)/2)>=1/2(log(a/2)+log(b/2))),其中等号成立的条件是:也就是

所以我们只要不停的逼近上界就行了。也就是最化似然函数了EM

由于(由于Q是随机变量z(i)的概率密度函数),则能够得到:分子的和等于c(分子分母都对全部z(i)求和:多个等式分子分母相加不变,这个觉得每一个例子的两个概率比值都是c),则:

至此,我们知道了我们未知参数的概率密度函数,这样就可以进行我们的更新了。也就是迭代,最大化Q就行了,得到更好的假设未知变量。

EM算法的步骤:

 

1.     初始化分布參数θ,和z

2.     然后反复下面步骤直到收敛

 

       E步骤:依据參数初始值或上一次迭代的模型參数来计算出隐性变量的后验概率,事实上就是隐性变量的期望。作为隐藏变量的现预计值:
       

       M步骤:将似然函数最大化以获得新的參数值:

          

       这个不断的迭代,就能够得到使似然函数L(θ)最大化的參数θ了

 

https://www.cnblogs.com/zfyouxi/p/4297500.html从最大似然到EM算法浅解(EM分析部分经典)

http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.htmlEM算法)The EMAlgorithm(EM算法的详细介绍)