LDA学习笔记5-LDA模型

来源:互联网 发布:中银淘宝校园卡办理 编辑:程序博客网 时间:2024/05/16 17:39

LDA(latent  dirichlet allocation)一种无指导的topic model,用于识别文档中包含的主题信息。

按照图模型表示如下图:


其中包含三个要素,每个要素及其对应的变量,对应于上图中的一个plate。

对于语料库中的每篇文档,LDA定义了如下生成过程(generative process):
1. 对每一篇文档m,从主题分布中抽取一个主题参数/theta_m;
2. 对文档m的每个单词位置m,n,根据/theta_m为参数的多项式分布,抽取出对应该词的主题zm,n
3. 根据zm,n对应的主题参数/phi_zm,n的多项式分布,抽取出对应的单词zm,n,其中zm,n为观察值
4.重复上述过程直至获取到所有的单词

设有K个主题,V个单词,M个文档,每个文档的长度是Nm。
则/theta是一个K*M的矩阵,每个文档对应的/theta_m是一个K维向量,用于生成包含K个主题的混合模型
/phi是一个V*K的矩阵,每个主题对应的/phi_k是一个V维向量,用于生成包含V个单词的混合模型
这里的混合模型是通过对每个单词抽取一次主题完成的,因为这样总体看来就好像一个文章里拥有了多个主题
(和bayes不同,bayes对每个文章生成唯一的主题)

下式为对应的只有1个文档的生成式,

前两项符合多项式分布,后两项符合dir分布。

建立LDA模型的目的,就是求解

1.每个文档(一个w向量)对应的topic分布(即对应的/theta值),

2.以及每个topic对应的word的分布,即对应的/phi值。

我们通过对每个word进行gibbis抽样获得对应的类别zm,n,然后再根据z值计算P(参数|Z,W)


详细做法是

1.Gibbs抽样计算每个z值,即轮流对每个单词计算z抽样,公式为

其中

这个式子在需要注意的:

  1. (74)式中利用了wi和w-i对于z-i条件独立这个事实,这可以从图模型中看出来。后续忽略了p(wi)这个常数,所以后来的式子是成正比。
  2. 若第m篇文章中的第n个词为t,其主题为k。当对这个词进行sampling时, 第k个主题的term数量nk(t)和第m个文档的topic数量nm(k)满足n(t)k=n(t)k,¬i+1,n(k)m=n(k)m,¬i+1对于其他文档和其他主题都没有影响。
  3. (74)式中p(w,z)的计算方法如下,带入后约掉分子分母后获得(75)式:

按p(zi| z-i,w )依次抽样获得整个马尔科夫链。然后按照下式计算获取/theta和/phi的值

按Dir分布的求其期望,有


最后,整个LDA算法如下:


参考文献:

1.Gregor Heinrich《Parameter estimation for text analysis》

2.Philip Resnik《Gibbs sampling for the uninitiated》

3. 《PRML》