本期编辑:Roy
● 复旦大学物理学士、计算机硕士
● 文本挖掘、机器学习、量化投资
一、概述
1. LDA是什么?
主题模型(Topic Model)
2003年由 Blei, Ng 和 Jordan提出的一种主题模型,可以用来分析文章的主题分布。
概率生成模型(Probabilistic Generative Model)
LDA模型认为一篇文章有若干个主题。
如下图所示:每一个词wi来自不同的主题zi,来自不同主题的概率不同;在每个主题zi下生成每个词的概率不同。所以一个词为wi的概率为:
LDA 的目的就是为了找出每篇文章的主题概率分布。
例子
有395 篇英文新闻,假设每篇新闻都有20个主题(#数字是拍脑袋得的)。
这样就完成了对于文本数据的降维工作,为进一步分析做好准备。
二、简化模型(掷骰子)
LDA 认为一篇文章由若干主题构成,每一个词都属于某一主题。
可以用抛骰子类比写文章的过程,存在两类不同骰子:
生成 N 篇文章(语料库有 V 个不同词,K 个主题)的过程:
Step 1:从 topic-word 坛子抽取 K 个骰子
Step 2:对于每一篇文章,抽取一个新的 doc -topic 骰子
Step 3:抛骰子决定下一个词
三、概率表述
选骰子是Dirichlet,抛骰子是Multinomial
真正处理文本时,为了方便处理:直接分词,不考虑顺序,用 bag-of-words 模型.
比如:抛骰子 3 次,结果是「1, 2, 1」,对应概率是 p(x1,x2,x3)= p(x1=1)p(x2=2)p(x3=1) 。
因为不考虑顺序了,对应的概率是 p(x1,x2,x3) 是多项式分布p(x1,x2,x3)=C(3,2)p(x=1)^2 * C(3,1)p(x=2)。
然后在求后验分布时,分子上似然概率中的系数和分母归一常数中的系数约掉了,所以文中提到多项式分布的地方都省略掉了多项式分布系数。
求解(Gibbs Sampling)
我们所能观察到的只是文章 W,而用来生成文章的不同骰子是潜变量(latent variables)不能观测。我们所要做的是根据观测到的文章,去推测用了一个什么样的骰子。
其中分母部分无法直接求解,需近似求解。可以用 EM、Bayesian Variance、Expectation Propagation、Gibbs Sampling 等不同的方法求解。这里介绍用 Gibbs Sampling 求解的方法。
lda包(源码)
https://github.com/ariddell/lda
以 5 篇文章、2 个主题的 Corpus 为例:
Corpus 用 Doc-Topic Matrix 表示:
五、总结
LDA模型本身简单明了,可以通过 “选骰子 — 抛骰子” 通俗理解。实际求解过程涉及数学背景较多,如:Dirichlet 分布、共轭分布、Bayesian Inference、Gibbs Sampling等。