固定: σ₁=σ₂=1.5、π₁=π₂=0.5(初始值)。真值: μ=(0, 4), σ=(1.0, 1.5), π=(0.4, 0.6), N=200。
上: 直方图(灰)/ 真实混合密度(黑虚线)/ 估计混合密度(蓝实线)/ 分量1(绿虚线)/ 分量2(红虚线)。下: 每次迭代的对数似然 LL[t](红线,单调不减)。
对二分量高斯混合模型 $p(x)=\pi_1\mathcal{N}(x|\mu_1,\sigma_1^2)+\pi_2\mathcal{N}(x|\mu_2,\sigma_2^2)$,通过反复进行 E 步与 M 步的 EM 算法进行估计。
E 步(责任度 $\gamma_{ik}$ 是数据 $x_i$ 由分量 $k$ 生成的后验概率):
$$\gamma_{ik}=\frac{\pi_k\,\mathcal{N}(x_i|\mu_k,\sigma_k^2)}{\sum_j \pi_j\,\mathcal{N}(x_i|\mu_j,\sigma_j^2)}$$M 步(用责任度作为权重更新 $\mu_k, \sigma_k^2, \pi_k$):
$$N_k=\sum_i \gamma_{ik},\quad \mu_k\leftarrow\frac{1}{N_k}\sum_i \gamma_{ik}\,x_i,\quad \sigma_k^2\leftarrow\frac{1}{N_k}\sum_i \gamma_{ik}(x_i-\mu_k)^2,\quad \pi_k\leftarrow\frac{N_k}{N}$$对数似然(EM 每次迭代保证单调不减):
$$\mathrm{LL}=\sum_i \log\!\left(\sum_k \pi_k\,\mathcal{N}(x_i|\mu_k,\sigma_k^2)\right)$$LL 的单调增加可作为实现正确性的检查指标。若两次迭代之间 LL 出现下降,说明更新公式存在 bug。