上一次刚写了LSA模型,本来这次想写PLSA模型,但是由于PLSA模型是需要用到EM算法的,所以这里我想先解释下EM算法,我所见过用到EM算法中,一般都是用来解决求解最大似然估计的参数的,当最大似然估计:
不好求解时,可以采用EM的方法,EM方法的大致思想是,如果无法直接求解一个表达式的最大值,那么我先求出这个式子的下界的表达式(E步),然后求出下界表达式的最大值(M步),如此交替循环,直到收敛。假如我求解上面这个式子的最大值,可以按照如下步骤:
z是一个随机潜在变量
这里Qi(z)表示xi属于潜在变量z的概率
根据jensen不等式,当f(x)为凹函数时,有f(Ex)>=Ef(x),而且f(x)=logx为凹函数,我们把Qi(z)当做概率分布,即可得到:
,当X为常数时,jensen不等式取等号,此时下界就是原来函数表达式,这样优化效果最好,我们取
,c为常数,然后分子分母都按照z取sigma,结果还是c,得到
此时分母等于1,c等于分子代入上一个式子,得到
至此我们得到E步的迭代表达式。
对于一般的EM算法,他们过程是这样的:
E步:任取theta,或者根据上一次M步求出的theta(此时theta当做已知变量)按照E步的表达式求出潜在变量z的分布是关于Xi的后验分布。
M步:根据上一步求出的Qi(z)(此时z的分布已知),通过最大似然估计求出theta,这步只是一个参数估计问题。
这两步交替执行,直到收敛。
至于收敛性,证明应该比较复杂,这里就不写了。
原文地址:http://blog.csdn.net/u012303532/article/details/41907609