EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计,或极大后验概率估计
首先引入:三硬币模型
假设有三枚硬币,分别记作 A , B , C A,B,C A,B,C。这些硬币正面出现的概率分别为 π , p , q \pi,p,q π,p,q。首先抛 A A A硬币,根据其结果选择抛 B , C B,C B,C硬币。正面选 B B B,反面选 C C C,然后记录最终硬币出现的结果。观测结果如下:
1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 1,1,0,1,0,0,1,0,1,1 1,1,0,1,0,0,1,0,1,1
只能观测到硬币投掷的结果,不能观测到过程。问如何估计三枚硬币正面出现的概率。
三硬币模型可以写成:
P ( y ∣ θ ) = π p y ( 1 − p ) 1 − y + ( 1 − π ) q y ( 1 − q ) 1 − y P(y|\theta)=\pi p^y(1-p)^{1-y}+(1-\pi)q^y(1-q)^{1-y} P(y∣θ)=πpy(1−p)1−y+(1−π)qy(1−q)1−y
采用极大似然估计,似然函数为:
P ( Y ∣ θ ) = ∏ j = 1 n [ π p y j ( 1 − p ) 1 − y j + ( 1 − π ) q y j ( 1 − q ) 1 − y j ] P(Y|\theta)=\prod_{j=1}^n[\pi p^{y_j}(1-p)^{1-y_j}+(1-\pi)q^{y_j}(1-q)^{1-y_j}] P(Y∣θ)=j=1∏n[πpyj(1−p)1−yj+(1−π)qyj(1−q)1−yj]
最终需要求的是:
θ ^ = arg max θ log P ( Y ∣ θ ) \hat{\theta}=\argmax_{\theta}\log P(Y|\theta) θ^=θargmaxlogP(Y∣θ)
此问题没有解析解,因此需要采取迭代的方法求解。
EM算法
首先给定初值 θ ( 0 ) = ( π ( 0 ) , p ( 0 ) , q ( 0 ) ) \theta^{(0)}=(\pi^{(0)},p^{(0)},q^{(0)}) θ(0)=(π(0),p(0),q(0)),然后不断计算,直至收敛为止。已知第 i i i次的参数估计值为 θ ( i ) = ( π ( i ) , p ( i ) , q ( i