一、算法简介
EM算法: 期望最大化 算法(Expectation-maximization algorithm)。为解决数据缺失情况下参数估计问题。是一种常见的隐变量估计方法,也是一种迭代优化算法。由于模型依赖于未知的隐变量,但是需要估计模型的参数。
步骤:
E过程(期望计算过程):根据现有模型,计算各个观测数据输入到模型中的计算结果。
M过程(最大化过程):重新计算模型参数以最大化期望值。
二、算法详细过程
2.1 预备知识:极大似然估计、Jessen不等式
2.1.1 极大似然估计
已知 | 未知 |
---|---|
样本服从的分布、随机抽取的样本 | 模型参数 |
要估计模型参数需要用到极大似然估计,因为极大似然估计就是用来估计模型参数的统计学方法。。
样本集:
X
=
{
x
1
,
x
2
,
.
.
.
,
x
n
}
X=\{x_1,x_2,...,x_n\}
X={x1,x2,...,xn},抽到第i个样本的概率
p
(
x
i
;
θ
)
p(x_i;\theta)
p(xi;θ)。
(1)写出似然函数
由于这n个样本独立同分布,因此同时抽到这n个样本的概率为其联合概率:
L
(
θ
)
=
L
(
x
1
,
x
2
,
.
.
.
,
x
n
)
=
∏
i
=
1
n
p
(
x
i
;
θ
)
θ
∈
Θ
(
1
)
L(\theta)=L(x_1,x_2,...,x_n)=\prod_{i=1}^np(x_i;\theta)\quad\theta\in\Theta\quad(1)
L(θ)=L(x1,x2,...,xn)=i=1∏np(xi;θ)θ∈Θ(1)
我们需要找到参数
θ
\theta
θ使得似然函数
L
(
θ
)
L(\theta)
L(θ)值最大(这就是极大似然估计),满足的
θ
\theta
θ叫
θ
\theta
θ的极大似然估计值,记做:
θ
^
=
a
r
g
m
a
x
(
θ
)
\hat{\theta}=argmax(\theta)
θ^=argmax(θ)。
(2)求极大似然估计值
- 对(1)式取对数:
l n ( L ( θ ) ) = ∑ i = 1 n l n ( p ( x i ; θ ) ) ln(L(\theta))=\sum_{i=1}^nln(p(x_i;\theta)) ln(L(θ))=i=1∑nln(p(xi;θ)) - 再对上式求导,令导数等于0得到似然方程,解似然方程即可求得需要的参数值。
2.2.2 Jessen不等式
定义:若函数
f
(
x
)
f(x)
f(x)为凸函数,则
E
[
f
(
X
)
]
≥
f
(
E
(
X
)
)
E[f(X)] \geq f(E(X))
E[f(X)]≥f(E(X))当且仅当X取常量时取等号,
E
(
X
)
E(X)
E(X)为X的期望。
注:当
f
(
x
)
f(x)
f(x)为凹函数时,不等号取反,取等条件不变。
如:当
f
(
x
)
=
x
2
f(x)=x^2
f(x)=x2时,为凸函数,此时
(
f
(
x
1
)
+
f
(
x
2
)
)
≥
f
(
x
1
+
x
2
)
(f(x_1)+f(x_2)) \geq f(x_1+x_2)
(f(x1)+f(x2))≥f(x1+x2)
2.2.3 EM算法
(1)问题
我们总共有100个数学成绩,分别为50个A班的和50个B班的。
我们随机抽取了一些成绩,但是我们不知道哪些成绩是A班的哪些成绩是B班的,只知道两个班数学成绩分别都成正态分布。
已知 | 未知 |
---|---|
两个样本集各自分布的模型(都成正态度分布)、随机抽取的样本值(每个样本的成绩) | 每个样本集模型的参数( μ A , σ A , μ B , σ B , \mu_A,\sigma_A, \quad\mu_B, \sigma_B, μA,σA,μB,σB,)、每个样本的归属(样本的A\B班归属) |
对于这两个未知,我们可以使用EM算法来求解。
(2)求解
a.初始化正态分布参数(给出
μ
A
0
,
σ
A
0
,
μ
B
0
,
σ
B
0
\mu_{A_0},\sigma_{A_0},\mu_{B_0},\sigma_{B_0}
μA0,σA0,μB0,σB0)
b.计算分布(求出每个抽取样本当为A班或B班的概率值)
c.重新估计参数(确定使得联合概率分布最大时每个样本的归属,进而根据每个样本归属重新计算得出
μ
A
1
,
σ
A
1
,
μ
B
1
,
σ
B
1
\mu_{A_1},\sigma_{A_1},\mu_{B_1},\sigma_{B_1}
μA1,σA1,μB1,σB1)
d.判断当前正态分布参数是否收敛,不收敛则更新,并跳转步b继续迭代;收敛则更新后完成迭代。(收敛条件一般是当前正态分布参数和上一步正态分布参数差小于设定阈值。)
上面是一个特殊的例子。
(a,b为E过程,c为M过程)
EM算法只需要有一些训练数据,定义一个最大化函数,剩下的事情就交给计算机了。经过若干次迭代,我们需要的模型就好了。(来自数学之美)
三、注意
1.EM算法对初始值敏感,因此初始值影响EM算法的收敛效果。
2.EM算法一定是收敛的,且收敛于一个稳定点。
3.在目标函数为凸函数情况下(熵函数、聚类时N维空间中类间距离D和类内平均距离d也是两个凸函数),EM算法可以收敛到全局最优。但也有许多情况下目标函数为非凸函数(文本分类的余弦距离),此时EM算法只能收敛到局部最优。这点和梯度下降算法类似。
参考:
[1] EM算法详解 [知乎]
[2] 【机器学习基础】EM算法 [CSDN]
[3] 《数学之美》第二版 吴军 [专著]