用途:求解含有因变量的问题,但模型结构需要先知道。
方法:最大化完全数据(可观测数据+不可观测)的期望;
第1步(E步):先假定一个模型初始参数,求完全数据的期望等价于求因变量参数值;
第2步(M步):因变量确定之后,问题转化为极大似然估计问题,最大化完全数据的期望,即更新模型参数。
使用到的关键工具:Jensen不等式
假定函数f(x)是下凹函数,,则有:
否则f(x)是上凸函数,则有:
实际计算步骤
E步(已知theta求z)
根据theta的初值,计算各个样本j对于各个模型k的响应度r_jk值
计算公式:对于样本j,计算单个模型输出在全部模型输出的比值。
M步(已知z求theta,使用极大似然估计)
根据E步的响应度r_jk,迭代更新各个子模型k的theta参数值
计算公式:
模型k均值miu_k = r_j乘以实际输出再累加 / r_jk的累加和
模型k方差sigma_k = r_jk乘以(实际输出 - miu_k)^2 / r_jk的累加和
模型k权重alpha_k = r_jk的累加和 / 样本总数
本质上就是一个逐点相乘的各种比值计算。
公式推导
首先有jensen不等于f(∑r_i * x_i) >= ∑f(r_i * x_i),∑r_i=1
令模型参数theta记做$,则
log p(y|$)
= log ∑ p(y,z|$)
= log ∑ Q(z)*p(y,z|$)/Q(z)
≥ ∑ Q(z)* log[p(y,z|$)/Q(z)]
即原函数存在一定下界,等号取到条件是p(y,z|$)/Q(z)=c常数。
Q(z) = p(y,z|$) / ∑_z p(y,z|$) = p(y,z|$) / p(y|$) = y(z|y,$))
即在给定模型参数和观测时的z的条件概率。
说明:通过jensen不等式,将log ∑转为了∑log问题。
E步:固定$,计算Q(z)得到下界J(z,$);
M步:固定Q(z),改变$最大化(提升)下界J(z,$)。
Q函数为∑_z p(z|y,$)*p(y,z|$),确定了z,联合概率分布p(y,z|$)也就知道了
完全数据的联合概率分布为p(y,z|$)
参考文献:
人人都懂EM算法
https://zhuanlan.zhihu.com/p/36331115
【机器学习】EM——期望最大(非常详细)
https://zhuanlan.zhihu.com/p/78311644
-- over --