LDA主题模型

LDA模型简介

LDA指两者算法,一种叫线性判别分析,一种叫文档主题生成模型,在NLP中我们当然指的是后者。

LDA是一种基于统计的生成模型,它可以根据语料库生成主题模型,并根据这个模型来预测一篇文章属于哪些主题。

算法理论

前提假设

不同于传统的词袋模型,LDA模型认为,一篇文章的生成,是首先随机地决定一些主题,再从每个主题中随机地选择一些词语,这些词语构成了一篇文章。LDA并不考虑词语在文章中的顺序。

LDA的模型,实际上由一个个主题组成,每个主题下有不同的词语,每个主题下的词语对应一个概率值,表明在给定该主题时该词出现的条件概率,即p(w|t)。

而文章的主题预测,即根据文章中出现的词语以及各词语出现的次数,来判断这篇文章最符合哪些主题中词语的概率分布,从而判定文章由哪些词语构成。

LDA的主题模型

贝叶斯学派的人认为,万物皆随机。那么,在LDA模型中上文中提到的条件概率的分布也被认为是随机的。这可以说是LDA模型与PLSA模型最大的不同。

所以在LDA中一篇文章的产生,实际上是随机生成了K个词语-主题的概率分布(K表示假设的主题数量),又随机生成了一个主题-文档的概率分布,根据这个主题-文档分布的结果去在K个词语-主题分布中找到符合要求的那个分布,根据这个分布生成了文档中的一个词语,重复此过程最终生成了一篇文档。主题与主题之间相互独立,词语与词语之间也相互独立,所以上文中两个概率分布生成都是多项式分布,即
p ( w ⃗ ) = ∏ i = 1 n p i α i p(\vec w) = \prod_{i=1}^n p_i^{\alpha_i} p(w )=i=1npiαi,其中 α i \alpha_i αi表示第i个值的样本的个数。

这样每生成一个词就要做两次随机过程,由于词与词之间是独立的,那么干脆先进行2N次随机过程,把每个词的主题以及相应的概率分布确定了,再去逐个生成词语。

主题-文档的概率分布与词语-主题的概率分布,显然不会是真的随机,而是某种概率。那生成某个概率分布的概率到底是怎样的呢?Dirichlet分布便是可以表示概率的概率的一种分布,它根据一个人为设定的先验参数生成样本,再根据生成结果来更新自己得到后验概率。关于Dirichlet分布可以见下文,这里仅说明,公式 Δ ( n ⃗ + α ⃗ ) Δ ( α ) \frac{\Delta(\vec n+\vec \alpha)}{\Delta(\alpha)} Δ(α)Δ(n +α )用来表示在根据先验分布 α ⃗ \vec \alpha α 得到的概率分布下生成样本分布为 n ⃗ \vec n n 的概率, n ⃗ \vec n n ( n 1 , . . . , n k ) (n_1,...,n_k) (n1,...,nk)

那么,语料库主题生成的概率,便可以表示为 p ( z ⃗ ∣ α ⃗ ) = ∏ i = 1 m p ( z ⃗ m ∣ α ⃗ ) = ∏ i = 1 m Δ ( n ⃗ m + α ⃗ ) Δ ( α ) p(\vec z|\vec \alpha) = \prod_{i=1}^m p(\vec z_m|\vec \alpha) = \prod_{i=1}^m \frac{\Delta(\vec n_m+\vec \alpha)}{\Delta(\alpha)} p(z α )=i=1mp(z mα )=i=1mΔ(α)Δ(n m+α ),其中m为语料库中的文本数。同样的,给定主题分布后,语料库中词的生成概率也可以表示为
p ( w ⃗ ∣ z ⃗ , β ⃗ ) = ∏ i = 1 k p ( w ⃗ k ∣ z ⃗ k , β ⃗ ) = ∏ i = 1 k Δ ( n ⃗ k + α ⃗ ) Δ ( α ) p(\vec w| \vec z, \vec \beta) = \prod_{i=1}^k p(\vec w_k| \vec z_k, \vec \beta) = \prod_{i=1}^k \frac{\Delta(\vec n_k+\vec \alpha)}{\Delta(\alpha)} p(w z ,β )=i=1kp(w kz k,β )=i=1kΔ(α)Δ(n k+α ),其中k表示语料库中的主题数量。这里虽然两个公式都用了n来表示分布,但它们并不表示同一个变量的分布。综上,我们可以得到语料库的主题-词语联合概率分布 p ( w ⃗ , z ⃗ ∣ α ⃗ , β ⃗ ) = p ( w ⃗ ∣ z ⃗ , β ⃗ ) p ( z ⃗ ∣ α ⃗ ) p(\vec w, \vec z|\vec \alpha, \vec \beta) = p(\vec w| \vec z, \vec \beta)p(\vec z|\vec \alpha) p(w ,z α ,β )=p(w z ,β )p(z α )

数据采样

(这里的数据采样是LDA算法中最重要的一个步骤,所以单独拎出来进行说明。)
上面的公式只是表现了语料库的生成过程,但现在我们实际上已经有了语料库,我们希望得到的是几个概率分布的值。由于语料库已知的情况下 w ⃗ \vec w w 是已知的,故我们真正需要计算的便是 p ( z ⃗ ∣ w ⃗ ) p(\vec z|\vec w) p(

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值