EM算法(期望最大值算法)

一、问题提出: 身高问题

假如我们现在手头上有200个学生的身高合集,其中有男生和女生,而且男生、女生分别服从不同的高斯分布。如果把这个数据集的概率密度画出来,大致可能像这样:

EM算法(期望最大值算法)_第1张图片

提出问题: 求解这两种身高的概率分布参数。

这个图形所对应的便是混合高斯模型(GMM)概率分布函数,表示其由两个高斯模型混合而成。即:

\large P(x_i;\theta)=\sum_{i=1}^{k}\alpha_k\Phi(x;\theta_k)

其中,\large \Phi(x;\theta_k)是第k个分高斯模型的概率密度函数,其可以定义如下:

\large \theta_k=(\mu_k,\sigma_k^2)

 \large \phi(y|\theta_k)=\frac{1}{\sqrt{2\pi}\sigma_k}\;exp(-\frac{(y-\mu_k)^2}{2\sigma_k^2})

\large \alpha_k是第K个分模型的权重系数,且满足\large \alpha_k\geq 0\large \sum_{k=1}^{K}\alpha_k=1

对GMM模型的参数估计,就要用EM算法。更一般的讲,EM算法适用于带有隐变量的概率模型的估计。在我们上面的问题中,某一个身高样本可能来自男学生或女学生,假设某样本来自男生的概率分布,设Z=1,反之则设Z=0,这个Z就是引入的隐变量。

那么极大似然函数可写为:

l(\theta)=\sum_{i=1}^{k}log\;p(x_i;\theta)=\sum_{i=1}^{k}log\;\sum_{Z}p(x_i;Z;\theta)

Z取值有两种情况(=0,=1),而这两种情况都需要考虑,因此在上式中,额外产生了一个求和的操作。

因为这个似然函数的log后面还有求和操作,用求偏导的方式来求解比较困难,因此往往采用迭代求解的方式。

二、迭代求解

首先,初始化参数θ

(1)E-Step:根据参数θ计算每个样本属于Z的概率,即这个身高样本来自男生或女生的概率,这个概率就是Q

(2)M-Step:根据计算得到的Q,求出含有θ的似然函数的下界并最大化它,得到新的参数θ

重复(1)和(2)直到收敛

三、实例:硬币问题

(1)有两个硬币A和B,假设出现正面的概率分别为0.6,0.5,即初始化参数。

(2)E-step:根据样本估算隐变量Z分别来自A或B的概率

开始观察第一个样本:投掷10次,5次正面。

考虑隐变量Z,可能是A可能是B,现在分别计算俩硬币投出5正5反的概率:

pA=C_{10}^5 \;*\;0.6^5\;*\;0.4^5

pB=C_{10}^5 \;*\;0.5^5\;*\;0.5^5

以pA为例,C(10,6)表示10次投掷6次为正的组合数;0.6的6次方表示6次为正的概率,0.4的4次方表示4次为反的概率,相乘表示6次正4次反的概率。

那么选择硬币A的概率=pA/(pA+pB)=0.45,选择硬币B的概率为1-选硬币A的概率=0.55。

那么硬币A投掷正的期望=0.45*5=2.2,投掷反的期望=0.45*5=2.2

那么硬币B投掷正的期望=0.55*5=2.8,投掷反的期望=0.55*5=2.8

以上,对第一个样本的期望计算完毕;

按照以上的方法继续计算剩下所有样本的期望,并将所有样本计算出来的期望相加,如下:

硬币A投掷正的期望累加和;

硬币A投掷反的期望累加和;

硬币B投掷正的期望累加和;

硬币B投掷反的期望累加和;

(3)M-step:根据期望值反推模型的\theta参数值,用于更新初始化的参数分布。

\hat{\theta_A}=硬币A投正的期望和/(硬币A投正的期望和 + 硬币A投反的期望和)

\hat{\theta_B}=硬币B投正的期望和/(硬币B投正的期望和 + 硬币B投反的期望和)

用以上的两个参数替换开始的假设的参数,并重复以上步骤直至收敛,即两个参数不再发生大的变化为止。

4、图例: 以下图说明了第三步的过程。

 

EM算法(期望最大值算法)_第2张图片

 

 

你可能感兴趣的:(机器学习,GMM,EM算法)