EM算法
极大似然估计
如果存在一些样本数据,服从某个均值为μ方差为σ2高斯分布,可以将每个样本的值代入高斯分布的公式,从而得到每个样本的概率值,将所有样本的概率值相乘,就是样本的似然函数,使得似然函数最大时的高斯模型,就是接近真实分布的模型。通过估计可以得到高斯模型的均值和方差
μ=n1Σxi
σ2=n1Σ(xi−μ)2
这是极大似然估计求解模型参数
存在隐变量时
某些时候,随机变量无法直接(完全)观察到,比如一些样本可能是多个高斯模型的叠加(高斯混合模型,GMM),但是又不能确定哪些样本属于第一个高斯模型,哪些属于第二个高斯模型,因此就无法直接根据上式(1)(2)计算得到
问题举例
比如某随机变量X是由K个高斯分布组成,取各个高斯分布的概率为Π1,Π2,...Πn,第i个高斯分布的均值方差分别为μi,σi,观察到一系列样本x1,x2,...xn,估计参数Π,μ,σ
目标函数
也可以通过极大似然法求,但是没法用直接求导的方法求最大值,为了解决这个问题,分为两步得到结果
- 估算数据来自哪个组分:估计数据由每个组分生成的概率:对于每个样本xi,它由第k个组份组成的概率为:
γ(i,k)=ΣπjN(xi∣μj,σj)πkN(xi∣μk,σk)
这里需要先验给定每类高斯分布的均值和方差
γ(i,k)可以看作组分k在生成数据xi时所作的贡献
- 估计每个组分的参数,对于所有的样本点,对于组分k而言,可以看作生成了γ(i,k)xi∣i=1,2,3,...N这些点,组分k是一个标准的高斯分布,利用上面的结论,可以得到
Nk=Σγ(i,k)
μk=Nk1Σγ(i,k)xi
σk=Nk1Σγ(i,k)(xi−μk)(xi−μk)T
πk=NNk=N1Σγ(i,k)