EM(Expectation-Maximization)算法-问题引入

参考 http://www.cnblogs.com/jerrylead

高斯混合模型

下图以一维坐标系中的几个样本为例来说明混合高斯模型
EM(Expectation-Maximization)算法-问题引入_第1张图片
由图中可以看出,样本的分布情况可以由两个高斯分布来近似表示。这玩意就叫混合高斯模型。
简单的说就是:m个样本 {x1,...xm} ,可以分为k类,每个类别都服从高斯分布。

EM算法

给定训练样本 {x1,...xm} ,与k-means中的样本一样是没有标签的,因此EM也是非监督学习方法,我们将隐含类别标签用 z(i) 表示。与 k-means 的硬指定不同,我们首先认为 z(i) 是满足一定的概率分布的,这里我们认为满足多项式分布: z(i)Multinomial(ϕ) ,其中 ϕj0,kj=1ϕj=1 ,
ϕj=p(z(i)=j) 即第 i 个样本属于第 j 类(第j个高斯分布)的概率。 z(i) 的可取的值是{ 1,...,k },即共k个类别。
回想之前的高斯判别分析,我们知道,若 z(i) 是确定的,例如 z(i)=j ,那么 x(i) 应该是满足多元高斯分布的,即: (x(i)|z(i)=j)N(μj,Σj) .
我们知道 x(i)z(i) 的联合概率分布 p(x(i),z(i))=p(x(i)|z(i))p(z(i)) .
模型中有三个参数 ϕ,μ,Σ ,类似高斯判别分析中的处理,我们可以写出似然函数:

(ϕ,μ,Σ)=i=1mlogp(x(i),z(i);ϕ,μ,Σ)=i=1mlogz(i)=1kp(x(i)|z(i);μ,Σ)p(z(i);ϕ)

然而,这里 z(i) 的值是不确定的,此时我们就无法通过之前求最大似然值的方法获得参数值的。

假如我们知道了类别 z(i) 的值,就可以通过求最大似然值获得参数,此时的likelihood函数也可以简写为:
这里写图片描述
(显而易见,如果 z(i) 的取值只能是{0,1},那么上式就和高斯辨别分析模型一样一样的。)
通过最大似然值可求的参数:
EM(Expectation-Maximization)算法-问题引入_第2张图片

注意,这里的协方差矩阵是:每个高斯模型对应一个协方差矩阵,与高斯判别分析中共用一个协方差矩阵不同鸟。

但是事实上我们并不知道 z(i) 的具体指,怎么办呢?
EM算法按照如下思想应对这个问题:
1、猜测样本属于每个类别的概率
2、利用1中得到的概率值去更新参数
3、1和2迭代,直到收敛。

算法描述如下:
Repeat until convergence: {
(E-step) For each i , j , set
w(i)j=p(z(i)=j|x(i);ϕ,μ,Σ)
(M-step) Update the parameters:
ϕj=1mmi=1w(i)j
μj=mi=1w(i)jx(i)mi=1w(i)j
Σj=mi=1w(i)j(x(i)μj)(x(i)μj)TΣmi=1w(i)j
}
E 步中,我们将其他参数 ϕ,μ,Σ 看作常量, 计算在当前的假设和条件下, x(i) 属于每个类别的概率。
上面的 w(i)j 代表当前迭代中,第 i 个样本是第 j 类的概率。可由贝叶斯公公式计算得到:
这里写图片描述

你可能感兴趣的:(EM(Expectation-Maximization)算法-问题引入)