跳转至

EM算法

1 预备知识

  1. 极大似然估计
  2. Jensen不等式

  3. 如果是凸函数,是随机变量,那么 证明: 凹函数则反过来

2 EM算法详述

2.1 问题描述

  1. 我们目前有100个男生和100个女生的身高,但是我们不知道这200个数据中哪个是男生的身高,哪个是女生的身高,即抽取得到的每个样本都不知道是从哪个分布中抽取的。这个时候,对于每个样本,就有两个未知量需要估计:
  2. 这个身高数据是来自于男生数据集合还是来自于女生?
  3. 男生、女生身高数据集的正态分布的参数分别是多少?

  4. 基本步骤:

  5. 初始化参数:先初始化男生身高的正态分布的参数

  6. 计算每一个人更可能属于男生分布或者女生分布
  7. 通过分为男生的n个人来重新估计男生身高分布的参数(最大似然估计),女生分布也按照相同的方式估计出来,更新分布。
  8. 重复上面三步,直到参数不发生变换

2.2 EM算法推导

  1. 对于个样本观察数据, 找出样本的模型参数, 极大化模型分布的对数似然函数: 如果我们得到的观察数据有未观察到的隐含数据 ,即上文中每个样本属于哪个分布是未知的。 引入新的分布, 表示的分布概率 这里可以看作对求了下界。如果以及给定,则的值就决定于。 我们可以通过调整这两个概率使下界不断上升,以逼近的真实值。

根据Jensen不等式,要想让等式成立,需要让随机变量变成常数值 也就是固定参数后,就是后验概率,这就是E步。

则需要极大化 这就是M步。

2.3 算法流程

  1. 输入:观察数据, 联合分布, 条件分布, 最大迭代次数
  2. 流程:

  3. 随机初始化模型参数θ的初值

  4. 开始算法迭代

  5. E步:计算联合分布的条件概率期望

  6. M步:极大化, 得到, 如果已经收敛,则算法结束。

  7. 输出参数

2.4 GMM