1、概念
用于含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计。EM算法:E步求期望,M步求极大。
典例:
假设三枚硬币,分别记作A,B,C,出现正面的概率非别为π,p,q。进行如下抛掷硬币的试验:先掷A,根据结果选出硬币B或C,正面选B反面选C,然后掷选出的硬币,独立重复进行十次,掷硬币的结果(正面1反面0)观测如下:
1 1 0 1 0 0 1 0 1 1
假设只能观测到结果观测不到掷硬币的过程,问如何估计三硬币正面出现的概率
解析:
我们要迭代计算参数的估计值直至收敛为止。步骤大致入下:
①计算在模型参数π(i),p(i),q(i)下观测数据yj来自掷硬币B的概率
②计算模型参数的新估计值
EM算法步骤
(1)任选初值
(2)求出Q,也就是期望函数
(3)迭代使得期望最大
(4)给出停止条件,计算什么时候停止迭代
2、高斯混合模型
定义:高斯混合模型是指具有如下形式的概率分布模型:
其中αk是系数,φ(y|θk)是高斯分布密度
可以用EM算法估计高斯混合模型的参数。
高斯混合模型的EM算法:
3、EM算法的推广
EM算法有许多种变形,如GEM算法。GEM算法的特点是每次迭代增加F函数值(不一定是极大化F函数),从而增加似然函数值。
4、代码
SKlearn库GaussianMixture类是EM算法在混合高斯分布的实现.
gmm = GaussianMixture(n_components=n_components, covariance_type='full', random_state=0)
gmm.fit(x)
print ('预测均值 = \n', gmm.means_)
print ('预测方差 = \n', gmm.covariances_)
y_hat = gmm.predict(x)