EM推导PLSA模型
回归EM算法
以上是EM算法的框架,基本思想是:
- E步骤:求当隐变量给定后当前估计的参数条件下的后验概率
- M步骤:最大化complete data对数似然函数的期望,把E步当做是已知值,得到新的参数值
- 不断迭代以上步骤直到收敛。
plsa模型简介
PLSA应用于信息检索、过滤、自然语言处理等领域,考虑到词分布和主题分布,可以看做概率化的矩阵分解,采用EM算法来学习参数。
模型示意图如下:
其中包括的概率有:
- 以p(di)的概率选中文档di
- 以p(zk|di)的概率选中主题zk
- 以p(wj|zk)的概率产生一个词wj
在plsa中, p(di)可以事先计算求出, 而p(wj|zk),p(zk|di)就是我们需要计算的参数。
根据EM算法:
E步: 求隐变量的后验概率
p(zk|di,wj)=p(wj|zk)p(zk|di)∑Kl=1p(wj|zl)p(zk|di)
M步 完整数据的似然函数的期望
l=∑i∑jn(di,wj)logp(di,wj)
=∑i∑jn(di,wj)logp(wj|di)p(di)
=∑i∑jn(di,wj)logp(wj|di)+∑i∑jn(di,wj)logp(di)
后项是一个常数,因此可得
E(l)=∑i∑jn(di,wj)∑kp(zk|di,wj)log(p(wj,zk|di))
=∑i∑jn(di,wj)∑kp(zk|di,wj)log(p(zk|di)p(wj|zk))
其中 n(di,wj) 表示wj在di中出现的次数, 同时因为概率隐藏着两个约束条件:
∑Mj=1p(wj|zk)=1
∑Kk=1p(zk|di)=1
由此可以看出,这是一个带等式约束的问题,可以采用拉格朗日乘子法来解决。
Lag=∑i∑jn(di,wj)∑kp(zk|di,wj)log(p(zk|di)p(wj|zk))+∑Kk=1τk(1−∑Mj=1p(wj|zk))+∑Ni=1ρi(1−∑Kk=1p(zk|di))
分别对带求解参数p(wj|zk),p(zk|di)求偏导数可得
∂Lag∂p(wj|zk)=∑in(di,wj)p(zk|di,wj)p(wj|zk)−τk=0
∑in(di,wj)p(zk|di,wj)=τkp(wj|zk)
∑Mm=1∑in(di,wj)p(zk|di,wj)=∑Mm=1τkp(wj|zk)
∑Mm=1∑in(di,wj)p(zk|di,wj)=τk∑Mm=1p(wj|zk)=τk
将τk代人可得
∑in(di,wj)p(zk|di,wj)=∑Mm=1∑in(di,wj)p(zk|di,wj)∗p(wj|zk)
p(wj|zk)=∑in(di,wj)p(zk|di,wj)∑Mm=1∑in(di,wj)p(zk|di,wj)
同理可得
∂Lag∂p(zk|di)=∑jn(di,wj)p(zk|di,wj)p(zk|di)−ρi=0
∑jn(di,wj)p(zk|di,wj)=ρip(zk|di)
∑Kk=1∑jn(di,wj)p(zk|di,wj)=∑Kk=1ρip(zk|di)
∑Kk=1∑jn(di,wj)p(zk|di,wj)=ρi∑Kk=1p(zk|di)=ρi
将ρi代入
∑jn(di,wj)p(zk|di,wj)=∑Kk=1∑jn(di,wj)p(zk|di,wj)∗p(zk|di)
可得
p(zk|di)=∑jn(di,wj)p(zk|di,wj)∑Kk=1∑jn(di,wj)p(zk|di,wj)
M步更新这两个参数