机器学习算法笔记(3):EM算法
EM算法更多的是用概率来解决问题的一种想法,重点考虑了当概率模型中含有隐变量(潜在变量)该如何估计模型参数——极大后验概率估计。
- 三硬币模型:
假设有3枚硬币,分别记做A、B、C,这些硬币正面出现的概率分别是 π \pi π、 p p p、 q q q,进行如下实验:
- 先掷硬币A,根据结果选出硬币B和硬币C,正面选硬币B,反面选硬币C
- 通过选择出的硬币,掷硬币的结果出现正面为1,反面为0
如此独立地重复n次实验,我们当前规定n=10,则10次的结果如下所示:
1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 1,1,0,1,0,0,1,0,1,1 1,1,0,1,0,0,1,0,1,1
假设只通过观测到掷硬币的结果,不能观测掷硬币的过程,问如何估计三个硬币出现正面的概率?
我们来构建这样一个三硬币模型:
P ( y ∣ θ ) = ∑ z P ( y , z ∣ θ ) = ∑ z P ( z ∣ θ ) P ( y ∣ z , θ ) = π p y ( 1 − p ) 1 − y + ( 1 − π ) q y ( 1 − q ) 1 − y \begin{aligned} P(y|\theta) &=\sum_{z}P(y,z|\theta)=\sum_{z}P(z|\theta)P(y|z,\theta) \\ &=\pi p^{y}(1-p)^{1-y}+(1-\pi)q^{y}(1-q)^{1-y} \end{aligned} P(y∣θ)=z∑P(y,z∣θ)=z∑P(z∣θ)P(y∣z,θ)=πpy(1−p)1−y+(1−π)qy(1−q)1−y
- 若 y = 1 y=1 y=1,表示这此看到的是正面,这个正面有可能是B的正面,也可能是C的正面,则 P ( 1 ∣ θ ) = π p + ( 1 − π ) q P(1|\theta)=\pi p+(1-\pi)q P(1∣θ)=πp+(1−π)q
- 若 y = 0 y=0 y=0,则 P ( 0 ∣ θ ) = π ( 1 − p ) + ( 1 − π ) ( 1 − q ) P(0|\theta)=\pi (1-p)+(1-\pi)(1-q) P(0∣θ)=π(1−p)+(1−π)(1−q)
y是观测变量,表示一次观测结果是1或0,z是隐藏变量,表示掷硬币A的结果,这个是观测不到结果的,
θ
=
(
π
,
p
,
q
)
\theta=(\pi,p,q)
θ=(π,p,q)表示模型参数,将观测数据表示为
Y
=
(
Y
1
,
Y
2
,
.
.
.
,
Y
n
)
T
Y=(Y_1,Y_2,...,Y_n)^{T}
Y=(Y1,Y2,...,Yn)T,未观测的数据表示为
Z
=
(
Z
1
,
Z
2
,
.
.
.
,
Z
n
)
T
Z=(Z_1,Z_2,...,Z_n)^{T}
Z=(Z1,Z2,...,Zn)T,则观测函数的似然函数是:
P
(
Y
∣
θ
)
=
∑
Z
P
(
Z
∣
θ
)
P
(
Y
∣
Z
,
θ
)
=
∏
i
=
0
(
π
p
y
i
(
1
−
p
)
1
−
y
i
+
(
1
−
π
)
q
y
i
(
1
−
q
)
1
−
y
i
)
\begin{aligned} P(Y|\theta)&=\sum_{Z}P(Z|\theta)P(Y|Z,\theta)\\ &=\prod_{i=0} ( \pi p^{y_i}(1-p)^{1-y_{i}}+(1-\pi)q^{y_{i}}(1-q)^{1-y_{i}}) \end{aligned}
P(Y∣θ)=Z∑P(Z∣θ)P(Y∣Z,θ)=i=0∏(πpyi(1−p)1−yi+(1−π)qyi(1−q)1−yi)
考虑求模型参数
θ
=
(
π
,
p
,
q
)
\theta=(\pi,p,q)
θ=(π,p,q)的极大似然估计,即:
θ
^
=
a
r
g
max
θ
l
o
g
P
(
Y
∣
θ
)
\hat{\theta}=arg\max_{\theta}logP(Y|\theta)
θ^=argθmaxlogP(Y∣θ)
这个问题没有解析解,只有通过迭代方法来求解,EM算法就是可以用于求解这个问题的一种迭代算法,下面给出EM算法的迭代过程:
-
首先选取初始值,记做 θ 0 = ( π 0 , p 0 , q 0 ) \theta^{0}=(\pi^{0},p^{0},q^{0}) θ0=(π0,p0,q0),第i次的迭代参数的估计值为 θ i = ( π i , p i , q i ) \theta^{i}=(\pi^{i},p^{i},q^{i}) θi=(πi,pi,qi)
-
E步:计算在模型参数 π i , p i , q i \pi^{i},p^{i},q^{i} πi,pi,qi下观测变量 y i y_i yi来源于硬币B的概率:
μ i + 1 = π i ( p i ) y i ( 1 − p i ) 1 − y i π i ( p i ) y i ( 1 − p i ) 1 − y i + ( 1 − π i ) ( q i ) y i ( 1 − p i ) 1 − y i \mu^{i+1}=\frac{\pi^{i}(p^{i})^{y_i}(1-p^i)^{1-y_i}}{\pi^{i}(p^{i})^{y_i}(1-p^i)^{1-y_i}+(1-\pi^{i})(q^{i})^{y_i}(1-p^i)^{1-y_i}} μi+1=πi(pi)yi(1−pi)1−yi+(1−πi)(qi)yi(1−pi)1−yiπi(pi)yi(1−pi)1−yi
备注:这个公式的分母是 P ( Y ∣ θ ) P(Y|\theta) P(Y∣θ),分子表示是来源与B硬币的概率。 -
M步:计算模型参数的新估计值:
π i + 1 = 1 n ∑ j = 1 n μ j i + 1 \pi^{i+1}=\frac{1}{n}\sum_{j=1}^{n}\mu_{j}^{i+1} πi+1=n1j=1∑nμji+1
因为A硬币正面朝上就会选择B硬币进行抛掷,所以A硬币正面朝上的概率就是 μ j \mu_{j} μj的平均值。
p i + 1 = ∑ j = 1 n μ j i + 1 y j ∑ j = 1 n μ j i + 1 p^{i+1}=\frac{\sum_{j=1}^{n}\mu_{j}^{i+1}y_j}{\sum_{j=1}^{n}\mu_{j}^{i+1}} pi+1=∑j=1nμji+1∑j=1nμji+1yj
分子乘以 y i y_{i} yi:计算B硬币出现正面的概率之和。分母:抛掷B的概率之和。
q i + 1 = ∑ j = 1 n ( 1 − μ j i + 1 ) y j ∑ j = 1 n ( 1 − μ j i + 1 ) q^{i+1}=\frac{\sum_{j=1}^{n}(1-\mu_{j}^{i+1})y_j}{\sum_{j=1}^{n}(1-\mu_{j}^{i+1})} qi+1=∑j=1n(1−μji+1)∑j=1n(1−μji+1)yj
( 1 − μ j i + 1 ) (1-\mu_{j}^{i+1}) (1−μji+1)表示出现C硬币的概率。
闭环形成,从
P
(
Y
∣
θ
)
P(Y|\theta)
P(Y∣θ) 到
π
、
p
、
q
\pi、p、q
π、p、q一个闭环流程,接下来可以通过迭代法来做完成。针对上述例子,我们假设初始值为
π
0
=
0.5
,
p
0
=
0.5
,
q
0
=
0.5
\pi^{0}=0.5,p^{0}=0.5,q^{0}=0.5
π0=0.5,p0=0.5,q0=0.5,因为对
y
i
=
1
y_i=1
yi=1和
y
i
=
0
y_i=0
yi=0均有
μ
j
1
=
0.5
\mu_j^{1}=0.5
μj1=0.5,利用迭代公式计算得到
π
1
=
0.5
,
p
1
=
0.6
,
q
1
=
0.6
\pi^{1}=0.5,p^{1}=0.6,q^{1}=0.6
π1=0.5,p1=0.6,q1=0.6,继续迭代得到最终的参数:
π
0
^
=
0.5
,
p
0
^
=
0.6
,
q
0
^
=
0.6
\widehat{\pi^{0}}=0.5,\widehat{p^{0}}=0.6,\widehat{q^{0}}=0.6
π0
=0.5,p0
=0.6,q0
=0.6
如果一开始初始值选择为:
π
0
=
0.4
,
p
0
=
0.6
,
q
0
=
0.7
\pi^{0}=0.4,p^{0}=0.6,q^{0}=0.7
π0=0.4,p0=0.6,q0=0.7,那么得到的模型参数的极大似然估计是:
π
^
=
0.4064
,
p
^
=
0.5368
,
q
^
=
0.6432
\widehat{\pi}=0.4064,\widehat{p}=0.5368,\widehat{q}=0.6432
π
=0.4064,p
=0.5368,q
=0.6432
这说明EM算法与初值的选择有关,选择不同的初值可能得到不同的参数估计值。
- 应用:高斯混合模型参数估计的EM算法(《统计学习方法》)
(具体代码待补充)