0%

统计学习方法(九)EM算法及其推广

EM算法是一种迭代算法,用于含隐变量的概率模型参数的极大似然估计,或极大后验概率估计。

9.1 EM算法的引入

三硬币模型

假设有三枚硬币,记作A、B、C,这些硬币正面出现的概率分别为π、p、q。进行如下实验:先掷硬币A,根据结果选择硬币,正面选B,反面选C;然后掷选出的硬币,正面记作1,反面记作0;独立重复n次,得到观测结果。

假设只能观测到掷硬币的结果,不能观测过程,问如何估计三硬币正面出现的概率。

其中,y表示观测变量,z为隐变量,表示硬币A的结果,θ为模型参数。

将观测数据表示为,未观测数据表示为,则似然函数为

考虑的极大似然估计

这个问题没有解析解,只能通过迭代求解,EM算法就是这样一种迭代算法。

EM算法

输入:观测变量数据Y,隐变量数据Z,联合分布,条件分布

输出:模型参数

  • 选择参数的初值,开始迭代;

  • E步:记表示第i次迭代时参数的估计值,在第i+1次迭代,计算

  • M步:求使得极大化的参数值,确定第i+1次迭代的参数值

  • 重复上述步骤,直到收敛。

参数的初值可以任意选择,但EM算法对初值是敏感的。

停止迭代的条件一般是

EM算法的导出

面对一个含有隐变量的概率模型,我们希望极大化观测数据关于参数的对数似然函数,即

EM算法通过迭代,逐步近似最大化函数,考虑

利用Jensen不等式

则有

的一个下界,为了使尽可能大地增长,选择

省去常数项,得到

9.2 EM算法的收敛性

定理 9.1为观测数据的似然函数,则是单调递增的。

定理 9.2为观测数据的对数似然函数,则有

  • 如果有上界,则收敛到某一值。
  • 满足一定条件下,由EM算法得到的参数估计序列的收敛值是的稳定点。

9.3 EM算法在高斯混合模型学习中的应用

高斯混合模型

高斯混合模型是指具有如下形式的概率分布模型

其中是高斯分布密度,,称为第k个分模型。

高斯混合模型参数估计的EM算法

假设观测数据由高斯混合模型生成,我们用EM算法估计高斯混合模型的参数。

明确隐变量,写出对数似然函数

明确隐变量

写出似然函数

其中,

那么对数似然函数为

EM算法的E步:确定Q函数

这里需要计算

代回原式

确定EM算法的M步

分别对求偏导数,令其为0;求是在条件下求偏导数并令其为0得到的。

9.4 EM算法的推广

暂略,有空再补。

F函数的极大-极大算法

GEM算法

Scikit-learn

1
2
3
4
5
6
7
8
9
10
11
12
13
from sklearn.mixture import GaussianMixture
import numpy as np
import matplotlib.pyplot as plt

# 初始化观测数据
data = np.array([-67, -48, 6, 8, 14, 16, 23, 24, 28, 29, 41, 49, 56, 60,
75]).reshape(-1, 1)

# 聚类
gmmModel = GaussianMixture(n_components=2)
gmmModel.fit(data)
labels = gmmModel.predict(data)
print("labels =", labels)

总结

对于含隐变量的模型,分E步和M步,分别求期望和极大值,得到参数的新的估计值,迭代以极大化函数。