【数据挖掘】十大算法之EM最大期望估计算法

1 简介

EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计。EM算法的迭代由两步组成:E步,求期望,M步,求极大。
概率模型有时既含有观测变量,又含有隐变量或潜在变量,如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法,或贝叶斯法估计模型参数。但是,当模型含有隐变量时,就不能用简单地使用这些估计方法。
是通过不断求解下界的极大化逼近求解对数似然函数极大化的算法。

2 投硬币问题

假设有三枚硬币,分别记A、B、C,这些硬币正面出现的概率分别是 π \pi π,p和q。进行如下掷硬币试验:先掷硬币A,正面继续掷硬币B,反面掷硬币C;然后掷选出来的硬币B或C,出现正面记为1,反面记为0;独立重复n次试验,观测结果如下
1 1 0 1 0 0 1 0 1 1
假设只能观测到掷硬币的结果,不能观测掷硬币的过程,问如何估计三个硬币正面出现的概率,即三硬币模型的参数。
解:
三个硬币的模型可写作
P ( y ∣ θ ) = ∑ z ( y , z ∣ θ ) = ∑ z P ( z ∣ θ ) P ( y ∣ z , θ ) = π p y ( 1 − p ) 1 − y + ( 1 − π ) q y ( 1 − q ) 1 − y P(y|\theta) = \sum_z(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} P(yθ)=z(y,zθ)=zP(zθ)P(yz,θ)=πpy(1p)1y+(1π)qy(1q)1y
随机变量y是观测变量,表示一次试验观测的结果是1或0;随机变量z是隐变量,表示未观测到的掷硬币的A的结果; θ = ( π , p , q ) \theta = (\pi,p,q) θ=(π,p,q)是模型参数,这一模型是以上数据的生成模型。注意,随机变量y的数据可以观测,随机变量z的数据是不可观测。
将观测的数据表示为 Y = ( Y 1 , Y 2 , . . . , Y n ) T Y= (Y_1,Y_2,...,Y_n)^T Y=Y1,Y2,...,YnT,未观测数据表示为 Z = ( Z 1 , Z 2 , . . . , Z n ) T Z= (Z_1,Z_2,...,Z_n)^T Z=Z1,Z2,...,ZnT,则观测数据的似然函数为

P ( Y ∣ θ ) = ∑ Z P ( Z ∣ θ ) P ( Y ∣ Z , θ ) = ∏ j = 1 n [ π p y i ( 1 − p ) 1 − y i + ( 1 − π ) q y i ( 1 − q ) 1 − y i ] P(Y|\theta) = \sum_ZP(Z|\theta)P(Y|Z,\theta)\\ =\prod _{j=1}^n [\pi p^{y_i}(1-p)^{1-y_i}+(1-\pi)q^{y_i}(1-q)^{1-y_i}] P(Yθ)=ZP(Zθ)P(YZ,θ)=j=1n[πpyi(1p)1yi+(1π)qyi(1q)1yi]
考虑求模型参数 θ = ( π , p , q ) \theta = (\pi,p,q) θ=(π,p,q)的极大似然估计,即
θ ^ = a r g m a x θ l o g P ( Y ∣ θ ) \hat{\theta} = argmax_{\theta} logP(Y|\theta) θ^=argmaxθlogP(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)。EM算法的第i+1次迭代如下:
E步:计算在模型参数 π i , p i , q i \pi^i,p^i,q^i πipiqi下观测数据 y j y_j yj来自掷硬币B的概率
μ j 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 − q i ) 1 − y i \mu_j^{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-q^i)^{1-y_i}} μji+1=πi(pi)yi(1pi)1yi+(1πi)(qi)yi(1qi)1yiπi(pi)yi(1pi)1yi
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=1nμji+1
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+1j=1nμji+1yj
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+1yj)

进行数字计算。假设模型参数的初值取
( π 0 , p 0 , q 0 ) = ( 0.5 , 0.5 , 0.5 ) (\pi^0,p^0,q^0) = (0.5,0.5,0.5) (π0,p0,q0)=0.5,0.5,0.5
由公式(3),对 y i = 1 , y i = 0 y_i=1,y_i = 0 yi=1yi=0均有 μ j 1 = 0.5 \mu_j^1 =0.5 μj1=0.5,利用迭代公式(4)~(6)得到
( π 1 , p 1 , q 1 ) = ( 0.5 , 0.6 , 0.6 ) (\pi^1,p^1,q^1) = (0.5,0.6,0.6) (π1,p1,q1)=0.5,0.6,0.6
由于公式(2)得到 μ j 2 = 0.5 , j = 1 , 2 , . . , 10 \mu_j^{2} =0.5,j=1,2,..,10 μj2=0.5,j=1,2,..,10
继续迭代,得到 ( π 2 , p 2 , q 2 ) = ( 0.5 , 0.6 , 0.6 ) (\pi^2,p^2,q^2) = (0.5,0.6,0.6) (π2,p2,q2)=0.5,0.6,0.6
于是得到模型参数 θ \theta θ的极大似然估计
( π ^ , p ^ , q ^ ) = ( 0.5 , 0.6 , 0.6 ) (\hat{\pi},\hat{p},\hat{q}) = (0.5,0.6,0.6) (π^,p^,q^)=0.5,0.6,0.6
如果 ( π 0 , p 0 , q 0 ) = ( 0.4 , 0.6 , 0.7 ) (\pi^0,p^0,q^0) = (0.4,0.6,0.7) (π0,p0,q0)=0.4,0.6,0.7,那么得到的模型参数的极大似然估计 ( π ^ , p ^ , q ^ ) = ( 0.4064 , 0.5368 , 0.6432 ) (\hat{\pi},\hat{p},\hat{q}) = (0.4064,0.5368,0.6432) (π^,p^,q^)=0.4064,0.5368,0.6432,也就是说,EM算法与初值的选择有关,选择不同的初值可能得到不同的参数估计值。
一般地,用Y表示观测随机变量的数据,Z表示隐随机变量的数据,Y和Z连在一起称为完全数据,观测数据Y又称为不完全数据。假设给定观测数据Y,其概率分布是 P ( Y ∣ θ ) P(Y|\theta) P(Yθ),其中 θ \theta θ是需要估计的模型参数,那么不完全数据Y的似然函数是 P ( Y ∣ θ ) P(Y|\theta) P(Yθ),对数似然函数 L ( θ ) = l o g P ( Y ∣ θ ) L(\theta) = logP(Y|\theta) L(θ)=logP(Yθ),假设Y和Z的联合概率分布是 P ( Y , Z ∣ θ ) P(Y,Z|\theta) P(Y,Zθ),那么完全数据的对数似然函数是 l o g P ( Y , Z ∣ θ ) logP(Y,Z|\theta) logP(Y,Zθ).

3 EM算法过程

输入:观测变量数据Y,隐变量数据Z,联合分布 P ( Y , Z ∣ θ ) P(Y,Z|\theta) P(YZθ),条件分布 P ( Z ∣ Y , θ ) P(Z|Y,\theta) P(ZY,θ)
输出:模型参数 θ \theta θ
(1)选择参数的初值 θ 0 \theta ^0 θ0,开始迭代
(2)E步:记 θ i \theta ^i θi为迭代参数 θ \theta θ的估计值,在第i+1次迭代的E步,计算
Q ( θ , θ i ) = E Z [ l o g P ( Y , Z ∣ θ ) ∣ Y , θ i ] = ∑ Z l o g P ( Y , Z ∣ θ ) P ( Z ∣ Y , θ i ) Q(\theta,\theta^i) = E_Z[logP(Y,Z|\theta)|Y,\theta^i]\\ =\sum_Z logP(Y,Z|\theta)P(Z|Y,\theta^i) Q(θ,θi)=EZ[logP(Y,Zθ)Y,θi]=ZlogP(Y,Zθ)P(ZY,θi)
其中, P ( Z ∣ Y , θ i ) P(Z|Y,\theta^i) P(ZY,θi)是在给定观测数据Y和当前的参数估计 θ i \theta ^i θi下隐变量数据Z的条件概率分布。 Q ( θ , θ i ) Q(\theta,\theta^i) Q(θ,θi)称为Q函数。定义是完成数据的对数似然函数 l o g P ( Y , Z ∣ θ ) logP(Y,Z|\theta) logP(Y,Zθ)关于在给定观测数据Y和当前参数 θ i \theta^i θi下对未观测数据Z的条件概率分布 P ( Z ∣ Y , θ i ) P(Z|Y,\theta^i) P(ZY,θi)的期望称为Q函数。
(3)M步:求使 Q ( θ , θ i ) Q(\theta,\theta^i) Q(θ,θi)极大化的 θ \theta θ,确定第i+1次迭代的参数的估计值 θ i + 1 \theta ^{i+1} θi+1
θ i + 1 = a r g m a x θ Q ( θ , θ i ) \theta ^{i+1} = argmax_{\theta}Q(\theta,\theta^i) θi+1=argmaxθQ(θ,θi)
(4)重复第(2)和第(3)步,直到收敛
注意:

  • 步骤(1)参数的初值可以任意选择,但需要注意EM算法对初值是敏感的
  • 步骤(2)E步求 Q ( θ , θ i ) Q(\theta,\theta^i) Q(θ,θi),Q函数中Z是未观测数据,Y 是观测数据。注意 Q ( θ , θ i ) Q(\theta,\theta^i) Q(θ,θi)的第一个变元表示要极大化的参数,第二个变元表示餐忽视的当前估计值。每次迭代实际在求Q函数及其极大。
  • 步骤(3)M步求 Q ( θ , θ i ) Q(\theta,\theta^i) Q(θ,θi)的极大化,得到 θ i + 1 \theta^{i+1} θi+1,完成一次迭代 θ i → θ i + 1 \theta^i \rightarrow \theta^{i+1} θiθi+1.
  • 步骤(4)给出停止迭代的条件,一般是对较小的正数 ϵ 1 , ϵ 2 \epsilon_1,\epsilon_2 ϵ1ϵ2,若满足 ∣ ∣ θ i + 1 − θ i ∣ ∣ < ϵ ||\theta^{i+1}-\theta^i||< \epsilon θi+1θi<ϵ或足 ∣ ∣ Q ( θ i + 1 , θ i ) − Q ( θ i , θ i ) ∣ ∣ < ϵ 2 ||Q(\theta^{i+1},\theta^i)-Q(\theta^i,\theta^i)||< \epsilon_2 Q(θi+1,θi)Q(θi,θi)<ϵ2则停止迭代。

4 EM收敛性定理

(1)设 P ( Y ∣ θ ) P(Y|\theta) P(Yθ)为观测数据的似然函数, θ i ( i = 1 , 2 , . . . ) \theta^i(i=1,2,...) θi(i=1,2,...)为EM算法得到的参数估计序列, P ( Y ∣ θ i ) ( i = 1 , 2 , . . . ) P(Y|\theta^i)(i=1,2,...) P(Yθi)(i=1,2,...)为对应的似然函数序列,则 P ( Y ∣ θ i ) P(Y|\theta^i) P(Yθi)是单调递增的。即

(2)设为观测疏忽的对数似然函数,为EM算法得到的参数估计序列,为对应的对数似然函数序列。

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

猜你喜欢

转载自blog.csdn.net/weixin_43935696/article/details/124739254