EM(Expectation-Maximum)算法,也称为期望最大化算法。
EM算法是最常见的隐变量估计方法,在机器学习中有极广泛的用途,例如常被用用来学习:高斯混合模型(GMM)的参数;隐式马尔科夫算法(HMM);LDA主题模型的主分推断等。
EM算法是一种迭代优化策略,由于它的计算方法中每一次迭代都分两步,一个为期望步(E步),一个为极大步(M步),所以算法被称为EM算法。
EM算法受缺失思想的影响,最初是为了解决数据缺失情况下的参数估计问题。
其基本思想是:
输入: 观察到的数据 x = ( x 1 , x 2 , ⋯ , x n ) x = (x_1, x_2, \cdots, x_n) x=(x1,x2,⋯,xn),联合分布 p ( x , z ; θ ) p(x, z; \theta) p(x,z;θ),条件分布 p ( z ∣ x ; θ ) p(z|x; \theta) p(z∣x;θ),最大迭代次数 J J J。
输出: 模型参数 θ \theta θ
算法步骤:
(1) 随机初始化模型参数 θ \theta θ的初值 θ 0 \theta_0 θ0。
(2) j = 1 , 2 , ⋯ , J j = 1, 2, \cdots, J j=1,2,⋯,J 开始EM算法迭代:
Q i ( z i ) = p ( z i ∣ x i , θ j ) Q_i(z_i) = p(z_i|x_i, \theta_j) Qi(zi)=p(zi∣xi,θj)
l ( θ , θ j ) = ∑ i = 1 n ∑ z i Q i ( z i ) l o g p ( x i , z i ; θ ) Q i ( z i ) l(\theta, \theta_j) = \sum_{i=1}^{n}\sum_{z_i}Q_i(z_i)log\frac{p(x_i, z_i; \theta)}{Q_i(z_i)} l(θ,θj)=i=1∑nzi∑Qi(zi)logQi(zi)p(xi,zi;θ)
θ j + 1 = a r g m a x l ( θ , θ j ) \theta_{j+1} = argmaxl(\theta, \theta_j) θj+1=argmaxl(θ,θj)
EM算法对初始值敏感,聚类结果随不同的初始值而波动较大。总的来说,EM算法收敛的优劣成都很大程度上取决于其初始参数。
EM算法可以保证收敛到一个稳定点,即EM算法一定是收敛的。
EM算法可以保证收敛到一个稳定点,但是不能保证收敛到全局的极大值点,因为它是局部最优的算法。
当然,如果我们的优化函数 l ( θ , θ l ) l(\theta, \theta_l) l(θ,θl)是凸的,则EM算法可以保证收敛到全局最大值,这点和梯度下降这样的迭代算法相同。