# EM算法

# 极大似然估计

如果存在一些样本数据,服从某个均值为μ\mu方差为σ2\sigma^2高斯分布,可以将每个样本的值代入高斯分布的公式,从而得到每个样本的概率值,将所有样本的概率值相乘,就是样本的似然函数,使得似然函数最大时的高斯模型,就是接近真实分布的模型。通过估计可以得到高斯模型的均值和方差

μ=1nΣxi\mu = \frac{1}{n} \Sigma x_i

σ2=1nΣ(xiμ)2\sigma^2 = \frac{1}{n} \Sigma(x_i-\mu)^2

这是极大似然估计求解模型参数

# 存在隐变量时

某些时候,随机变量无法直接(完全)观察到,比如一些样本可能是多个高斯模型的叠加(高斯混合模型,GMM),但是又不能确定哪些样本属于第一个高斯模型,哪些属于第二个高斯模型,因此就无法直接根据上式(1)(2)计算得到

# 问题举例

比如某随机变量XX是由KK个高斯分布组成,取各个高斯分布的概率为Π1,Π2,...Πn\Pi_1,\Pi_2,...\Pi_n,第ii个高斯分布的均值方差分别为μi,σi\mu_i,\sigma_i,观察到一系列样本x1,x2,...xnx_1,x_2,...x_n,估计参数Π,μ,σ\Pi, \mu, \sigma

# 目标函数

也可以通过极大似然法求,但是没法用直接求导的方法求最大值,为了解决这个问题,分为两步得到结果

  1. 估算数据来自哪个组分:估计数据由每个组分生成的概率:对于每个样本xix_i,它由第kk个组份组成的概率为:

γ(i,k)=πkN(xiμk,σk)ΣπjN(xiμj,σj)\gamma(i,k) = \frac{\pi_kN(x_i|\mu_k,\sigma_k)}{\Sigma\pi_jN(x_i|\mu_j,\sigma_j)}

这里需要先验给定每类高斯分布的均值和方差

γ(i,k)\gamma(i,k)可以看作组分kk在生成数据xix_i时所作的贡献

  1. 估计每个组分的参数,对于所有的样本点,对于组分kk而言,可以看作生成了γ(i,k)xii=1,2,3,...N{\gamma(i,k)x_i|i=1,2,3,...N}这些点,组分kk是一个标准的高斯分布,利用上面的结论,可以得到

Nk=Σγ(i,k)N_k=\Sigma\gamma(i,k)

μk=1NkΣγ(i,k)xi\mu_k=\frac{1}{N_k}\Sigma\gamma(i,k)x_i

σk=1NkΣγ(i,k)(xiμk)(xiμk)T\sigma_k=\frac{1}{N_k}\Sigma\gamma(i,k)(x_i-\mu_k)(x_i-\mu_k)^T

πk=NkN=1NΣγ(i,k)\pi_k=\frac{N_k}{N}=\frac{1}{N}\Sigma\gamma(i,k)