LDA主题模型(一)基本概念
LDA主题模型(二)Gibbs采样方法
LDA主题模型(三)变分方法
Gibbs采样过程
Gibbs采样可以从复杂的概率分布中生成数据,只需要知道每个分量相对其他分量的条件下就可以进行采样。具体可以看这篇博客
LDA的gibbs采样步骤是:初始随机给每个文档的每个词赋予一个主题,统计词与主题的信息得到nk和nm的值,然后计算对每个词wi(这里为方便,将wi代替wm,n)的主题概率P(zi∣z¬i,w),根据主题概率采样一个新主题赋予该词,然后同样方法更新下个词直到收敛。
选定超参α,β后,也给每个词赋予个一个主题并统计出nk、nm之后,如何计算采样依据的概率P(zi∣z¬i,w)呢?又该如何利用上篇博客求的联合概率呢?

假定此时是对某个词wm,n=t∗(观测得到), zm,n=k∗(本轮赋予wi的主题序号为k∗)
其中Δ(nk+β)=Γ[∑tV(nt+βt)]Γ(n1+β1)Γ(n2+β2)...Γ(nt∗+βt∗)...Γ(nkV+βkV)
而Δ(nk,¬i,β),因为不考虑wi只有Γ(nt∗+βt∗)及分母比上式少1,由性质Γ(n)=(n−1)!,因此Δ(nk,¬i+β)Δ(nk+β)=∑t=1V(nkt+βt)−1nkt∗+βt∗−1
同理Δ(nm,¬i+α)Δ(nm+α)=∑k=1K(nmk+αk)−1nmk∗+αk∗−1
P(zi=k∣z¬i,w)=∑t=1V(nkt+βt)−1nkt∗+βt∗−1×∑k=1K(nmk+αk)−1nmk∗+αk∗−1
上式等号右边的变量均已知,因此可以求解。
注:去除某个位置的计数并不影响θm,φk的后验分布,故仍为Dirichlet分布。由Dirichlet分布的期望公式可得:
E(θm∣w¬i,z¬i)=∑k=1K(nmk+αk)−1nmk∗+αk∗−1 E(φk∣w¬i,z¬i)=∑t=1V(nkt+βt)−1nkt∗+βt∗−1
因此也可以写成P(zi=k∣z¬i,w)=E(θm∣w¬i,z¬i)E(φk∣w¬i,z¬i)
LDA的gibbs采样过程
主要分以下几步:
1.确定主题个数K,选择合适的超参α,β
2.对每篇文档的每个词随机赋予一个主题
3.统计得到nk和nm
4.扫描文档中的每个词,计算该词的P(zi=k∣z¬i,w),根据这个概率分布采样一个新的主题编号赋予该词
5.同样更新下一个词,重复3.4步直到收敛
6.统计每个词的主题,得到文档-主题分布θm和主题-词分布φk
注:
1.关于主题个数的选取需要结合具体的情况看,如果是纯主题模型一般使用perplexity调整主题个数的,perplexity是衡量主题之间重叠度的一个指标(越小越好),可以做出perplexity与主题个数的曲线在拐点处取最优值。而主题模型如果用到其他领域(如分类),就还要考虑recall和precision等指标。
2.超参α,β一般会选择等值向量。
新文档的主题分布预测
对于给定的语料库mnew,我们已经训练好了LDA模型,此时对文档如何预测它的主题分布呢?因为LDA已经确定与主题-词分布φk,主要估计θmnew
主要分以下几步:
1.对该文档中每个词赋予一个主题
2.统计nmnew,扫描文档的每个词i,计算该词的P(zi=k∣z¬i,w)并采样一个新主题(不需要更新nk)
3.重复2步直到收敛
4.统计每个词的主题得到θmnew
注:还需要看具体情况,如果新文档词较少的时候甚至可以不更新nm;如果新文档较多需要一起更新nm,nk