http://blog.csdn.net/wangran51/article/details/7408399
LDA是给文本建模的一种方法,它属于生成模型。生成模型是指该模型可以随机生成可观测的数据,LDA可以随机生成一篇由N个主题组成文章。通过对文本的建模,我们可以对文本进行主题分类,判断相似度等。在90年代提出的LSA中,通过对向量空间进行降维,获得文本的潜在语义空间。在LDA中则是通过将文本映射到主题空间,即认为一个文章有若干主题随机组成,从而获得文本间的关系。LDA模型有一个前提:bag of word。意思就是认为文档就是一个词的集合,忽略任何语法或者出现顺序关系。
3 生成模型
LDA的建模过程是逆向通过文本集合建立生成模型,在讨论如何建模时,我们先要理解LDA的生成模型如何生成一篇文档。
假设一个语料库中有三个主题:体育,科技,电影
一篇描述电影制作过程的文档,可能同时包含主题科技和主题电影,而主题科技中有一系列的词,这些词和科技有关,并且他们有一个概率,代表的是在主题为科技的文章中该词出现的概率。同理在主题电影中也有一系列和电影有关的词,并对应一个出现概率。当生成一篇关于电影制作的文档时,首先随机选择某一主题,选择到科技和电影两主题的概率更高;然后选择单词,选择到那些和主题相关的词的概率更高。这样就就完成了一个单词的选择。不断选择N个单词,这样就组成了一篇文档。
具体来说,生成一篇文档按照如下步骤:
1. 选择N,N服从Poisson(ξ)分布,这里N代表文档的长度。
2. 选择θ,θ服从Dirichlet(α)分布,这里θ是列向量,代表的是个主题发生的概率,α是dirichlet分布的参数
3. 对N个单词中的每一个:
a) 选择主题zn,zn服从Multinomial(θ)多项分布。zn代表当前选择的主题
b) 选择wn,根据p(wn | zn; β):在zn条件下的多项分布。
上式中β是一个K x V的矩阵,βij = P(wj = 1 | zi = 1),也就是说β记录了某个主题条件下生成某个单词的概率。
观察第二步,这里是LDA和PLSA的区别所在。假设每篇文档由3个主题组成,θ就表明每个主题发生的概率,比如{1/6,2/6,3/6},这样不同的文档对应的θ也就不同,而θ可以用来判断文档的相似度等。
LDA Graphical model representation:
几乎所有讨论LDA的文章都包括上面的这幅图。它代表的概率模型:
上式计算边缘概率,便可得:
其中D代表一个语料库,M代表语料库中文档的总数。
4 参数估计
通过对LDA生成模型的讨论我们理解到对文本的建模实际上就是要计算α和β两个参数。α和β可以采用极大似然估计,但是这里遇到一个问题,就是似然函数由于α和β的耦合无法直接求出来:
回想前面提到过的variational inference方法,为了估计后验分布,寻找一个似然函数的下界,在这里,这个下界正好可以被用来做为参数估计,因此LDA原始paper[6]选择使用variational inference方法来计算似然函数的下界。这样,分别给定一个α和β的值,就可以计算出一个似然函数的值。极大似然函数的参数估计,就是要找出一对α和β,使得似然函数值最大。这时就用到了EM算法,每次E-STEP输入α和β,计算似然函数,也就是variational inference的过程,M-STEP最大化这个函数,求出α和β。这样不断迭代知道收敛,就求得了最终的α和β值。在variational inference中需要选取Q的分布形式,使得Q容易计算。在LDA原始paper中,作者选取了:
其中γ和Φ为q的参数。这里假设了θ和z相互独立,并丢掉w节点,简化的模型如下:
下面要做的工作就很明显了:
原始paper的作者在其paper的附录做了推导,计算出γ和Φ迭代公式:
其中:
接下来的工作,就是要进行EM迭代,直到α和β收敛。
E-STEP:
对每一篇文档,计算参数γ和Φ
M-STEP:
最大化Variational Inference中的下界,求出此时的 α和β