统计计算二|EM算法(Expectation-Maximization Algorithm,期望最大化算法)

本文主要是介绍统计计算二|EM算法(Expectation-Maximization Algorithm,期望最大化算法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

系列文章目录

统计计算一|非线性方程的求解

文章目录

  • 系列文章目录
  • 一、基本概念
    • (一)极大似然估计和EM算法
    • (二)EM算法的基本思想
    • (三)定义
      • 1、缺失数据, 边际化和符号
      • 2、Q函数
      • 3、混合高斯模型(Gaussian Mixture Model,简称GMM)
      • 4、一般混合模型
  • 三、收敛性
    • (一)琴生不等式(Jensen’s inequality)
    • (二) EM 算法的收敛性质
    • (三)MM 算法 (Minorize-Maximization)
  • 四、方差估计
    • (一)Louis’s Method
      • 1、提出原因
      • 2、核心思想
      • 3、计算步骤
    • (二)删失的指数数据
      • 步骤1:定义模型
      • 步骤2:EM算法的E步
      • 步骤3:EM算法的M步
    • (三)自助法 (Bootstrap)
  • 五、EM变型
    • (一)改进 E 步 (MCEM)
      • 1、Monte Carlo EM
      • 2、删失的指数数
      • 3、MCEM 和 EM 对比
    • (二)改进 M 步
      • 1、ECM算法
      • 2、EM梯度算法


讲解EM方法的定义,使用场景,Q函数上升证明,实例运用,以及特殊情况下EM的一些变种。

一、基本概念

(一)极大似然估计和EM算法

  • 频率学派通过极大化观测数据的对数似然函数,得到参数的估计。但是在有些情况下,得到的数据不是完整数据,还有一部分数据缺失。这导致无法直接极大化对数似然函数得到感兴趣的参数。
  • EM 算法就是用来解决隐含数据存在情况下的参数估计问题。它是一种迭代优化策略, 它是受缺失思想,以及考虑给定已知项下缺失项的条件分布而激发产生的。

(二)EM算法的基本思想

EM算法是一种用于含有隐变量(或潜在变量)的概率模型参数估计的迭代方法。通过反复执行期望(E步)和最大化(M步)两个步骤,使模型参数的对数似然函数逐步逼近最大值。EM算法广泛应用于数据缺失情况下的最大似然估计和贝叶斯推断。

  • E步:基于观测数据和上一步估计出的参数值,根据设定的给定已知项下缺失项的条件分布,预测完整数据的对数似然函数
  • M步:极大化预测的完整数据的对数似然函数,得到感兴趣参数的估计
  • E 步和 M 步反复迭代,直到估计参数基本无变化,算法收敛,得到最终的参数估计

(三)定义

对于给定的观测数据 x x x,我们的目标是最大化观测数据的似然函数 L ( θ , x ) L(\theta,x) L(θ,x),这个似然函数通常会难以处理,而采用 Y ∣ θ Y|\theta Yθ Z ∣ ( x , θ ) Z|(x,\theta) Z(x,θ)的密度则较容易处理。

1、缺失数据, 边际化和符号

定义 Y = ( X , Z ) Y=(X,Z) Y=(X,Z)为完全数据,其中 X X X为观测数据, Z Z Z为未观测到的缺失数据。设 f X ( x ∣ θ ) f_X(x|\theta) fX(xθ) f Y ( y ∣ θ ) f_Y(y|\theta) fY(yθ)分别为观测数据和完全数据的密度。在给定观测数据下,缺失数据的条件密度为 f Z ∣ X ( z ∣ x ; θ ) = f Y ( y ∣ θ ) / f X ( x ∣ θ ) f_{Z|X}(z|x;\theta)=f_Y(y|\theta)/f_X(x|\theta) fZX(zx;θ)=fY(yθ)/fX(xθ).

2、Q函数

θ ( t ) \theta^{(t)} θ(t)表示在迭代t时估计的最大值点( t = 0 , 1 , . . . t=0,1,... t=0,1,...),定义 Q ( θ ∣ θ ( t ) ) Q(\theta|\theta^{(t)}) Q(θθ(t))为观测数据 X = x X=x X=x和当前迭代估计出的参数值 θ ( t ) \theta^{(t)} θ(t)条件下,完全数据的对数似然的对隐变量的条件期望,即:
Q ( θ ∣ θ ( t ) ) = E { l o g L ( θ ∣ Y ) ∣ x , θ ( t ) } = E { l o g f Y ( y ∣ θ ) ∣ x , θ ( t ) } = ∫ [ l o g f Y ( y ∣ θ ) ] f Z ∣ X ( z ∣ x , θ ( t ) ) d z \begin{equation*} \begin{aligned} Q(\theta|\theta^{(t)}) &= E\{log L(\theta|Y)|x,\theta^{(t)}\} \\ &= E\{log f_Y(y|\theta)|x,\theta^{(t)}\} \\ &= \int [log f_Y(y|\theta)]f_{Z|X}(z|x,\theta^{(t)})dz \\ \end{aligned} \end{equation*} Q(θθ(t))=E{logL(θY)x,θ(t)}=E{logfY(yθ)x,θ(t)}=[logfY(yθ)]fZX(zx,θ(t))dz

EM从 θ 0 \theta^0 θ0开始,在E步和M步之间交替:

  • 定义完全数据的似然函数
  • E步:计算条件期望 Q ( θ ∣ θ ( t ) ) = E z { l o g f Y ( y ∣ θ ) ∣ x , θ ( t ) } Q(\theta|\theta^{(t)})=E_z\{log f_Y(y|\theta)|x,\theta^{(t)}\} Q(θθ(t))=Ez{logfY(yθ)x,θ(t)}
  • M步:寻求 θ \theta θ来最大化 Q ( θ ∣ θ ( t ) ) Q(\theta|\theta^{(t)}) Q(θθ(t)),设 θ ( t + 1 ) \theta^{(t+1)} θ(t+1)为找到的点
  • 返回E步,直到满足某停止规则为止

EM算法的停止规则通常依赖于 ( θ ( t + 1 ) − θ ( t ) ) T ( θ ( t + 1 ) − θ ( t ) ) (\theta^{(t+1)}-\theta^{(t)})^T(\theta^{(t+1)}-\theta^{(t)}) (θ(t+1)θ(t))T(θ(t+1)θ(t)) ∣ Q ( θ ( t + 1 ) ∣ θ ( t ) ) − Q ( θ ( t ) ∣ θ ( t ) ) ∣ |Q(\theta^{(t+1)}|\theta^{(t)})-Q(\theta^{(t)}|\theta^{(t)})| Q(θ(t+1)θ(t))Q(θ(t)θ(t))

3、混合高斯模型(Gaussian Mixture Model,简称GMM)

混合高斯模型是一种常用的概率模型,用于表示由多个高斯分布(正态分布)混合而成的数据分布。GMM广泛应用于聚类分析、密度估计和模式识别等领域。GMM的核心思想是用多个高斯分布来描述数据的整体分布,每个高斯分布代表数据的一个子群。
p ( x ) = ∑ k = 1 K π k N ( x ∣ μ k , Σ k ) p(x)=\sum_{k=1}^K\pi_kN(x|\mu_k,\Sigma_k) p(x)=k=1KπkN(xμk,Σk)

要训练混合高斯模型,即估计参数 π k \pi_k πk μ k \mu_k μk Σ k \Sigma_k Σk,通常使用期望最大化(EM)算法。

问题背景:(定义出完全数据的似然函数)
在这里插入图片描述
E步:计算条件期望 Q ( θ ∣ θ ( t ) ) = E z { l o g f Y ( y ∣ θ ) ∣ x , θ ( t ) } Q(\theta|\theta^{(t)})=E_z\{log f_Y(y|\theta)|x,\theta^{(t)}\} Q(θθ(t))=Ez{logfY(yθ)x,θ(t)}
在这里插入图片描述
M步:寻求 θ \theta θ来最大化 Q ( θ ∣ θ ( t ) ) Q(\theta|\theta^{(t)}) Q(θθ(t)),设 θ ( t + 1 ) \theta^{(t+1)} θ(t+1)为找到的点
在这里插入图片描述

4、一般混合模型

如果一个数据集是由 K K K个不同总体组成,密度函数具有如下混合密度形式:(其中: ∑ k = 1 K π j = 1 \sum_{k=1}^K\pi_j=1 k=1Kπj=1,模型参数包括 ( Π , Θ ) (\Pi,\Theta) (Π,Θ)
p ( x ; θ ) = ∑ k = 1 K π k p k ( x ; θ j ) p(x;\theta)=\sum_{k=1}^K\pi_kp_k(x;\theta_j) p(x;θ)=k=1Kπkpk(x;θj)

假定观测到的数据为 X = { x 1 , x 2 , . . . , x n } X=\{x_1,x_2,...,x_n\} X={x1,x2,...,xn},未观测到的数据为 z = { z 1 , z 2 , . . . , z n } z=\{z_1,z_2,...,z_n\} z={z1,z2,...,zn},其中 z i ∈ { 1 , . . . , K } z_i\in\{1,...,K\} zi{1,...,K}代表数据的来源,也就是:
p ( x i ∣ z i = k ; Θ ) = p k ( x ; θ k ) , p ( z i = k ) = π j p(x_i|z_i=k;\Theta)=p_k(x;\theta_k),\ p(z_i=k)=\pi_j p(xizi=k;Θ)=pk(x;θk), p(zi=k)=πj
则完全数据的似然函数可写成:
L ( Π , Θ ∣ X , Z ) = ∏ i = 1 n ∏ k = 1 K ( π k p k ( x i ; θ k ) ) I ( z i = k ) L(\Pi,\Theta|X,Z)=\prod_{i=1}^n\prod_{k=1}^K(\pi_kp_k(x_i;\theta_k))^{I(z_i=k)} L(Π,Θ∣X,Z)=i=1nk=1K(πkpk(xi;θk))I(zi=k)

对数似然函数为:

l ( Π , Θ ∣ X , Z ) = ∑ i = 1 n ∑ k = 1 K I ( z i = k ) [ ( l o g π k + l o g p k ( x i ; θ k ) ) ] l(\Pi,\Theta|X,Z)=\sum_{i=1}^n\sum_{k=1}^KI(z_i=k)[(log\pi_k+logp_k(x_i;\theta_k))] l(Π,Θ∣X,Z)=i=1nk=1KI(zi=k)[(logπk+logpk(xi;θk))]

然后求Q函数:
Q ( θ ∣ θ ( t ) ) = E z { l ( Π , Θ ∣ X , Z ) ∣ X , Π ( t ) , Θ ( t ) } = ∑ i = 1 n ∑ k = 1 K E ( I ( z i = k ) ∣ X , Π ( t ) , Θ ( t ) ) [ ( l o g π k + l o g p k ( x i ; θ k ) ) ] \begin{equation*} \begin{aligned} Q(\theta|\theta^{(t)}) &= E_z\{l(\Pi,\Theta|X,Z)|X,\Pi^{(t)},\Theta^{(t)}\} \\ &= \sum_{i=1}^n\sum_{k=1}^KE(I(z_i=k)|X,\Pi^{(t)},\Theta^{(t)})[(log\pi_k+logp_k(x_i;\theta_k))] \\ \end{aligned} \end{equation*} Q(θθ(t))=Ez{l(Π,Θ∣X,Z)X,Π(t),Θ(t)}=i=1nk=1KE(I(zi=k)X,Π(t),Θ(t))[(logπk+logpk(xi;θk))]

对于其中的条件期望,有:
E ( I ( z i = k ) ∣ X , Π ( t ) , Θ ( t ) ) = p ( z i = k ∣ X , Π ( t ) , Θ ( t ) ) = p ( x i , z i = k ∣ θ k ( t ) ) ∑ l = 1 K p ( x i , z i = l ∣ θ l ( t ) ) = π k ( t ) p ( x i ∣ θ k ( t ) ) ∑ l = 1 K π l ( t ) p l ( x i ∣ θ l ( t ) ) \begin{equation*} \begin{aligned} E(I(z_i=k)|X,\Pi^{(t)},\Theta^{(t)}) &= p(z_i=k|X,\Pi^{(t)},\Theta^{(t)}) \\ &=\frac{p(x_i,z_i=k|\theta_k^{(t)})}{\sum_{l=1}^Kp(x_i,z_i=l|\theta_l^{(t)})} \\ &=\frac{\pi_k^{(t)}p(x_i|\theta_k^{(t)})}{\sum_{l=1}^K\pi_l^{(t)}p_l(x_i|\theta_l^{(t)})} \\ \end{aligned} \end{equation*} E(I(zi=k)X,Π(t),Θ(t))=p(zi=kX,Π(t),Θ(t))=l=1Kp(xi,zi=lθl(t))p(xi,zi=kθk(t))=l=1Kπl(t)pl(xiθl(t))πk(t)p(xiθk(t))
代入到Q函数后,求导即可获得更新公式。

三、收敛性

(一)琴生不等式(Jensen’s inequality)

琴生不等式(Jensen’s inequality)是凸函数和期望值理论中的一个基本结果。它给出积分的凸函数值和凸函数的积分值间的关系,在此不等式最简单形式中,阐明了对一平均做凸函数变换,会小于等于先做凸函数变换再平均。

  • 若将琴生不等式应用在二点上,就回到了凸函数的基本性质:过一个凸函数上任意两点所作割线一定在这两点间的函数图象的上方
    t f ( x 1 ) + ( 1 − t ) f ( x 2 ) ≥ f ( t x 1 + ( 1 − t ) x 2 ) , 0 ≤ t ≤ 1 tf(x_1)+(1-t)f(x_2)\geq f(tx_1+(1-t)x_2),\ 0\leq t\leq 1 tf(x1)+(1t)f(x2)f(tx1+(1t)x2), 0t1
  • 如果 X X X是随机变量且 ϕ \phi ϕ是凸函数,则:
    E [ ϕ ( X ) ] ≥ ϕ ( E [ X ] ) E[\phi(X)]\geq \phi(E[X]) E[ϕ(X)]ϕ(E[X])

(二) EM 算法的收敛性质

①EM算法保证了每次迭代后对数似然函数的值不会减少
观测数据密度的对数可重新表达为:
l o g f X ( x ∣ θ ) = l o g f Y ( y ∣ θ ) − l o g f Z ∣ X ( z ∣ x ; θ ) log f_X(x|\theta)=logf_Y(y|\theta)-logf_{Z|X}(z|x;\theta) logfX(xθ)=logfY(yθ)logfZX(zx;θ)
所以有:
E { l o g f X ( x ∣ θ ) ∣ x , θ ( t ) } = E { l o g f Y ( y ∣ θ ) ∣ x , θ ( t ) } − E { l o g f Z ∣ X ( z ∣ x , θ ) ∣ x , θ ( t ) } E\{log f_X(x|\theta)|x,\theta^{(t)}\}=E\{log f_Y(y|\theta)|x,\theta^{(t)}\}-E\{log f_{Z|X}(z|x,\theta)|x,\theta^{(t)}\} E{logfX(xθ)x,θ(t)}=E{logfY(yθ)x,θ(t)}E{logfZX(zx,θ)x,θ(t)}
其中期望是关于 Z ∣ ( x , θ ( t ) ) Z|(x,\theta^{(t)}) Z(x,θ(t))求取的,于是:
l o g f X ( x ∣ θ ) = Q ( θ ∣ θ ( t ) ) − H ( θ ∣ θ ( t ) ) log f_X(x|\theta)=Q(\theta|\theta^{(t)}) -H(\theta|\theta^{(t)}) logfX(xθ)=Q(θθ(t))H(θθ(t))
其中 H ( θ ∣ θ ( t ) ) = E { l o g f Z ∣ X ( Z ∣ x , θ ) ∣ x , θ ( t ) } H(\theta|\theta^{(t)}) =E\{log f_{Z|X}(Z|x,\theta)|x,\theta^{(t)}\} H(θθ(t))=E{logfZX(Zx,θ)x,θ(t)}

通过琴生不等式可以证明 H ( θ ∣ θ ( t ) ) H(\theta|\theta^{(t)}) H(θθ(t))是不断减小的:
在这里插入图片描述

由于每一步 Q Q Q增大而 H H H减小,所以观测数据的对数似然不断上升。

  • 标准的 EM 算法:每次迭代中选择 θ ( t + 1 ) θ^{(t+1)} θ(t+1) 来最大化 Q ( θ ∣ θ ( t ) ) Q(θ|θ^{(t)}) Q(θθ(t))
  • 广义 EM(GEM):简单选取任一个使得 Q ( θ ( t + 1 ) ∣ θ ( t ) ) > Q ( θ ( t ) ∣ θ ( t ) ) Q(θ^{(t+1)}|θ^{(t)}) > Q(θ^{(t)}|θ^{(t)}) Q(θ(t+1)θ(t))>Q(θ(t)θ(t)) θ ( t + 1 ) θ^{(t+1)} θ(t+1)

− ℓ ( θ ^ ∣ x ) −ℓ(\hat{θ}|x) (θ^x) 是正定的,则 EM 算法有线性收敛,且收敛速度跟缺失信息比例有关。当缺失信息比例比较大,收敛会非常慢。

②EM 策略将优化问题由观测数据的对数似然函数 l l l 转换到替代函数 G G G

EM 策略将优化问题由观测数据的对数似然函数 l l l 转换到替代函数 G G G(有效地到 Q,因为后两项与 θ 无关,相当于常数),这更便于最大化。 G G G的最大值点保证了在 l l l 值上的增加.

H ( θ ( t ) ∣ θ ( t ) ) − H ( θ ∣ θ ( t ) ) ≥ 0 l ( θ ∣ x ) ≥ Q ( θ ∣ θ ( t ) ) + l ( θ ( t ) ∣ x ) − Q ( θ ( t ) ∣ θ ( t ) ) = G ( θ ∣ θ ( t ) ) H(\theta^{(t)}|\theta^{(t)})-H(\theta|\theta^{(t)})\geq 0\\ l(\theta|x)\geq Q(\theta|\theta^{(t)})+l(\theta^{(t)}|x)-Q(\theta^{(t)}|\theta^{(t)})=G(\theta|\theta^{(t)}) H(θ(t)θ(t))H(θθ(t))0l(θx)Q(θθ(t))+l(θ(t)x)Q(θ(t)θ(t))=G(θθ(t))
由于 Q ( θ ∣ θ ( t ) ) Q(\theta|\theta^{(t)}) Q(θθ(t)) l ( θ ( t ) ∣ x ) l(\theta^{(t)}|x) l(θ(t)x)独立于 θ \theta θ,函数 Q Q Q G G G在相同的 θ \theta θ达到最大。此外, G G G θ ( t ) \theta^{(t)} θ(t) l l l相切,并且在任一处低于 l l l,称 G G G l l l的一个劣化函数。

(三)MM 算法 (Minorize-Maximization)

MM算法在每次迭代时找到一个目标函数的下界函数(替代函数),求下界函数的最大值。

  • 每个 E 步等同于构造劣化函数 G
  • 每个 M 步等同于最大化该函数以给出一个上升的路径.
    在这里插入图片描述

四、方差估计

EM 的本质是极大化观测似然函数。因此, EM 参数估计后的协方差阵即观测数据的期望 Fisher 信息。一种方式是用观测数据的观测 Fisher 信息 − ℓ ′ ′ ( θ ^ ∣ x ) −ℓ''(\hat{θ}|x) ′′(θ^x) 来近似, 其中 ℓ ′ ′ ℓ'' ′′ l o g L ( θ ∣ x ) log L(θ|x) logL(θx) 的二阶导数,即 Hessian 矩阵。

Hessian矩阵是一个函数的二阶偏导数构成的方阵,它描述了这个函数在参数空间中的曲率和形状。

在有些情形, 这个 Hessian 阵可以解析计算出来,而在其他情形, 要得到或编码 Hessian 阵会很困难。在这些场合, 可用多种其他方法来简化协方差阵的估计。

(一)Louis’s Method

1、提出原因

Louis’s Method 是一种用于估计参数估计协方差矩阵的方法,特别是在应用EM(期望最大化)算法进行最大似然估计(MLE)时。由于EM算法的复杂性和涉及隐变量的结构,直接估计参数的协方差矩阵可能会很困难。Louis’s Method 提供了一种系统化的方法来从EM算法的输出中计算参数估计的协方差矩阵。

2、核心思想

  • Louis’s Method的核心思想是通过计算Hessian矩阵的逆矩阵来估计参数的方差;
  • Louis’s Method将完整数据的Hessian矩阵拆分为两部分:一部分由完整数据的似然函数得到,另一部分由观察数据的似然函数得到,用完全信息减去缺失信息来得到观测信息,观测信息的逆就是想要的协方差;
  • Louis’s Method使用了EM算法中的一些特性,比如E步中的期望和M步中的最大化,来简化Hessian矩阵的计算。

已知:
l o g f X ( x ∣ θ ) = l o g f Y ( y ∣ θ ) − l o g f Z ∣ X ( z ∣ x ; θ ) log f_X(x|\theta)=logf_Y(y|\theta)-logf_{Z|X}(z|x;\theta) logfX(xθ)=logfY(yθ)logfZX(zx;θ)
等式两边对隐变量,在观测数据和参数 w = θ w=\theta w=θ给定下,求条件期望即可得:
l o g f X ( x ∣ θ ) = Q ( θ ∣ w ) ∣ w = θ − H ( θ ∣ w ) ∣ w = θ log f_X(x|\theta)=Q(\theta|w)|_{w=\theta} -H(\theta|w)|_{w=\theta} logfX(xθ)=Q(θw)w=θH(θw)w=θ
再对第一个 θ \theta θ求二阶偏导数:
− l ′ ′ ( θ ∣ x ) = − Q ′ ′ ( θ ∣ w ) ∣ w = θ + H ′ ′ ( θ ∣ w ) ∣ w = θ -l''(\theta|x)=-Q''(\theta|w)|_{w=\theta}+H''(\theta|w)|_{w=\theta} l′′(θx)=Q′′(θw)w=θ+H′′(θw)w=θ

进而可以得到缺失信息法则:观测信息等于完全信息减去缺失信息
i ^ X ( θ ) = i ^ Y ( θ ) − i ^ Z ∣ X ( θ ) \hat{i}_X(\theta)=\hat{i}_Y(\theta)-\hat{i}_{Z|X}(\theta) i^X(θ)=i^Y(θ)i^ZX(θ)

  • i ^ Y ( θ ) = − Q ′ ′ ( θ ∣ w ) ∣ w = θ = − E { l ′ ′ ( θ ∣ Y ) ∣ x , θ } \hat{i}_Y(\theta)=-Q''(\theta|w)|_{w=\theta}=-E\{l''(\theta|Y)|x,\theta\} i^Y(θ)=Q′′(θw)w=θ=E{l′′(θY)x,θ}
  • i ^ Z ∣ X ( θ ) = v a r { d l o g f Z ∣ X ( Z ∣ x , θ ) d θ } \hat{i}_{Z|X}(\theta)=var\{\frac{d\ log\ f_{Z|X}(Z|x,\theta)}{d\theta}\} i^ZX(θ)=var{dθd log fZX(Zx,θ)}

缺失信息法则使得我们能够用完全数据似然和给定观测数据下缺失数据的条件密度来表达 i ^ X ( θ ) \hat{i}_X(\theta) i^X(θ), 而且可以避免包括观测数据的可能复杂的边际似然的计算.。在某些情况下该方法可较容易得到并编码, 但它并不总比直接计算 − ℓ ′′ ( θ ∣ x ) −ℓ′′(θ|x) ′′(θx)容易:如果 i ^ Y ( θ ) \hat{i}_Y(\theta) i^Y(θ)或者 i ^ Z ∣ X ( θ ) \hat{i}_{Z|X}(\theta) i^ZX(θ)难于解析计算。

此时可以通过 Monte Carlo 方法来估计:

  • i ^ Y ( θ ) \hat{i}_Y(\theta) i^Y(θ)的最简单的 Monte Carlo 估计为
    1 m ∑ i = 1 m − d 2 l o g f Y ( y i ∣ θ ) d θ ⋅ d θ \frac{1}{m}\sum_{i=1}^m-\frac{d^2log\ f_Y(y_i|\theta)}{d\theta · d\theta} m1i=1mdθdθd2log fY(yiθ)

3、计算步骤

  • 计算EM算法的期望步骤(E步)和最大化步骤(M步),得到每次迭代的参数估计
  • 计算每次迭代中的对数似然函数关于参数的一阶和二阶导数
  • 使用这些导数计算Hessian矩阵
  • 计算Hessian矩阵的逆矩阵
  • 使用逆Hessian矩阵来估计参数的方差

(二)删失的指数数据

对于处理删失的指数数据,Louis’s Method可以被应用于估计参数的方差。删失数据是指在统计分析中,一部分观测数据因为某些原因没有被完全观察到。在这种情况下,EM算法非常适用,因为它可以处理含有未观测数据(隐变量)的参数估计问题。

使用Louis’s Method来处理删失的指数数据并估计参数方差:

步骤1:定义模型

假设我们有一个指数分布的数据集,某些数据点是删失的。指数分布的概率密度函数为: f ( t ; λ ) = λ e − λ t f(t;\lambda)=\lambda e^{-\lambda t} f(t;λ)=λeλt λ \lambda λ是待估计的参数。

步骤2:EM算法的E步

在E步中,我们计算期望的对数似然函数,其中包含隐变量的条件期望。对于删失数据,我们需要计算每个观测值 y i y_i yi的完全数据对数似然函数的期望。

完整数据的对数似然函数可以写成:
l ( λ ∣ y 1 , . . . , y n ) = n l o g λ − λ ∑ i = 1 n y i l(\lambda|y_1,...,y_n)=nlog\lambda-\lambda\sum_{i=1}^ny_i l(λy1,...,yn)=nlogλλi=1nyi

步骤3:EM算法的M步

Q ( λ ∣ λ ( t ) ) = E { l ( λ ∣ Y 1 , . . . , Y n ) ∣ x , λ ( t ) } = n l o g λ − λ ∑ i = 1 n E { Y i ∣ x i , λ ( t ) } = n l o g λ − λ ∑ i = 1 n [ x i δ i + ( c i + 1 / λ ( t ) ) ( 1 − δ i ) ] = n l o g λ − λ ∑ i = 1 n [ x i δ i + c i ( 1 − δ i ) ] − C λ / λ ( t ) \begin{equation*} \begin{aligned} Q(\lambda|\lambda^{(t)}) &= E\{l(\lambda|Y_1,...,Y_n)|x,\lambda^{(t)}\} \\ &= nlog\lambda-\lambda\sum_{i=1}^nE\{Y_i|x_i,\lambda^{(t)}\} \\ &= nlog\lambda-\lambda\sum_{i=1}^n[x_i\delta_i+(c_i+1/\lambda^{(t)})(1-\delta_i)] \\ &= nlog\lambda-\lambda\sum_{i=1}^n[x_i\delta_i+c_i(1-\delta_i)]-C\lambda/\lambda^{(t)} \\ \end{aligned} \end{equation*} Q(λλ(t))=E{l(λY1,...,Yn)x,λ(t)}=nlogλλi=1nE{Yixi,λ(t)}=nlogλλi=1n[xiδi+(ci+1/λ(t))(1δi)]=nlogλλi=1n[xiδi+ci(1δi)]Cλ/λ(t)

其中 C = ∑ i = 1 n ( 1 − δ i ) C=\sum_{i=1}^n(1-\delta_i) C=i=1n(1δi)表示删失事件的个数,则我们有:
− Q ′ ′ ( λ ∣ λ ( t ) ) = n / λ 2 -Q''(\lambda|\lambda^{(t)})=n/\lambda^2 Q′′(λλ(t))=n/λ2

对于未观测到的变量 Z i Z_i Zi,即 y i y_i yi超过 c i c_i ci的部分,有密度 f Z i ∣ x ( z i ∣ x , λ ) = λ e x p { − λ ( z i − c i ) } 1 { z i > c i } f_{Z_i|x}(z_i|x,\lambda)=\lambda exp\{-\lambda(z_i-c_i)\} 1_{\{z_i>c_i\} } fZix(zix,λ)=λexp{λ(zici)}1{zi>ci},则:
d l o g f Z ∣ X ( Z ∣ x , λ ) d λ = C / λ − ∑ { i : δ i = 0 } ( Z i − c i ) \frac{d\ log f_{Z|X}(Z|x,\lambda)}{d\lambda}=C/\lambda-\sum_{\{i:\delta_i=0\}}(Z_i-c_i) dλd logfZX(Zx,λ)=C/λ{i:δi=0}(Zici)

进而得到缺失信息为:
i ^ Z ∣ X ( λ ) = − E d 2 l o g f Z ∣ X ( Z ∣ x , λ ) d λ 2 = v a r d l o g f Z ∣ X ( Z ∣ x , λ ) d λ = C / λ 2 \hat{i}_{Z|X}(\lambda)=-E\frac{d^2\ log f_{Z|X}(Z|x,\lambda)}{d\lambda^2}=var\frac{d\ log f_{Z|X}(Z|x,\lambda)}{d\lambda}=C/\lambda^2 i^ZX(λ)=Edλ2d2 logfZX(Zx,λ)=vardλd logfZX(Zx,λ)=C/λ2

应用Louis方法:
i ^ X ( λ ) = n / λ 2 − C / λ 2 = U / λ 2 \hat{i}_{X}(\lambda)=n/\lambda^2-C/\lambda^2=U/\lambda^2 i^X(λ)=n/λ2C/λ2=U/λ2
其中 U = ∑ i = 1 n δ i U=\sum_{i=1}^n\delta_i U=i=1nδi表示未删失事件的个数.。对这个例子, 通过直接分析容易验证 − l ′ ′ ( λ ∣ x ) = U / λ 2 −l''(λ|x) = U/λ^2 l′′(λx)=U/λ2

(三)自助法 (Bootstrap)

Bootstrap 是非常经典的求估计量方差的方法,不仅仅适用于 EM 算法的估计量。 对独立同分布的观测数据 x1, …, xn 来说:

  • 有放回地从 x 1 , . . . , x n x_1,...,x_n x1,...,xn抽取 x 1 ∗ , . . . , x n ∗ x_1^*,...,x_n^* x1,...,xn
  • 通过EM算法在这组新的数据上得到新的估计 θ ^ b \hat{\theta}_b θ^b
  • 重复上述过程,直到采用出B组参数 { θ ^ 1 , θ ^ 2 , . . . . , θ ^ B } \{\hat{\theta}_1,\hat{\theta}_2,....,\hat{\theta}_B\} {θ^1,θ^2,....,θ^B}

假定 { θ ^ 1 , θ ^ 2 , . . . . , θ ^ B } \{\hat{\theta}_1,\hat{\theta}_2,....,\hat{\theta}_B\} {θ^1,θ^2,....,θ^B}是从原本EM估计量 θ ^ \hat{\theta} θ^的分布中采样出来的样本,则可以方便地画出估计量的分布图以及计算方差或分位数

如果使用参数自助法,则第一步改成用第二步估计出来的参数生成一组数据,而不是 resampling。

五、EM变型

EM 有时候表达式太过复杂,难以精确地计算期望或者求出最值,在这种情况下,可以选择牺牲一些计算速度或精确性做一些近似计算。

(一)改进 E 步 (MCEM)

E 步需要找到在观测数据条件下完全数据的期望对数似然。 我们已经用 Q ( θ ∣ θ ( t ) ) Q(θ|θ^{(t)}) Q(θθ(t)) 表示该期望,当该期望难以解析计算时, 可以用 Monte Carlo方法来近似。

1、Monte Carlo EM

Wei and Tanner 提出第 t 个 E 步可以用下面的两步替代:

  • f Z ∣ X ( z ∣ x , θ ( t ) ) f_{Z|X}(z|x, θ^{(t)}) fZX(zx,θ(t)) 中抽取独立同分布的缺失数据集 Z 1 ( t ) , . . . , Z m ( t ) ( t ) Z_1^{(t)},...,Z_{m^{(t)}}^{(t)} Z1(t),...,Zm(t)(t),每个 Z j ( t ) Z_j^{(t)} Zj(t)是用来补齐观测数据集的所有缺失值的一个向量,这样 Y j = ( x , Z j ) Y_j=(x,Z_j) Yj=(x,Zj)表示一个补齐的数据集,缺失值由 z j z_j zj代替
  • 计算 Q ^ ( t + 1 ) ( θ ∣ θ ( t ) ) = 1 m ( t ) l o g f Y ( Y j ( t ) ∣ θ ) \hat{Q}^{(t+1)}(\theta|\theta^{(t)})=\frac{1}{m^{(t)}}log\ f_Y(Y_j^{(t)}|\theta) Q^(t+1)(θθ(t))=m(t)1log fY(Yj(t)θ)

此时 Q ^ ( t + 1 ) ( θ ∣ θ ( t ) ) \hat{Q}^{(t+1)}(\theta|\theta^{(t)}) Q^(t+1)(θθ(t))就是 Q ( θ ∣ θ ( t ) ) Q(\theta|\theta^{(t)}) Q(θθ(t))的Monte Carlo估计,M步改为最大化 Q ^ ( t + 1 ) ( θ ∣ θ ( t ) ) \hat{Q}^{(t+1)}(\theta|\theta^{(t)}) Q^(t+1)(θθ(t))

2、删失的指数数

假定试图在模型 Y 1 , . . . , Y n ∼ i . i . d . E x p ( λ ) Y_1,...,Y_n\sim i.i.d.Exp(\lambda) Y1,...,Yni.i.d.Exp(λ)下观测到完全数据,但有些情形是右删失的。这样,观测数据是 x = ( x 1 , . . . , x n ) x=(x_1,...,x_n) x=(x1,...,xn),其中 x i = ( m i n ( y i , c i ) , δ i ) x_i=(min(y_i,c_i),\delta_i) xi=(min(yi,ci),δi) c i c_i ci是删失水平,如果 y i ≤ c i y_i\leq c_i yici δ i = 1 \delta_i=1 δi=1,否则 δ i = 0 \delta_i=0 δi=0

完整数据的对数似然函数可以写成:
l ( λ ∣ y 1 , . . . , y n ) = n l o g λ − λ ∑ i = 1 n y i l(\lambda|y_1,...,y_n)=nlog\lambda-\lambda\sum_{i=1}^ny_i l(λy1,...,yn)=nlogλλi=1nyi
Q函数为:
Q ( λ ∣ λ ( t ) ) = n l o g λ − λ ∑ i = 1 n [ x i δ i + c i ( 1 − δ i ) ] − C λ / λ ( t ) Q(\lambda|\lambda^{(t)}) = nlog\lambda-\lambda\sum_{i=1}^n[x_i\delta_i+c_i(1-\delta_i)]-C\lambda/\lambda^{(t)} Q(λλ(t))=nlogλλi=1n[xiδi+ci(1δi)]Cλ/λ(t)
所以我们的标准EM更新为:
λ ( t + 1 ) = n ∑ i = 1 n [ x i δ i + c i ( 1 − δ i ) ] + C / λ ( t ) \lambda^{(t+1)}=\frac{n}{\sum_{i=1}^n[x_i\delta_i+c_i(1-\delta_i)]+C/\lambda^{(t)}} λ(t+1)=i=1n[xiδi+ci(1δi)]+C/λ(t)n

而MCEM,将用MC的方法估计Q函数:
Q ^ ( t + 1 ) ( λ ∣ λ ( t ) ) = n l o g λ − λ m ( t ) ∑ j = 2 m ( t ) Y j T 1 \hat{Q}^{(t+1)}(\lambda|\lambda^{(t)})=nlog\lambda-\frac{\lambda}{m^{(t)}}\sum_{j=2}^{m^{(t)}}Y_j^T1 Q^(t+1)(λλ(t))=nlogλm(t)λj=2m(t)YjT1

Q ′ ^ ( λ ∣ λ ( t ) ) = 0 \hat{Q'}(\lambda|\lambda^{(t)})=0 Q^(λλ(t))=0且对 λ \lambda λ求解得到:
λ ( t + 1 ) = n ∑ i = 1 ( t ) Y j T 1 / m ( t ) \lambda^{(t+1)}=\frac{n}{\sum_{i=1}^{(t)}Y_j^T1/m^{(t)}} λ(t+1)=i=1(t)YjT1/m(t)n
作为 MCEM 的更新。

3、MCEM 和 EM 对比

  • 计算复杂度:EM算法在E步中计算复杂度较高,但如果可以解析求解,则效率较高。MCEM算法则使用采样方法,计算复杂度通常更高。
  • 适用范围:EM算法适用于期望值可以解析计算的情况,而MCEM算法则适用于无法解析计算期望值的复杂模型。
  • 收敛性:两者都可以收敛,但MCEM的收敛速度和精度受采样质量影响更大。EM算法的收敛性更稳定,但可能会陷入局部极大值。

(二)改进 M 步

EM 算法的吸引力之一在于 Q ( θ ∣ θ ( t ) ) Q(\theta|\theta^{(t)}) Q(θθ(t)) 的求导和最大化通常比不完全数据极大似然的计算简单,这是因为 Q ( θ ∣ θ ( t ) ) Q(\theta|\theta^{(t)}) Q(θθ(t))与完全数据似然有关。然而,在某些情况下,即使导出 Q ( θ ∣ θ ( t ) ) Q(\theta|\theta^{(t)}) Q(θθ(t))的 E 步是直接了当的,M 步也不容易实施. 为此人们提出了多种策略以便于 M 步的实施。

1、ECM算法

Meng 和 Rubin 的 ECM 算法是用一系列计算较简单的条件极大化步骤(CM步)代替 M 步,每次条件极大化均被设计为一个简单的优化问题, 该优化问题把 θ θ θ 限制在某特殊子空间, 使得可以得到解析解或非常初等的数值解。

  • 第t个E步:与EM算法相同,计算当前参数下隐藏变量的条件期望
    Q ( θ ∣ θ ( t ) ) = E { l o g L ( θ ; X , Z ) ∣ x , θ ( t ) } Q(\theta|\theta^{(t)}) = E\{log L(\theta;X,Z)|x,\theta^{(t)}\} Q(θθ(t))=E{logL(θ;X,Z)x,θ(t)}
  • 第t个CM循环:将M步分解为多个条件最大化步骤。在每个CM步中,只对一部分参数进行最大化,而保持其他参数固定。重复这个过程直到所有参数都更新完毕。令 S S S表示每个CM循环中的CM步的数目,第t次循环里第s个CM步需要在约束:
    g s ( θ ) = g s ( θ ( t + ( s − 1 ) / S ) ) g_s(\theta)=g_s(\theta^{(t+(s-1)/S)}) gs(θ)=gs(θ(t+(s1)/S))
    下最大化 Q ( θ ∣ θ ( t ) ) Q(\theta|\theta^{(t)}) Q(θθ(t)),其中 θ ( t + ( s − 1 ) / S \theta^{(t+(s-1)/S} θ(t+(s1)/S是在当前循环的第 ( s − 1 ) (s-1) (s1)个CM步中求得的极大值点。当S个CM步的整个循环完成时,令 θ ( t + 1 ) = θ ( t + S / S ) \theta^{(t+1)}=\theta^{(t+S/S)} θ(t+1)=θ(t+S/S)并进行第 ( t + 1 ) (t+1) (t+1)次迭代的E步。

构造有效 ECM 算法的技巧在于巧妙地选择约束条件。通常,可自然地把 θ θ θ 分成 S S S 个子向量 θ = ( θ 1 , . . . , θ S ) θ = (θ_1,..., θ_S) θ=(θ1,...,θS), 然后在第 s s s 个 CM 步中,固定 θ θ θ 其余的元素而关于 θ s θ_s θs 寻求最大化 Q Q Q
g s ( θ ) = ( θ 1 , . . . , θ s − 1 , θ s + 1 , . . . , θ S ) g_s(\theta)=(\theta_1,...,\theta_{s-1},\theta_{s+1},...,\theta_S) gs(θ)=(θ1,...,θs1,θs+1,...,θS)

另外,第 s s s 个 CM 步也可以在固定 θ s θ_s θs 下关于 θ θ θ 的其他元素最大化 Q Q Q
g s ( θ ) = θ s g_s(θ) = θ_s gs(θ)=θs
也可根据特定的问题背景想象其他的约束体系。ECM 的一种变型是在每两个 CM 步之间插入一个 E 步,由此在 CM循环的每一个阶段均更新了 Q Q Q

2、EM梯度算法

如果最大化不能用解析的方法来实现,那么可以考虑采用迭代优化方法来实施每个 M 步。 这将会产生一个有嵌套迭代循环的算法。ECM 算法在 EM 算法的每次迭代中搬入 S 个条件最大化步骤, 这也会产生嵌套迭代。

为避免嵌套循环的计算负担,Lange 提出用单步 Newton 法替代 M 步,从而可近似取得最大值而不用真正地精确求解。M 步是用由

θ ( t + 1 ) = θ ( t ) − Q ′ ′ ( θ ∣ θ ( t ) ) − 1 ∣ θ = θ ( t ) Q ′ ( θ ∣ θ ( t ) ) ∣ θ = θ ( t ) = θ ( t ) − Q ′ ′ ( θ ∣ θ ( t ) ) − 1 ∣ θ = θ ( t ) l ′ ( θ ( t ) ∣ x ) \begin{equation*} \begin{aligned} \theta^{(t+1)} &= \theta^{(t)}-Q''(\theta|\theta^{(t)})^{-1}|_{\theta=\theta^{(t)}}Q'(\theta|\theta^{(t)})|_{\theta=\theta^{(t)}} \\ &= \theta^{(t)}-Q''(\theta|\theta^{(t)})^{-1}|_{\theta=\theta^{(t)}}l'(\theta^{(t)}|x) \\ \end{aligned} \end{equation*} θ(t+1)=θ(t)Q′′(θθ(t))1θ=θ(t)Q(θθ(t))θ=θ(t)=θ(t)Q′′(θθ(t))1θ=θ(t)l(θ(t)x)
给出的更新替代的,其中 l ′ ( θ ( t ) ∣ x ) l'(\theta^{(t)}|x) l(θ(t)x)是当前迭代得分函数的估值,第二个等式是由 θ ( t ) \theta^{(t)} θ(t)最大化 Q ( θ ∣ θ ( t ) ) − l ( θ ∣ x ) Q(\theta|\theta^{(t)})-l(\theta|x) Q(θθ(t))l(θx)的结论得到。

也可以用最速梯度法代替Newton法,从而避免计算 Q Q Q函数矩阵的逆矩阵:
θ ( t + 1 ) = θ ( t ) − α ( t ) Q ′ ( θ ∣ θ ( t ) ) ∣ θ = θ ( t ) = θ ( t ) − α ( t ) l ′ ( θ ( t ) ∣ x ) \begin{equation*} \begin{aligned} \theta^{(t+1)} &= \theta^{(t)}-\alpha^{(t)}Q'(\theta|\theta^{(t)})|_{\theta=\theta^{(t)}} \\ &= \theta^{(t)}-\alpha^{(t)}l'(\theta^{(t)}|x) \\ \end{aligned} \end{equation*} θ(t+1)=θ(t)α(t)Q(θθ(t))θ=θ(t)=θ(t)α(t)l(θ(t)x)

这篇关于统计计算二|EM算法(Expectation-Maximization Algorithm,期望最大化算法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/998569

相关文章

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

opencv实现像素统计的示例代码

《opencv实现像素统计的示例代码》本文介绍了OpenCV中统计图像像素信息的常用方法和函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 统计像素值的基本信息2. 统计像素值的直方图3. 统计像素值的总和4. 统计非零像素的数量

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

hdu1496(用hash思想统计数目)

作为一个刚学hash的孩子,感觉这道题目很不错,灵活的运用的数组的下标。 解题步骤:如果用常规方法解,那么时间复杂度为O(n^4),肯定会超时,然后参考了网上的解题方法,将等式分成两个部分,a*x1^2+b*x2^2和c*x3^2+d*x4^2, 各自作为数组的下标,如果两部分相加为0,则满足等式; 代码如下: #include<iostream>#include<algorithm

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖