LDA(latent dirichlet allocation)一种无指导的topic model,用于识别文档中包含的主题信息。
按照图模型表示如下图:
其中包含三个要素,每个要素及其对应的变量,对应于上图中的一个plate。
3. 根据zm,n对应的主题参数/phi_zm,n的多项式分布,抽取出对应的单词zm,n,其中zm,n为观察值
设有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抽样,公式为
其中
这个式子在需要注意的:
- (74)式中利用了wi和w-i对于z-i条件独立这个事实,这可以从图模型中看出来。后续忽略了p(wi)这个常数,所以后来的式子是∝成正比。
- 若第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对于其他文档和其他主题都没有影响。
- (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》