PLSA模型的再理解以及源码分析
之前写过一篇PLSA的博文,其中的收获就是知道PLSA是LSA在概率层面的扩展,知道了PLSA是一种主题模型,知道了PLSA中的参数估计使用的是EM算法。当时我就认为,这样子经典好用的算法,我是会回头再来理解它的,这样子才会有更加深刻的心得。所以有了这篇PLSA模型的再理解。
1. 两种思路解PLSA模型
参考了很多资料,发现大体上有两种解决PLSA模型的思路。下面我们大致说一下它们的思路。
思路一:EM算法中需要更新两个概率
PLSA模型的示意图如下:
其中包括的概率有:
也就是说我们知道的是P(d,w),需要求解的是P(z,d)和P(w,z)。
我们根据P(d,w)构建似然函数,而且我们需要最大化这个似然函数,如下:
需要明确的是,这个似然函数中的自变量是P(z,d)和P(w,z),不巧的是,这两个变量在Log函数的内部是相加的关系,我们知道这为对似然函数的求导带来了很多麻烦。所以我们使用的是EM算法。
EM算法的基本实现思想是:
(1)E步骤:求隐含变量Given当前估计的参数条件下的后验概率。
(2)M步骤:最大化Complete data对数似然函数的期望,此时我们使用E步骤里计算的隐含变量的后验概率,得到新的参数值。
两步迭代进行直到收敛。
具体而言,
在PLSA模型中的E步骤,我们直接用贝叶斯公式计算隐含变量zk在当前参数取值条件下的后验概率,记住是后验概率,如下:
这里的