E-Expectation,M-Maximum,期望最大化算法,问题:①什么期望?②最大化什么目标?
参数估计最常用的方法之一是极大似然法(MLE),但是MLE只能处理完全数据,如果是不完全数据,例如数据缺失、有未被观测到的值(隐变量),MLE并不是最优方法了,EM算法可以很好地处理不完全数据。
当遇到有缺失值的情况,MLE只能利用没有缺失的值进行参数估计,此时简单的公式无法直接套用,需要人工计算,计算复杂度高。
那EM算法是如何处理缺失值的?EM算法是先对缺失值猜一个值(例如平均值),此时样本数据就可以按照常规MLE方法进行估计了,得到的缺失值估计值再与猜测值进行比较,如果差异大,重复上述步骤,直到达到停止条件。(参考B站统计学习的豆花例子)
EM算法中的目标函数为隐变量给定观测数据和当前参数估计的条件期望
EM算法的公式推导和收敛性证明见附件。
因此在设计算法的时候,需要计算出隐变量Z的后验概率、观测变量与隐变量的联合概率密度函数,然后计算出目标函数,对目标函数求各个参数的偏导,得到参数估计值,更新迭代至收敛。
高斯混合模型(Gaussian Mixture Model,GMM)是EM算法的一个典型例子。GMM的参数估计见附件。GMM也是在聚类中与K-Means聚类不同,高斯混合聚类采用概率模型来刻画每个样本的簇类,即为一种“软划分”方法。在k-means中,每个数据样本属于某一个簇,比如对于第1个数据,可以通过 中的指示变量0,1来明确指出该数据属于哪个簇r。在GMM中,每个数据样本也是属于某一个簇,但它的指示变量不再是明确的0,1,而是用概率(隐变量)来表示,例如,数据对应的簇,也就是隐变量 ,它的期望值可以表示为
还可以结合例子理解:一个班有男生和女生,男生和女生的身高分别服从正态分布,现在需要估计参数,在这个班级里抽样,得到身高的观测值,但是性别是隐变量,无法观测到。性别Z可以看成服从二项分布的变量,参数p未知,从而可以计算性别Z的后验概率、身高与性别的联合概率密度函数,用EM算法解决。
在Python中可以调用包实现
from sklearn.mixture import GaussianMixture
补充多维情形下线性混合效应模型:
一般的线性混合效应模型表示为:
其中,y为的观测向量,X是维的已知设计阵,Z是维的已知设计阵,是维的未知参数向量,是系数向量且非随机,认为是所有个体共有的,因此称为固定效应。是维的随机向量,因此称为随机效应,e是维的随机误差向量。通常有如下假设:
且随机误差向量e与随机向量是相互独立的。其中D是非负定矩阵,R是正定矩阵。根据以上假设能够得到,y的协方差矩阵为
假如矩阵D和R未知或依赖于多个未知方差参数,模型便很难处理,一般线性模型下的参数推断方法无法应用,为使其模型形式更容易进行处理,常假设随机向量与随机误差e的方差具有一定的结构,如都依赖于一个有相同结构的未知参数向量,原模型可以写为
其中,y为的观测向量,X是维的已知设计阵,是维的未知参数向量,是维随机效应向量,为了体现总体的自然差异性,,是相应于第i个随机因素的维的设计阵,e是维的随机误差向量,且,并且,那么