赞
踩
https://www.cnblogs.com/pinard/p/6831308.html
LDA主题模型
前面做了这么多的铺垫,我们终于可以开始LDA主题模型了。
我们的目标是找到每一篇文档的主题分布和每一个主题中词的分布。在LDA模型中,我们需要先假定一个主题数目
K
K
K,这样所有的分布就都基于
K
K
K个主题展开。那么具体LDA模型是怎么样的呢?具体如下图:
我们的问题是这样的,我们有
M
M
M篇文档,对应第d个文档中有有
N
d
N_d
Nd个词。即输入为如下图:
LDA假设文档主题的先验分布是Dirichlet分布,即对于任一文档
d
d
d, 其主题分布
θ
d
\theta_d
θd为:
θ
d
=
D
i
r
i
c
h
l
e
t
(
α
⃗
)
\theta_d = Dirichlet(\vec \alpha)
θd=Dirichlet(α
)
其中, α \alpha α为分布的超参数,是一个 K K K维向量。
LDA假设主题中词的先验分布是Dirichlet分布,即对于任一主题 k k k, 其词分布 β k \beta_k βk为: β k = D i r i c h l e t ( η ⃗ ) \beta_k= Dirichlet(\vec \eta) βk=Dirichlet(η )
其中, η \eta η为分布的超参数,是一个 V V V维向量。 V V V代表词汇表里所有词的个数。
对于数据中任一一篇文档 d d d中的第 n n n个词,我们可以从主题分布 θ d \theta_d θd中得到它的主题编号 z d n z_{dn} zdn的分布为: z d n = m u l t i ( θ d ) z_{dn} = multi(\theta_d) zdn=multi(θd)
而对于该主题编号,得到我们看到的词 w d n w_{dn} wdn的概率分布为: w d n = m u l t i ( β z d n ) w_{dn} = multi(\beta_{z_{dn}}) wdn=multi(βzdn)
理解LDA主题模型的主要任务就是理解上面的这个模型。这个模型里,我们有 M M M个文档主题的Dirichlet分布,而对应的数据有 M M M个主题编号的多项分布,这样( α → θ d → z ⃗ d \alpha \to \theta_d \to \vec z_{d} α→θd→z d)就组成了Dirichlet-multi共轭,可以使用前面提到的贝叶斯推断的方法得到基于Dirichlet分布的文档主题后验分布。
如果在第d个文档中,第k个主题的词的个数为: n d ( k ) n_d^{(k)} nd(k), 则对应的多项分布的计数可以表示为 n ⃗ d = ( n d ( 1 ) , n d ( 2 ) , . . . n d ( K ) ) \vec n_d = (n_d^{(1)}, n_d^{(2)},...n_d^{(K)}) n d=(nd(1),nd(2),...nd(K))
利用Dirichlet-multi共轭,得到 θ d \theta_d θd的后验分布为: D i r i c h l e t ( θ d ∣ α ⃗ + n ⃗ d ) Dirichlet(\theta_d | \vec \alpha + \vec n_d) Dirichlet(θd∣α +n d)
同样的道理,对于主题与词的分布,我们有 K K K个主题与词的Dirichlet分布,而对应的数据有 K K K个主题编号的多项分布,这样( η → β k → w ⃗ ( k ) \eta \to \beta_k \to \vec w_{(k)} η→βk→w (k))就组成了Dirichlet-multi共轭,可以使用前面提到的贝叶斯推断的方法得到基于Dirichlet分布的主题词的后验分布。
如果在第k个主题中,第v个词的个数为: n k ( v ) n_k^{(v)} nk(v), 则对应的多项分布的计数可以表示为 n ⃗ k = ( n k ( 1 ) , n k ( 2 ) , . . . n k ( V ) ) \vec n_k = (n_k^{(1)}, n_k^{(2)},...n_k^{(V)}) n k=(nk(1),nk(2),...nk(V))
利用Dirichlet-multi共轭,得到 β k \beta_k βk的后验分布为: D i r i c h l e t ( β k ∣ η ⃗ + n ⃗ k ) Dirichlet(\beta_k | \vec \eta+ \vec n_k) Dirichlet(βk∣η +n k)
由于主题产生词不依赖具体某一个文档,因此文档主题分布和主题词分布是独立的。理解了上面这 M + K M+K M+K组Dirichlet-multi共轭,就理解了LDA的基本原理了。
现在的问题是,基于这个LDA模型如何求解我们想要的每一篇文档的主题分布和每一个主题中词的分布呢?
一般有两种方法,第一种是基于Gibbs采样算法求解,第二种是基于变分推断EM算法求解。
如果你只是想理解基本的LDA模型,到这里就可以了,如果想理解LDA模型的求解,可以继续关注系列里的另外两篇文章。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。