您的位置:首页 > 其它

EM算法的一些整理

2016-07-19 21:27 666 查看
今天把EM算法又重新看了一遍,于是决定对EM算法做一些整理,把EM算法的整个流程理清。

对于一般的给定样本,我们可以用最大似然估计或者损失函数来求解模型的参数,此时的样本数据是完备的。但是对于某些样本数据可能由两个部分组成,一个是我们观测到的数据,还有一些是我们无法观测的数据,也就是隐变量,对于这类问题,一般的最大似然估计是无法求解的。于是便有了EM算法。

我们来看一个具体的例子:

假如说我们现在有学生的身高数据10000个,但是我们不知道哪些是男性哪些是女性,那么现在如果要求我们估计一下对任意一个样本估计其性别。(EM算法可以计算出其后验概率,比如说对于任意一个样本,可以计算出是男性的概率是多少,女性的概率是多少):

对于上述问题,我们首先做一个假设,那就是男生的身高服从均值是u1,方差是a1^2的高斯分布,记做N(u1,a1^2),女生的身高服从均值是u2,方差是a2^2的高斯分布,记做N(u2,a2^2)。(注:用EM算法估计参数时首先确定模型,这里假设其服从高斯分布)。对于任意一个样本,假设其来自于是选取男生高斯分布产生的是可能性是aph1,是选取女生高斯分布产生的可能性是aph2。

于是我们需要估计的参数就是aph1,aph2,a1,u1,a2,u2。对于任意一个样本,比如说是x=1.82m,那我们根据经验可以猜测是男生的概率是0.8,是女生的概率是0.2(这两个概率是我们猜测的,也可以是不同值,但是一般来说是男生的可能性比较大),对于x=1.5m,我们可以猜测是女生的概率是0.9,是男生的概率是0.1,对于其他的样本我们都可以做出这种猜测。于是对于其他的样本我们都可以做出这种猜测。可见下表:
表1 对于某一个样本是男性的概率
X1

X2

X3



Xn

0.8

0.4

0.2



0.5

表2 对于某一个样本是女性的概率
X1

X2

X3



Xn

0.2

0.6

0.8



0.5

 

对于上述两个表我们可以做如下理解,一般来说,一个样本要么是男性,要么是女性,这是我们在知道样本是男性的情况下可以确定,也就是在已知情况下,一个样本是男性或者是女性的概率为1,于是计算均值时,直接把男性的身高数据加起来除以男性身高的数目即可得到男性身高的均值。

但是在未知情况下,对于一个样本,我们只能猜测这个样本是男是女,比如说是男的为0.8,女的为0.2,那么这个样本就是0.8个男的,0.2个女的(这里可能从数学的角度理解),那么我们就可以重新统计男生的个数和女生的个数,分别为男生的概率的加和与女生的概率的加和。那么u1就可以这么计算

,其中pi表示的是第i个样本是男生的概率,

,同理可计算出女生的几个参数。

对于每一个样本,如果我们事先给定了模型的参数。那么我们可以通过下面的等式计算某一个样本是是哪一个模型产生的:



式中的也就是上述所说的,表示第i个样本是第k个模型产生的概率,类比于上例,也就是第i个样本是男生的概率或者第i个样本是女生的概率。于是通过给定一个初始值aph1,aph2,a1,u1,a2,u2,我们可以不用像上述手动猜测,可以直接计算出第i个样本是第k个模型产生的概率,然后根据上述的式子计算出新的aph1,aph2,a1,u1,a2,u2,如此不断迭代,最后即可收敛到一个值,即是我们需要估计的参数。上述的理解是一种欧拉式的理解。并没有进行严格的数学证明。

我们可以使用高斯的方式进行证明。假设隐变量服从一个概率分布,严格的高斯证明通过找到最大释然函数的一个下界,然后求这个下界的最大值不断逼近最大似然函数。关于高斯的证明可以在很多教材中找到,这里不在赘述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  EM算法