1. EM算法-数学基础
2. EM算法-原理详解
3. EM算法-高斯混合模型GMM
4. EM算法-高斯混合模型GMM详细代码实现
5. EM算法-高斯混合模型GMM+Lasso
1. 前言
概率模型有时既含有观测变量(observable variable),又含有隐变量或潜在变量(latent variable),如果仅有观测变量,那么给定数据就能用极大似然估计或贝叶斯估计来估计model参数;但是当模型含有隐变量时,需要一种含有隐变量的概率模型参数估计的极大似然方法估计——EM算法
2. EM算法原理
EM算法称为期望极大值算法(expectation maximizition algorithm,EM),是一种启发式的迭代算法。
EM算法的思路是使用启发式的迭代方法,既然我们无法直接求出模型分布参数,那么我们可以先猜想隐含数据(EM算法的E步),接着基于观察数据和猜测的隐含数据一起来极大化对数似然,求解我们的模型参数(EM算法的M步)。
可以通过K-Means算法来简单理解EM算法的过程。
E步:
在初始化K个中心点后,我们对所有的样本归到K个类别。
M步:
在所有的样本归类后,重新求K个类别的中心点,相当于更新了均值。
3. EM算法公式
对于(m)个样本观察数据(x=(x^{(1)},x^{(2)},...x^{(m)}))中,找出样本的模型参数( heta),极大化模型分布的对数似然函数如下,假设数据中有隐含变量(z=(z^{(1)},z^{(2)},...z^{(m)}))
加入隐含变量公式变为如下,注意到下式中(Q_i(z(i)))是一个分布,因此(sum Q_i(z(i))logP(x(i),z(i)|θ))可以理解为(logP(x(i),z(i)|θ))基于条件概率分布(Q_i(z(i)))的期望。
根据Jensen不等式,(1)式变为(2)
4. EM算法流程
输入:观察数据(x=(x^{(1)},x^{(2)},...x^{(m)})),联合分布(p(x,z| heta)), 条件分布(p(z|x, heta)), EM算法退出的阈值(gamma)。
- 随机初始化模型参数( heta)的初值( heta^0)。
- E步:计算联合分布的条件概率期望
- M步:极大化(L( heta, heta^j)),得到(θ^{j+1}):
- 重复2,3两步,直到极大似然估计(L( heta, heta^j))的变化小于(gamma)
5. 总结
如果我们从算法思想的角度来思考EM算法,我们可以发现我们的算法里已知的是观察数据,未知的是隐含数据和模型参数,在E步,我们所做的事情是固定模型参数的值,优化隐含数据的分布,而在M步,我们所做的事情是固定隐含数据分布,优化模型参数的值。
本节介绍的EM算法是通用的EM算法框架,其实EM算法有很多实现方式,其中比较流行的一种实现方式是高斯混合模型(Gaussian Mixed Model)。