前言
EM算法,此博客介绍了 EM E M 算法相关理论知识,看本篇博客前先熟悉 EM E M 算法。
本篇博客打算先从单个高斯分布说起,然后推广到多个高斯混合起来,最后给出高斯混合模型参数求解过程。
单个高斯分布
假如我们有一些数据,这些数据来自同一个高斯分布(独立同分布),那个我们如何根据这些数据估计出这个高斯分布的参数呢?我们知道只要知道高斯分布的参数 θ={μ,σ2} θ = { μ , σ 2 } 就能确定此高斯分布。

从上图中,我们要想知道数据是来自哪个高斯分布,我们就要知道高斯分布的参数,直观上可以认定数据来自参数为 θ1 θ 1 的高斯分布,然而这毕竟是我们直观上的,那么我们应该如何根据数据估计高斯分布的参数呢?
假设数据为 X={x1,x2,...,xN},xi X = { x 1 , x 2 , . . . , x N } , x i 独立同分布 p(X|θ) p ( X | θ ) ,其中 θ={μ,σ2} θ = { μ , σ 2 } ;
由贝叶斯公式知:
p(θ|X) p ( θ | X ) 为后验概率, p(X|θ) p ( X | θ ) 为似然度, p(θ) p ( θ ) 为先验概率。
关于贝叶斯公式的,可参考我之前的博客,里面有提到:链接
不加上先验概率,就是极大似然估计;
加上先验概率,就是极大后验概率估计
这里我们只介绍极大似然估计,极大后验概率估计类似
(1)写出对数似然函数
(2)求极大似然估计
分别对
μ,σ
μ
,
σ
求偏导,并令为0:
由此得到 μ μ 的似然估计为:
其中用到 d log(1x)dx=−1x d l o g ( 1 x ) d x = − 1 x
得到 σ2 σ 2 的似然估计为:
综上我们可以表述为:
以上问题是只有一个高斯分布的,如果不止一个高斯分布呢?
高斯混合模型
同样,我们看下图:

上图是一个高斯混合模型,此处只画了两个高斯分布,可以是多个高斯分布。
如果我们知道每一个数据属于哪一个高斯分布,就会很容易求解,但是我们不可能都知道的,这时随便一个数据点,我们应该如何判断它是哪个高斯分布产生的呢?
这里我们引入 αk α k 表示属于第 k k 个高斯分布的权重,并满足
这样我们可以得到:
其中 N(μk,σ2k) N ( μ k , σ k 2 ) 是高斯分布, αk α k 是系数
给出定义:
高斯混合模型是指具有如下形式的概率分布模型:
其中, αk α k 是系数, αk⩾0∑Kk=1αk=1 α k ⩾ 0 ∑ k = 1 K α k = 1 ; ϕ(x|θk) ϕ ( x | θ k ) 是高斯分布密度, θk=(μk,σ2k) θ k = ( μ k , σ k 2 ) ,
称为第 k k 个分模型。
高斯混合模型参数估计的算法
假设观测数据
x1,x2,...,xN
x
1
,
x
2
,
.
.
.
,
x
N
由高斯混合模型生成,
其中, θ=(α1,α2,..,αk;θ1,θ2,..,θk) θ = ( α 1 , α 2 , . . , α k ; θ 1 , θ 2 , . . , θ k ) ,我们用 EM E M 算法估计高斯混合模型的参数 θ θ .
1. 明确隐变量,写出完全数据的对数似然函数
我们设想数据是这样产生的:
首先依概率
αk
α
k
选择第
k
k
个高斯分布模型;然后依第
k
k
个分模型的概率分布生成观测数据
xj
x
j
。这时观测数据
xj
x
j
,是已知的;反映观测数据
xj
x
j
来自第
k
k
个分模型的数据是未知的,,以隐变量
γjk
γ
j
k
表示,其定义如下:
有了观测数据 xj x j 及未观测数据 γjk γ j k ,那么完全数据是: (xj,γj1,γj2,...,γjK),j=1,2,...,N ( x j , γ j 1 , γ j 2 , . . . , γ j K ) , j = 1 , 2 , . . . , N
于是,可以写出完全数据的似然函数:
式中: nk=∑Nj=1γjk,∑Kk=1nk=N n k = ∑ j = 1 N γ j k , ∑ k = 1 K n k = N
那么,对数似然函数为:
2.
EM
E
M
算法
E
E
步:确定Q函数
这里需要计算 E(γjk|x,θ) E ( γ j k | x , θ ) ,记为 γjk^ γ j k ^
γjk^ γ j k ^ 是在当前模型参数下第 j j 个观测数据来自第个分模型的概率,称为分模型 k k 对观测数据的响应度。
将 γjk^=Eγjk及nk=∑Nj=1Eγjk γ j k ^ = E γ j k 及 n k = ∑ j = 1 N E γ j k 代入之前式子即得:
3. EM E M 算法 M M 步:
迭代的步是求函数
Q(θ,θ(i))
Q
(
θ
,
θ
(
i
)
)
对
θ
θ
的极大值,即求新一轮迭代的模型参数:
求
μk^,σ2k^
μ
k
^
,
σ
k
2
^
只需要将Q函数对
μk,σ2k
μ
k
,
σ
k
2
求偏导并令为0,即可得到;求
αk^
α
k
^
是在
∑Ki=kαk=1
∑
i
=
k
K
α
k
=
1
条件下求偏导数并令为0得到的,用到拉格朗日乘子法。
结果如下:
重复以上计算,直到对数似然函数值不再有明显变化为止。
高斯混合模型参数估计的 EM E M 算法
输入:观测数据 x1,x2,...,xN x 1 , x 2 , . . . , x N ,高斯混合模型
输出:高斯混合模型参数
(1)取参数的初始值开始迭代
(2)E步:依据当前模型参数,计算分模型
k
k
对观测数据的响应度
(3)M步:计算新一轮迭代的模型参数
(4)重复第(2)步和第(3)步,直到收敛。
至此,高斯混合模型的 EM E M 算法我们就介绍完了,关于算法 M M <script type="math/tex" id="MathJax-Element-14350">M</script>步中的计算,这里没有给出,求解方法会使用到带约束条件的拉格朗日乘子法
参考资料:
李航《统计学习方法》,徐亦达机器学习