- 问题导入
最大似然估计法是核估计 (density estimation) 的常用方法之一。在变量与潜在变量存在关系的时候,最大似然估计法便无法很好的处理。而期望最大算法(EM)可以处理存在潜在变量的情况。EM通常包括了两步:(1)估计潜在变量的值;(2)优化模型,反复迭代至收敛。
1. 最大似然法在处理潜在变量的问题
最大似然法的前提是,数据完整且可观测。但在实际过程中,这通常是不可能的:一部分变量可观察,而其他的不行,即使他们会影响其他的随机变量,但他们任然是不可观测的。
2. 期望最大算法(EM)
期望最大算法是在潜在变量存在情况下的最大似然法。算法分两步:
- E-step: 估计缺失的变量数据;
- M-step: 在当前数据下,最大化模型参数。
3. 高斯混合模型和EM算法
高斯混合模型是一个高斯分布组合而成的模型,每个部分都有单独的mean和std。例如:现有两个高斯过程生成数据,其中一个生成符合mean=20,std=5的高斯分布的3000个数据,另一个生成符合mean=40, std=4的高斯分布的4000个数据。
from numpy import hstack
from numpy.random import normal
x1 = nomral(loc=20, scale=5, size=3000)
x2 = nomral(loc=40, scale=5, size=4000)
X = hstack((x1, x2))
我们可以估计这个数据集的density通过高斯混合模型
from sklearn.mixture import GaussianMixture
X = X.reshape((len(X), 1))
model = GaussainMixture(n_compnets=2, init_params='random')
model.fit(X)
y_hat = model.predict(X)