1. 前言

  这是本人写的第一篇博客(2013年4月5日发在cnblogs上,现在迁移过来),是学习李航老师的《统计学习方法》书以及斯坦福机器学习课Andrew Ng的EM算法课后,对EM算法学习的介绍性笔记,如有写得不恰当或错误的地方,请指出,并多多包涵,谢谢。另外本人数学功底不是很好,有些数学公式我会说明的仔细点的,如果数学基础好,可直接略过。

2.基础数学知识

  在正式介绍EM算法之前,先介绍推导EM算法用到的数学基础知识,包括凸函数,Jensen不等式。

2.1.凸函数

  对于凸函数,凹函数,如果大家学过高等数学,都应该知道,需要注意的是国内教材如同济大学的《高等数学》的这两个概念跟国外刚好相反,为了能更好的区别,本文章把凹凸函数称之为上凸函数,下凸函数,具体定义如下:

上凸函数:函数 2

  更直观的可以看图2.1和2.2:

EM算法(Expectation Maximization Algorithm)
    





            
EM算法(Expectation Maximization Algorithm)
EM算法(Expectation Maximization Algorithm)
    





            
EM算法(Expectation Maximization Algorithm)
图2.1. 上凸函数 图2.2. 下凸函数

  可以清楚地看到图2.1上凸函数中,b,下凸函数与其类似。

2.2.Jensen不等式

  有了上述凸函数的定义后,我们就能很清楚的Jensen不等式的含义,它的定义如下:

如果f是上凸函数,X 是常量。

  那么很明显 x 函数是上凸函数,可以利用这个性质。
  有了上述的数学基础知识后,我们就可以看具体的EM算法了。

3.EM算法所解决问题的例子

  在推导EM算法之前,先引用《统计学习方法》中EM算法的例子:

例1. (三硬币模型)假设有3枚硬币,分别记作 q 的值。

:设随机变量 y 是观测变量,则投掷一次的概率模型为:

y
有 Y 的似然函数为:
]
那么利用最大似然估计求解模型解,即
(3)
这里将概率模型公式和似然函数代入 C抛出的这个隐藏参数。那么我们把这个latent 随机变量加入到 log-likelihood 函数中,得
(6)

略看一下,好像很复杂,其实很简单,首先是公式 2
 为结果由硬币C抛出,不难发现:
j
  接下来公式说明 c 为常数,那么(这里感谢网友@无影随想指出错误)
)
这里可以发现
j
  OK,到这里,可以发现公式 θ,求最大值,大家可以自己练习试试,应该很简单的,这里不做过多陈述。
  在《统计学习方法》书中,进行两组具体值的计算

 

  • 0.5
  • 0.6432

两组值的最后结果不相同,这说明EM算法对初始值敏感,选择不同的初值可能会有不同的结果,只能保证参数估计收敛到稳定点。因此实际应用中常用的办法就是选取多组初始值进行迭代计算,然后取结果最好的值。

  在进行下部分内容之前,还需说明下一个东西。在上面的举例说明后,其实可以发现上述的解决方法跟一个简单的聚类方法很像,没错,它就是K-means聚类。K-means算法先假定k个中心,然后进行最短距离聚类,之后根据聚类结果重新计算各个聚类的中心点,一次迭代,是不是很像,而且K-means也是初始值敏感,因此其实K-means算法也包含了EM算法思想,只是这边EM算法中用P概率计算,而K-means直接用最短距离计算。所以EM算法可以用于无监督学习。在下一篇文章,我准备写下典型的用EM算法的例子,高斯混合模型(GMM,Gaussian Mixture Model)

4.EM算法

4.1.模型说明

  考虑一个参数估计问题,现有 log 似然函数是:

)

  可能因为 ) 极大似然估计的目的。

 

4.2.EM算法推导

  这小节会对EM算法进行具体推导,许多跟上面例子的解法推导是相同的,如果已经懂了,可以加速阅读。首先跟“三硬币模型”一样,加入隐变量 z 的某种分布,那么有如下公式:

(9)

  公式 Q 的推导:

)

  再一次重复说明,要使 ) 的值,依次迭代,EM算法就实现了。

 

EM 算法(1)
选取初始值 0
Repeat {
  E步:

)
  M步:
1
}直到收敛

 

4.3.EM算法收敛性证明

  当 t 值时,求得

)

那么可得如下不等式:

z

相关文章: