通俗易懂的LDA模型

一、LDA模型的概念

什么是LDA模型?

LDA模型是一种无监督的贝叶斯模型,即不需要手工标注训练集。LDA模型也是一种典型的词袋模型,即认为一篇文章由许多个词组成,词与词之间没有先后顺序。

LDA模型的输入为:训练文本,指定主题个数K

LDA模型的输出为:每个主题Zk由哪些词组成及每个词的概率

比如:组成主题Z1的前5个词的概率:0.007*"netanyahu" + 0.007*"mod" + 0.007*"call" + 0.007*"gender" + 0.005*"sure"

LDA模型的应用为:预测一篇文档包含哪些主题及每个主题的概率

比如:对某个文档的预测结果为:[(13, 0.14081296), (15, 0.6363143), (16, 0.14560005)]

前提标准:一个词可以在多个主题下,一篇文档可以包含多个主题

二、文档生成思想

引用博客:https://blog.csdn.net/v_july_v/article//details/41209515

PLSA的文档生成模型思想:

1. 假设你每写一篇文档会制作一颗K面的“文档-主题”骰子(扔此骰子能得到K个主题中的任意一个),和K个V面的“主题-词项” 骰子(每个骰子对应一个主题,K个骰子对应之前的K个主题,且骰子的每一面对应要选择的词项,V个面对应着V个可选的词)。

                                            

2. 每写一个词,先扔该“文档-主题”骰子选择主题,得到主题的结果后,使用和主题结果对应的那颗“主题-词项”骰子,扔该骰子选择要写的词。即“先以一定的概率选取主题,再以一定的概率选取词”。

比如:设3个主题的概率分布是{教育:0.5,经济:0.3,交通:0.2}。我们把各个主题z在文档d中出现的概率分布称之为主题分布,且是一个多项分布。

设3个词的概率分布是{大学:0.5,老师:0.3,课程:0.2}。我们把各个词语w在主题z下出现的概率分布称之为词分布,这个词分布也是一个多项分布。

选主题和选词都是两个随机的过程,先从主题分布{教育:0.5,经济:0.3,交通:0.2}中抽取出主题:教育,然后从该教育主题对应的词分布{大学:0.5,老师:0.3,课程:0.2}中抽取出词:大学

注:LDA中,我们不再认为主题分布和词分布是唯一确定的,而是有很多种可能(而是随机变量)。也就相当于,在文档1中,3个主题的概率分布是{教育:0.5,经济:0.3,交通:0.2},但在文档2中,3个主题的概率分布可能是{教育:0.6,经济:0.3,交通:0.1}。

3. 最后,你不停的重复扔“文档-主题”骰子和”主题-词项“骰子,重复N次(产生N个词),完成一篇文档,重复这产生一篇文档的方法M次,则完成M篇文档。

PLSA中生成文档的整个过程便是选定文档生成主题,确定主题生成词。

三、LDA学习过程

一个例子的简单实验效果:https://blog.csdn.net/v_july_v/article//details/41209515

假设事先给定了这几个主题:Arts、Budgets、Children、Education,然后通过学习训练,获取每个主题Topic对应的词语。如下图所示:

然后以一定的概率选取上述某个主题,再以一定的概率选取那个主题下的某个单词,不断的重复这两步,最终生成如下图所示的一篇文章(其中不同颜色的词语分别对应上图中不同主题下的词):

下面使用两个模型对比描述LDA模型:

1. mix unigram模型实现步骤:【一个文档只有一个主题

公式:P(w|d)=P(w|t)*P(t|d);w表示词,t表示主题,d表示文档

(1). 随机地给θd和φt赋值(对所有的d和t)。θd<pt1,...,ptk>,其中,pti表示d对应T中第i个topic的概率。φt<pw1,...,pwm>,其中,pwi表示t⽣成V中第i个单词的概率。

(2). 针对⼀个特定的⽂档ds中的第i单词wi,如果令该单词对应的topic为tj,可以把上述公式改写为:Pj(wi | ds)=P(wi | tj)*P(tj | ds)。

(3). 现在我们可以枚举T中的topic,得到所有的pj(wi | ds)。取令pj(wi | ds)最⼤的tj表示该词表示的主题。

(4). 如果ds中的第i个单词wi在这⾥选择了⼀个与原先不同的topic(也就是说,这个时候i在遍历ds中所有的单词,⽽tj理当不变),就会对θd和φt有影响了。它们的影响⼜会反过来影响对上⾯提到的p(w | d)的计算。对D中所有的d中的所有w进⾏⼀次p(w | d)的计算并重新选择topic看作⼀次迭代。这样进⾏n次循环迭代之后,就会收敛到LDA所需要的结果了。

2. PLSA模型实现步骤:一个文档只有多个主题

(1) “文档-词项”的生成模型:

  1. 按照概率选择一篇文档
  2. 选定文档后,从主题分布中按照概率选择一个隐含的主题类别
  3. 选定后,从词分布中按照概率选择一个词

(2) 对于任意一篇文档,其是已知的。某个词在文档中的概率 = 出现词wj的总文档数 ÷ 词的总个数。

根据可以训练出文档-主题和主题-词项

3. LDA模型实现步骤:一个文档只有多个主题

与PLSA模型相比,就步骤1不相同。 “文档-词项”的生成模型:

  1. 按照概率选择一篇文档
  2. 从狄利克雷分布(即Dirichlet分布)中取样生成文档 的主题分布,换言之,主题分布由超参数为的Dirichlet分布
  3. 从主题的多项式分布中取样生成文档第 j 个词的主题
  4. 从狄利克雷分布(即Dirichlet分布)中取样生成主题对应的词语分布,换言之,词语分布由参数为的Dirichlet分布生成
  5. 从词语的多项式分布中采样最终生成词语 

个人学习笔记,还望大家多多指正!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值