说明:本文主要是本人在学习LDA相关总结,只做学习和交流用途。
目录:
0、LDA概率主题模型能做什么?
1、主题模型原理及一些数学公式(未完成)
2、LDA Gibbs Sampling 原理及 JGibbs 原代码说明(未完成)
3、LDA相关参数应用,如何优化?(未完成)
4、LDA拓展及应用(未完成)
先说说我开始学习缘由。主要组里是需要做些大量文本的文本信息处理,并且没有标注数据。而当时我了解的机器学习算法,比如朴素贝叶斯网络、支持向量机、决策树、KNN等,都比较偏向硬性的文本分类。当时也只好抱主题模型这个大腿了。现在看起来也许主题模型也只是NLU领域一个工具而已,但是其入门需要一定数学门槛,而且建立模型以后,还是不能直接应用于各种任务,还是需要对模型进行拓展。我也没用老师指导,只能自己查文献,找博客。当时走了不少弯路,希望大家能在学习NLU 算法的时候少走弯路。不过包括CSDN上有各种牛人,大家在学习算法的时候一定要善于借鉴这些牛人的博客。
—————————————————快乐的分割线———————————————————————
0、LDA概率主题模型能做什么?
主题模型(Topic Model) 有啥用?在NLP中用处还蛮大的。
a.自动发现大量文本中的规律性。首先概率主题模型提出一个“主题”的概念,可以自动发现主题,并且将主题相关的词语列出来。比如对大量科学论文进行LDA建模,可以将生物相关的主题发掘出来,并且给出主题词如“动物”、“植物”、“基因”。并且这个发现过程是非监督的,不需要人工干预的,很适合处理海量网络文本信息。
b.对于一篇文档如果很长的话,比如有几万字,如果我们使用文档的词语作为信息处理的单元,显然信息量太大,相当于一个上万维的向量,必须要进行信息维度的降维。而LDA主题模型正是一个良好的降维模型。比如我们将主题定为100个,对文档进行建模,就可以将一篇文档的信息降成100维。如下图。
这个图片可这么解释:
假如有M篇文档(doc),这些文档的词典的大小V,用矩阵C来表示文档集合,则Cij为第i篇文档中对应词典的第j个词的词频。那么矩阵C的大小有C=M*V。如果M=10000,V=5000,我们需要处理的数据量有500M个整数。 对这个矩阵处理起来就非常费时费力了。
那么我们可以利用主题模型进行简化。在主题模型看来,文档和词语背后都隐含一个主题的参量。假设M篇文档隐含K个主题(一般K<<M,K<<V),那么对于每个词语,对应每一个主题都有一个概率,这就是矩阵,大小是K*V的,在主题模型里点含义是
。
对于每篇文档,对应每一个主题也有一个概率,这就是矩阵,大小是M*K的。含义是
。
则每个词的产生概率为:
整篇doc的产生概率: