EM算法

简介: 一. EM算法要解决的问题我们经常会从样本观察数据中,找出样本的模型参数。 最常用的方法就是极大化模型分布的对数似然函数。但是在一些情况下,我们得到的观察数据有未观察到的隐含数据,此时我们未知的有隐含数据和模型参数,因而无法直接用极大化对数似然函数得到模型分布的参数。

一. EM算法要解决的问题
我们经常会从样本观察数据中,找出样本的模型参数。 最常用的方法就是极大化模型分布的对数似然函数。
但是在一些情况下,我们得到的观察数据有未观察到的隐含数据,此时我们未知的有隐含数据和模型参数,因而无法直接用极大化对数似然函数得到模型分布的参数。怎么办呢?这就是EM算法可以派上用场的地方了。
EM算法解决这个的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含数据(EM算法的E步),接着基于观察数据和猜测的隐含数据一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。由于我们之前的隐藏数据是猜测的,所以此时得到的模型参数一般还不是我们想要的结果。不过没关系,我们基于当前得到的模型参数,继续猜测隐含数据(EM算法的E步),然后继续极大化对数似然,求解我们的模型参数(EM算法的M步)。以此类推,不断的迭代下去,直到模型分布参数基本无变化,算法收敛,找到合适的模型参数。
二、EM算法的推导
先来举个栗子:
不存在中间变量的EM。
假设有一天人类消除了性别的差别,所有的人都是同一个性别。这个时候,我给了你一群人的身高让你给我做一个估计人身高的模型。
怎么办呢?感觉上身高应该是服从高斯分布吧,所以假设人的身高分布服从高斯分布$N(\mu ,\sigma ^2)$,现在我又有了N个人的身高的数据,我就可以照着上面的套路进行了。先求对数似然函数

$$ L(\mu ,\sigma ^2)=\prod_{i=1}^{n}\frac{1}{\sqrt[2]{\pi}\sigma ^2}e^{-\frac{(x_i-\mu )^2}{2\sigma ^2}} $$

$$ l(\mu ,\sigma ^2)=lnL=\sum_{i=1}^{n}log\left ( \frac{1}{\sqrt[2]{\pi }\sigma ^2}e^-{\frac{\left ( x_i-\mu \right )^2}{2\sigma ^2}} \right ) $$

直接使用对数似然估计就可以得出参数值;

存在中间变量的EM。
正如你所知,身高和人种的关系挺大的,而人类又有那么多种族,所以,再给你一堆人的数据,要做一个估计人身高的模型,那我们应该怎么做呢?
首先,现在分为不同种族若干类了,这些类别的概率肯定有个分布,其次,各种族当中身高是服从不同的分布的,那么这样身高的估计就变成了

$$ P(x=x_i)=\sum_{\alpha _k}P(x_i|\alpha _k,\mu _k,\sigma _k^2) $$

$\alpha$代表了该样本属于某一人种的比例,其实就是隐藏的中间变量。$\mu$和$\sigma$为各类高斯分布的参数。按照我们上面的套路就是求对数似然概率再求导得到参数的估计,那么先来看看似然函数

$$ L(\alpha ,\mu ,\sigma ^2)=\prod_{i=1}^{n}\sum_{\alpha ^k}P\left ( x_i|\alpha _k,\mu _k,\sigma _k^2 \right ) $$

$$ l(\alpha ,\mu ,\sigma ^2)=ln(L)=\sum_{i=1}^{n}log\left ( \sum_{a_k}p\left ( x_i|\alpha _k,\mu _k,\sigma _k^2 \right ) \right ) $$

由于Q是$\alpha$的一个分布,所以似然函数可以看成是一个$log(E(x))$,$log$是个凹函数啊,割线始终在函数图像下方,Jensen不等式反向应用一下,有$log(E(x))>=E(log(x))$,所以上面的对数似然有

$$ l(\alpha ,\mu ,\sigma ^2)=\sum_{i=1}^{n}log\left ( \sum_{a_k}Q(\alpha _k)\frac{p\left ( x_i|\alpha _k,\mu _k,\sigma _k^2 \right )}{Q(\alpha _k)} \right )\geq $$

$$ \sum_{i=1}^{n}\sum_{\alpha _k}Q(\alpha _k)log\left (\frac{P\left ( x_i|\alpha _k,\mu _k,\sigma _k^2 \right )}{Q(\alpha _k)} \right ) $$

冷静分析一下现在的情况,我们现在得到了一个对数似然函数的下界函数,我们采用曲线救国的战略,我们求解它的局部最大值,那么更新后的参数带入这个下界函数一定比之前的参数值大,而它本身又是对数似然函数的下界函数,所以参数更新后,我们的对数似然函数一定是变大了!所以,就利用这种方法进行迭代,最后就能得到比较好的参数估计。还有点晕吗,没事,我从百度扒个图给你来个形象的解释

image

下面具体来讲EM算法的推导:
在此先将问题抽象:
已知模型为$P(Y|θ),Y=(y_1, y_2,..., y_n)$,求θ。
为了满足EM算法的情形,我们引入隐含变量$Z=(z_1, z_2, ..., z_n)$。
解:
1、虽然我们面对的概率模型里含有隐变量,但我们的目标是不会变的,即,极大化观测数据(不完全数据)Y关于参数θ的对数似然函数,即,极大化:

image


PS:上面式子的第二个等号利用了边缘概率与联合概率方面的知识;第三个等号利用了条件概率公式,于是$P(y,z) = P(y|z) P(z)$,最后把参数θ加上去,即,所有式子都添加θ,就成了9.12式。
我们开始对L(θ)进行迭代,使得新的估计值θ能使L(θ)增加,假设现在已经迭代了i次,于是就是使当前的L(θ)大于$L(θ^i)$,即$L(θ) >L(θ^i)$,就这样使L(θ)逐步达到最大值。
PS:这就是EM算法中的M步。
为此,我们考虑两者的差:

image


利用Jensen不等式得到其下界:

image


为了便于之后的书写,令

image


则$L(θ)>= B(θ, θ^i)$
即函数$B(θ, θ^i)$是L(θ)的一个下界。PS:$L(θ^i)= B(θ^i, θ^i)$
因此,任何可以使$B(θ, θ^i)$增大的θ也可以使L(θ)增大。
于是,为了使L(θ)有尽可能大的增长,选择$B(θ, θ^{(i+1)})$使$B(θ, θ^i)$达到极大,即:

image


现在求$θ^{(i+1)}$的表达式

image

3,为了计算上面的式子,我们就要计算(所以在算法中,这一步在上一步之前)

image


而这个就是完全观测数据的对数似然函数$logP(Y,Z | θ)$关于在给定观测数据Y和当前参数$θ^i$下对未观测数据Z的条件概率分布$logP(Y,Z | θ^i)$的期望,这个被称为Q函数,即:

image


也就是说,要计算期望。
而这,就是EM算法中的E步。
4,不断迭代上面两步,直到收敛。
用图形解释EM算法的推导过程的话就是下面这样:

image


如上图所示,图中上方曲线为L(θ),下方曲线为$B(θ, θ^i)$。在推导过程中已经知道$B(θ, θ^i)$是对数似然函数L(θ)的下界,且两个函数在点$θ = θ^i$处相等。之后EM算法找到下一个点$θ^{(i+i)}$使函数$B(θ, θ^i)$极大化,也使函数$Q(θ, θ^i)$极大化。这时$L(θ) >= B(θ, θ^i)$,函数$B(θ, θ^i)$的增加保证对数似然函数L(θ)在每次迭代中也是增加的。EM算法再点$θ^{(i+i)}$重新计算Q函数值,进行下次迭代。在这个过程中,对数似然函数L(θ)不断增大。
不过,从图中可以推断出EM算法可能因为陷入局部最优值而找不到全局最优解。这点需要注意。

三、EM算法的流程
下面就把上面的推导汇总成EM算法吧。
输入:
观测变量数据Y,隐变量数据Z,联合分布P(Y,Z | θ),条件分布P(Z | Y,θ);
输出:
模型参数θ;
解:
1,选择参数的初值$θ^0$;
PS:这个初值不管是经验也好猜也好,反正你给它一个初始值就行。当然了,在实际使用中这个初始值往往由其他算法的结果给出,当然随机给他分配一个符合定义域的值也可以。
2,E步:记$θ^i$为第i次迭代参数θ的估计值,在第i+1次迭代的E步,计算

image


这里,$P(Z |Y, θ^i)$是在给定观测数据Y和当前的参数估计$θ^i$下隐变量数据Z的条件概率分布;
3,M步:求使$Q(θ, θ^i)$极大化的θ,确定第i+1次迭代的参数的估计值$θ^{(i+1)}$

image

4,重复上面两步,直到收敛。
四、Q函数
Q函数就是EM算法第二步的$Q(θ, θ^i)$,我将Q函数单独放在一章是因为Q函数是EM算法的核心。
如果你已经深刻理解了上面的内容,那么会明白,整个EM算法最难的部分就是构建Q函数。为什么?因为EM算法的两步E步和M步在实际应用中就是“构建Q函数”和“通过偏导求极大值”,而后者我想大家都会,于是如何构造前者就是我们需要掌握的技能了。

PS:当然,对于最常用的“高斯混合模型”已经有现成的公式可以套用了。
首先先看下Q函数的定义:
完全观测数据的对数似然函数$logP(Y,Z| θ)$关于在给定观测数据Y和当前参数$θ^i$下对未观测数据Z的条件概率分布$P(Z | Y, θ^i)$的期望称为Q函数,即:

image


于是你看懂了吗?
反正我一开始没看懂,虽然根据定义知道是求期望,但为了弄懂第二个等号真的用了我一番功夫。
下面我解释下。
首先Q函数是求期望,这个不用多说。
然后,是求什么的期望?为了方面说明,我们把上面的式子的条件给去掉,即$Q(θ, θ^i) = E[logP(Y, Z)]$。这下一目了然了,是求函数$logP(Y,Z)$的期望,而既然是求函数的期望,那就需要用到下面的知识了:

image

这里使用第一个。
首先对于$logP(Y,Z)$,因为Y是观测变量数据,Z是隐变量数据,因此Z是未知量。所以,对应到上面第一个求法就是:x(变量)=Z,$g(x) = g(z) = logP(Y, Z)$,又因为Q函数的定义中已经告知$P(Z| Y, θ^i)$是条件概率分布,所以$P(Z | Y, θ^i)$就对应上面的分布律,不过为了方面说明,这里还是先将条件给去掉,即分布律为P(Z)。
这样一来,套用上面的公式,就有了:

$$ Ez[logP(Y,Z)] = logP(Y,Z)P(Z) $$

上面为了方面理解而把表示条件的参数都给去掉了,下面按照Q函数的定义把条件给还原回来,于是就有了Q函数定义中的式子。
PS:如果上面还原参数的这步你还有点晕,那就这样想:
联合概率$P(Y, Z)$是在参数为θ的某分布中,所以为了用公式表述完整,我们将其写成$P(Y,Z | θ)$,
分布律P(Z)是在观测变量Y和在EM算法中一步步迭代时当前步骤中已知的“以$θ^i$为参数的某分布”下的分布律,所以为了用公式表述完整,我们将其写成$P(Z | Y, θ^i)$
至于Q函数为什么写成$Q(θ, θ^i)$,这是因为它想表达:在当前迭代中我要找出一个新θ,使得“以新θ为参数的某分布”优于“用上一次迭代中已找出的$θ^i$为参数的某分布”。

摘自:https://www.cnblogs.com/pinard/p/6912636.html
https://blog.csdn.net/sinat_22594309/article/details/65629407
https://blog.csdn.net/xueyingxue001/article/details/51374100

目录
相关文章
|
1月前
|
机器学习/深度学习 算法 数据挖掘
|
1月前
|
算法
基于EM期望最大化算法的GMM模型参数估计matlab仿真
此程序在MATLAB 2022a中实现了基于EM算法的GMM参数估计,用于分析由多个高斯分布组成的混合数据。程序通过迭代优化各高斯组件的权重、均值与协方差,直至收敛,并输出迭代过程的收敛曲线及最终参数估计结果。GMM假设数据由K个高斯分布混合而成,EM算法通过E步计算样本归属概率,M步更新参数,循环迭代直至收敛。
|
3月前
|
算法 数据挖掘
必知的技术知识:EM最大期望算法
必知的技术知识:EM最大期望算法
17 0
|
4月前
|
机器学习/深度学习 算法 数据可视化
R语言:EM算法和高斯混合模型聚类的实现
R语言:EM算法和高斯混合模型聚类的实现
|
4月前
|
资源调度 算法 数据挖掘
R语言有限混合模型(FMM,finite mixture model)EM算法聚类分析间歇泉喷发时间
R语言有限混合模型(FMM,finite mixture model)EM算法聚类分析间歇泉喷发时间
|
4月前
|
机器学习/深度学习 算法 数据挖掘
R语言:EM算法和高斯混合模型的实现
R语言:EM算法和高斯混合模型的实现
|
4月前
|
算法 数据可视化 前端开发
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化(下)
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化
|
4月前
|
算法 数据可视化 数据挖掘
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化(上)
r语言有限正态混合模型EM算法的分层聚类、分类和密度估计及可视化
|
4月前
|
算法 数据可视化
R语言混合正态分布极大似然估计和EM算法
R语言混合正态分布极大似然估计和EM算法
|
11月前
|
人工智能 算法 数据挖掘
期望最大化(EM)算法:从理论到实战全解析
期望最大化(EM)算法:从理论到实战全解析
293 0