Latent Dirichlet Allocation(LDA) [pdf]模型是近年来提出的一种具有文本主题表示能力的非监督学习模型。 关键所在:it posits that each document is a mixture of a small number of topics and that each word’s creation is attributable to one of the document’s topics。 将文档看成是一组主题的混合,词有分配到每个主题的概率。 Probabilistic latent semantic analysis(PLSA) LDA可以看成是服 从贝叶斯分布的PLSA LDA,就是将原来向量空间的词的维度转变为Topic的维度,这一点是十分有意义的。 例如,如果一个文档A,包含电脑这个关键词,那么A向量化后可能是,比如电脑这个词是 A={x,2,0,…,x} 表示文档A中电脑出现了2次.x表示出现次数不care 如果是用词做维度的向量空间,做聚类也好,分类也好,A和B在电脑和微机上的这种向量表示,机器理解为A和B完全在表示不同的意义。而事实上,如果在词的 高维空间上看,电脑和微机的维是很近似的,正交性是很低的。 如果能够将高维空间上,近义词或者表示接近的词的维度“捏“成一个维度,比如电脑和微机这两个词被捏成了第2维,但是每个词在这个维上的权重给与不同的度 量(比如概率)。 A={x,2*pi,x,…x},pi表示电脑这个词到Topic2的转移概率。 这样,A和B看上去在第二个Topic上显示了一定的相关性。 由于Topic是被捏后的产物,每个Topic的正交性直观上看都很强,LDA开源的工具做出的结果可以把转移到TOpic最Top的那些词提取出来,都 是十分相关或近似的词。而Topic与Topic之间显示出很大的差异性。 短文本分类的商业价值是很大的,在视频分类,广告分类上都可以看作是短文本分类问题,我有幸做了一些这方面的工作,其中提到的短文本的扩展是很好的思路。 问答系统商业价值也很巨大,特别是封闭领域的问答系统,可以拦截投诉,用户提问,降低人工成本。开放领域的问答系统商业上感觉前途有限,当然把搜索引擎的 搜索结果进一步精化的思路肯定是搜索引擎的一个方向,用户会越来越懒,搜索引擎已经让用户懒了一些,还需要让用户继续懒下去。 下面是baidu知道中有人对LDA的解释 以下是在tm中对lda的定义: We describe latent Dirichlet allocation (LDA), a generative probabilistic model for collections of 其实它还可以用在别的方面,早期是被用在自然语言处理的文本表示方面。因为他提供了一个理解相关词为什么在同一文档出现的框架解释模型。 ========================================= Latent Dirichlet allocationThis is a C implementation of variational EM for latent Dirichlet allocation (LDA), a topic model for text or other discrete data. LDA allows you to analyze of corpus, and extract the topics that combined to form its documents. For example, click here to see the topics estimated from a small corpus of Associated Press documents. LDA is fully described inBlei et al. (2003) . This code contains: an implementation of variational inference for the per-document topic proportions and per-word topic assignmentsa variational EM procedure for estimating the topics and exchangeable Dirichlet hyperparameterDownloadsDownload the readme.txt . Download the code: lda-c.tgz . Sample data2246 documents from the Associated Press [ download ]. Top 20 words from 100 topics estimated from the AP corpus [pdf]. 还有一个 普林斯顿大学 的主题模型的邮件列表,牛人们: https://lists.cs.princeton.edu/mailman/listinfo/topic-models ============================================= [论文导读][教程][介绍]文本处理、图像标注中的一篇重要论文Latent Dirichlet Allocation 原文信息 Latent Dirichlet Allocation 原文的主要内容 有两种方法设计分类器: 原文就是讲了一种建立generative model的方法,用于文本处理。 开始讨论前,先做如下约定: 一种简单直观的词频概率模型——unigram model(原文Figure 3(a))这样描述某一文本中单词的“发生方式”: Mixture of unigram(原文中Figure 3(b)). 它这样描述某一文本中单词的“发生方式”: Latent Dirichlet Allocation (LDA, 原文中Figure 1). 它这样描述某一文本中单词的“发生方式”: 剩下的任务就是如何根据训练样本学习出LDA模型的具体形式。模型无非是含有控制参数的表达式,学习出了参数就确定了模型。我们看看LDA有哪些控制参数呢? 最后理一下原文的结构 预备知识 如果牢固掌握这些预备知识,理解原文会更容易些。 - p(X|Y)的记法。注意|右边的Y既可以表示随机变量(已经取定了某具体值),也可以表示普通的非随机变量。这样我们可以在最大似然估计和 Bayes方法间方便的“切换”,而不会让符号记法影响我们的表述。例如,考虑具有确定但未知参数μ,Σ的高斯分布p(x),可以记为p(x|μ,Σ); 若按照Bayes学派观点,可以将μ和Σ也看作随机变量,x的分布就能记为随机变量μ,Σ取定某值后的条件分布p(x|μ,Σ)——统一的记法。 - k取1分布/多项式分布(Multinomial)。考虑取3个离散值的随机变量x ~ p(x)。这个看似很平庸的分布…就是所谓的k 取1分布或称多项式分布。一般我们习惯的把它记为p(x_i) = u_i, i = 1,2,3,且u_1 + u_2 + u_3 = 1. 但在有些数学推导中,将它记为指数形式会更方便些.将x看作3维的随机向量,各分量是“互斥”的,即它只能取(1,0,0),(0,1,0),(0,0,1)三组值。于是可将分布重新记为 p(x) = (u_1^x_1)*(u_2^x_2)*(u_3^x_3).注意论文原文中Multinomial就是这儿说的k取1分布,与一些概率教科书中的定义不同。一般的k维情况依次类推。具体参[Bishop]的2.2节. - 共轭先验分布(Conjugate Prior)。考虑某概率密度函数,要估计其中的参数t。按照Bayes学派的观点,参数 t ~ p(t).我们有p(t|X) ∝ p(X|t)p(t),这个式子说:在没有做任何观测时,我们对t的知识用先验分布p(t)表示。当观察到X 后,就通过该式将先验概率p(t)更新(计算)为后验概率p(t|X),使我们对t的知识增加。仔细观察,若p(t)与p(X|t)有相同的函数形式,那么后验概率p(t|X)就与先验概率p(t)有相同的函数形式——这使得t的后验概率与先验概率具有相同的表达式,只是参数被更新了! 更妙的是,本次后验概率可以作为下次观测时的先验概率,于是当继续进行观测X_2,X_3…时,只是不断的在更新先验概率p(t)的参数,p(t)的函数形式不变。具体参见[Bishop]的2.2节。 - Dirichlet分布。现在我们可以说,Dirichlet分布就是k取1分布的Conjugate Prior。若k维随机向量 θ ~ Drichlet分布,则θ的k个分量θ_1,θ_2,…,θ_k都取连续的非负值,且 θ_1 + θ_2 + … + θ_k = 1。Dirichlet分布的具体表达式参见[Bishop]的2.2节。 - Simplex。考虑2维的例子:以(0,1)与(1,0)为端点的线段就是simplex。考虑3维的例子,以(0,0,1), (0,1,0),(0,0,1)为端点的三角形内部就是simplex。更高维的情况可依次类推。考虑θ ~ Drichlet分布。注意到θ的k个分量 θ_1,θ_2,…,θ_k都取连续的非负值,且θ_1 + θ_2 + … + θ_k = 1,可知Dirichlet分布的定义域是一个 simplex.这也就是原文中Figure 2那个三角形的含义(k = 3的示意图,让这个simplex三角形平躺在水平面上)。参见 [Bishop]的2.2节 - Graphical Models. 就是用图来表示随机变量中的依赖关系。这个tutorial一google一大把。建议参考 [Bishop]的8.1节,了解几个符号(空心圆圈——隐藏(latent)变量,实心圆圈——观察(observed)变量,方框——重复次数)就足够看懂原文中的Figure 1和Figure 3了。最多再看看[Bishop]的8.2节 - EM.关于这个的tutorial很多,但我觉得[Bishop]的9.2节是数学处理最为简洁,最容易看懂的(有个tutorial在关键的几步中用了大量∑和∏,让人抓狂) 。另外[Bishop]的9.4节也值得看,为理解其它内容如variational inference有好处。 - Variational Inference. 就是计算后验概率的近似方法。考虑随机变量{X,Z},其中X是观察变量,Z = {Z_1,Z_2}是隐藏变量。用EM法或做Bayes推理的关键一步,就是要求后验概率p(Z|X).不巧的是,在一些复杂问题中 p(Z|X)没有解析表达式,需要近似求解.相关的方法很多,一种经常使用的是基于可分解(factorization)假设的方法:p(Z|X) ≈ p(Z_1|X)p(Z_2|X)——就是说强行假设Z_1和Z_2条件独立——然后进行后续推导。 参考文献 [Bishop] Pattern Recognition And Machine Learning. C.M.Bishop. Springer, 2006(cryppie在本版曾发过电子版) 网上资源 可google到LDA的Matlab和C实现 |