关于LDA模型

来源:互联网 发布:js实现展开收起 编辑:程序博客网 时间:2024/05/23 01:44

最近在研究推荐系统,其中有个隐语义模型LDA.看了大量的博客,资料,文献,对于我这种数学出身不好的人才略微知道这到底是个什么东西.记录一下,一来归纳总结一直就是一种比较好的学习方式,而来希望能够给后来者哪怕是一点点理解上启示。

撇开枯燥的数学不谈,这个模型到底能够用来干什么,我发现很多资料和博客介绍的都比较笼统,看完之后脑子里都是些复杂的不知所云的数学公式,连这个模型的目的是什么都不清楚。在这里谈谈我自己的理解。对于计算机程序来讲,从输入中间过程输出来讲比较清晰。这个模型的输入就是一些语料(这个抽象的词可以具体化为几篇文档,譬如几个txt文件,其中每个文件中存放的都是一篇文章)+模型的初始参数设置,中间过程就是通过模型语料来训练LDA模型的参数,训练好的LDA模型可以对一篇文档,输出这个文档属于某个主题的概率。所以就像其他的有监督统计学习方法一样,LDA模型先要进行训练,然后再将训练好的模型拿来分析和预测。


虽然上面理得过程并不复杂,但是整个模型涉及的数学知识比较多,尤其是对这些知识的作用理解不清就很容易让人犯晕。其中包括Dirichlet+多项共轭分布,LDA模型过程以及  Gibbs 抽样方法。引用一下LDA的概率图模型:

  

由这张概率图,可以想象这样一个过程,加入一个奇怪的作家要写一篇文章,它在写每一个单词的时候都要先为这个单词确定一个主题。这个主题的确定由一个多项分布来决定(可以认为一个多面的骰子,骰子的每一面都是一个主题),但是这个多项分布又由一个Dirichlet分布来决定。这就是图中的上半部分,先由Dirichlet分布决定多项分布,再由多项分布决定主题Zm,n.同样在由主题确定单词的时候有这样的一个过程,首先由一个Dirichlet分布决定一个多项分布,再由多项分布决定要书写的单词。

以上也就算是LDA模型了,接下来是gibbs抽象,gibbs抽样的作用其实就是根据输入的语料训练得到中间隐含参数的值。因为这整个LDA过程中,输入包括两个Dirichlet分布的参数alpha,beta以及语料和topic的个数。根据这些输入采用gibbs抽样方法,计算得到中间的三个参数(不知道怎么打这些字母,就是Zm,n和两个多项分布的参数)

       LDA训练好以后,对于新的文档,要想知道它的主题分布,就可以再次采用gibbs抽样方法,固定,得出即可。

        整篇博文不涉及任何数学推导,需要详细了解的可以移步大牛的专项博客http://blog.csdn.net/yangliuy/article/details/8302599,如有错误,欢迎批评指正



0 0
原创粉丝点击