上周我们留了一个问题:在使用最大似然法时如何去掉那些并不重要但实际上出现次数又很多的单词呢?

《Text Mining and Analytics》学习笔记——第三周

这周就以这个问题开始进一步的学习概率主题模型吧。

一元语言混合模型

怎么能避免那些并不重要但实际上出现次数又很多的单词对结果的影响呢?我们很自然的就会想到将a,the这类单词和其他的单词分开,也就是需要两个或多个分布来表示一个模型。

正如下图所展示的一样,我们用了两个分布来生成一个文本挖掘的文档,选择将θB作为主题背景,θd作为主题。
《Text Mining and Analytics》学习笔记——第三周

此时假如文本中有一个单词‘the’,那么这个the的概率应该怎么算呢?
P("the")=P(θd)P("the"|θd)+P(θB)P("the"|θB)=0.50.000001+0.50.03

回顾一下,我们改变了原本使用一个词分布的模型,换为使用两个词分布的混合模型,以此来避免a,the这类单词的干扰

混合模型的评价

我们评价这个模型的效果的方法基本类似:

  • 两个主题(主题,主题背景)
  • 主题覆盖率

考虑一下极端情况,其中一个模型的占比为0,即P(θB)为0时,也就变回了我们之前的一元语言统计模型。

计算方法

  • 数据:文本d
  • 混合模型:参数Λ=(p(w|θB),p(w|θd),P(θB),P(θd))
    • 两个一元模型:θB(主题背景),θd(主题)
    • 混合的权重(模型选择):P(θB)+P(θd)=1
  • 最大似然法(Likelihood):
    P(d|Λ)=i=1|d|P(xi|Λ)=i=1|d|[p(θd)p(xi|θd)+p(θB)p(xi|θB]
  • 最大似然法的评估
    Λ=arg max p(d|Λ)
    s.t  i=1Mp(wi|θd)+i=1Mp(wi|θB)=1

参数估计

我们要怎么计算混合模型的参数呢?(用最大似然法找最大的参数)

思路:

我们先设背景分布θB已知,现在主要知道θd后,就可以知道混合模型的参数值了。

如下一个文本,只有两个单词“text”,“the”,设背景中词的分布为the占 0.9 的比例,text占 0.1 的比例,它们的似然值也如下图中所示:
《Text Mining and Analytics》学习笔记——第三周

现在只要求使得p(d|Λ)最大的参数就可以了,实际上就是式子取得最大值的时候.

想想数学老师也说过,两个实数和一定时(text的概率和the的概率之和为1),两个数相等时乘积最大。

所以这样就可以计算“the”在θd中占比为0.1,“text”在θd中占比为0.9。

特征

第一个特征

有上面的参数估计的例子中我们也不难看出,如果一个词在背景模型中的概率大,那么它在主题模型中的概率就小

这也是混合模型的第一个特征。

第二个特征

想想要是文档中还是只有the和text两种单词,但是the出现的次数增多,那么在θd中the的概率会怎么变化

像下图这种情况:

《Text Mining and Analytics》学习笔记——第三周

现在在主题的词分布中单词“the”的概率是大于0.1还是小于0.1呢?

答案是现在主题词分布θd的“the”的概率是大于0.1的,这也是混合模型的第二个特征:文档中出现次数高的单词会在主题词分布θd中有较高的概率

或许你会问:如果我还想要单词“the”不增加那么多,或者就算“the”出现很多次,我还想要“the”出现的概率和“text”的出现的概率差不多是1:9应该怎么办呢?

答案是增加θB的权重,直观的理解一下就是θB像是一个斥力,来控制像“the”这类的单词不要太跑偏。

混合模型小结

  • 一元混合模型就是有两个词分布组成的模型,一个背景,一个主题

  • 计算的方法就是用最大似然法使得参数最大,这里的文本数据比较简单,下一节将介绍使用最大期望方法求参数

  • 混合模型有两个特征

    • 1.背景中出现概率高的词在主题中出现的概率小
    • 2.如果一个词在文本中出现概率高,那么在主题中出现的概率也高。背景词分布相当于一个斥力,增加其权重相当于增加斥力,使得主题模型往其相反的分布靠近。

最大期望算法(EM)

由于我们在上面的混合模型中假设了文档中的数据特别简单,只有“the”和“text”,所以可以直观的看出混合模型的特征,真正的文档中数据比较复杂,所以我们需要一个方法来计算参数。EM算法就是常用的一个。

再想想我们这个问题,我们主要是想知道θd的分布,因为θB的分布已经人为规定了。

如果我们知道哪些单词属于θd中,那么它的概率不就很清楚了吗?

于是我们就成功将问题转化为了寻找哪些单词属于θd的问题。

具体一点就是说,如果我拿到一个单词“text”,我怎么知道它属于哪一个分布呢?是属于θd还是θB呢?

《Text Mining and Analytics》学习笔记——第三周

先随机给出初始化的主题模型词分布θd的所有参数

这里我们首先引入隐藏变量Z,在这个一元混合模型中也就是当Z=0时代表单词来自于θd,当Z=1时代表单词来自于θB

从上图左下角可以看出,单词“text”属于主题词分布的概率是 p(z=0|w="text")

EM算法的计算步骤

EM算法故名思议可以分为两步:E和M

《Text Mining and Analytics》学习笔记——第三周

在上面我们已经讲过EM算法需要初始化θd中词分布的概率,这样我们的两步具体就是:

E-step

  • 根据初始化θd中的词分布的概率,计算每个词属于θd的概率,即p(z=0|w)(注意此时这些概率只和可不是1,因为wp(θ|w)不为1)——也就是计算期望步骤

M-step

  • 一个确定分布总这些词的概率之和本应该是1(即wp(w|θ)为1),所以根据他们已得的概率p(z=0|w)分配在θd中的占比——也就是最大化过程

举个具体栗子:
《Text Mining and Analytics》学习笔记——第三周

上图展示了EM算法迭代三次的结果:
首先我们初始化θd中词分布是平均概率,为0.25,拿“text”词来看,出现4次,属于θd的概率是0.71(E-step),重新分配后占比为0.44(M-step),以此类推

似然值也是不断增加

《Text Mining and Analytics》学习笔记——第三周

类似于梯度下降算法,上图展示了似然值不断“爬山”的过程,当然也会可能陷入局部最大值,这取决于初始化的值。

EM算法总结

当一个文档中单词太多我们就无法直观的看出主题词分布了,此时EM算法是一个比较好的方法来不断使得似然值增大,当增加的不明显时,我们可认为已经达到了局部最大值

  • 分为两步:即E-step求期望,M-step来最大化
  • 这是一元(即一个主题)的情况,如果主题数量增加,可先对每个主题处理。对于单个主题EM算法依然有效

PLSA算法

PLSA即概率潜在语义分析

与上面的所讲的一元混合模型不同的是在PLSA中有很多主题,其实计算方法基本上是再加上不同主题的处理

k个主题下我们模型变为:

  • 输入:文本集合C,k个主题,单词的集合V
  • 输出:主题θ1,,θk,主题覆盖率πi1,,πik

PLSA认为上帝在写文章时先以一定概率选择了一个主题,然后在这主题下以一定概率选择了一个词,重复这个过程就完成了一篇文章

PLSA作为生成模型生成单词的概率如下:
《Text Mining and Analytics》学习笔记——第三周

正如上图所展示的,在k个主题情况下,我们生成单词w的概率是上图黄色标注出来的式子之和。请确保先理解这点,这是接下来顺利进行的关键

其中λB为背景比重,1λB为主题的比重
《Text Mining and Analytics》学习笔记——第三周
我们可以得到上面的计算公式

用EM算法求解PLSA中的参数

E-step

我们一共有K+1个隐藏变量
《Text Mining and Analytics》学习笔记——第三周

上图展示了单词属于主题j的概率和属于背景的概率

计算得满足两个条件:
1.一个文档中主题覆盖率之和为1
2.一个主题中所有单词的占比之和为1

M-step

《Text Mining and Analytics》学习笔记——第三周

PLSA算法总结

  • 相比于一元混合模型而言,我们将主题增加了k个,这就意味着我们得考虑主题覆盖率和不同主题的情况

  • 依然用EM算法来寻找最优解

LDA算法

潜在狄利克雷分配

实际上LDA算法是PLSA的一个扩展,PLSA的扩展分为两种:

1. 用户控制的PLSA

自定义一个分布,这个分布中包含用户偏爱的词,由此对单词进行一定筛选作用

《Text Mining and Analytics》学习笔记——第三周

正如上图所看到的一样,我们增加了一个分布,并偏爱“battery”和“life”两个单词,这个分布会在M-step更新概率的时候使用,并为“battery”和“life”两个单词增加概率使得其更为重要。

其中u为一个系数,当u为0时相当于没有偏爱,当u趋近于无穷大时,相当于只有“battery”和“life”的新增分布。

2 .LDA

LDA为文档覆盖率πdj和主题都设置了先验概率

《Text Mining and Analytics》学习笔记——第三周

LDA的计算过程答题与PLSA类似,但为文档覆盖率πdj和主题都设置了先验概率

《Text Mining and Analytics》学习笔记——第三周

概率主题模型总结

  • 一个模型中包含各种词的概率分布

  • 输入:文本集合C,k个主题,单词的集合V

  • 输出:主题θ1,,θk,主题覆盖率πi1,,πik

  • 用EM算法来求得是的似然值最大的参数

  • PLSA算法是一个基本的主题模型,可包含多个主题

  • LDA是PLSA的一个扩展,允许设置主题的先验概率和主题覆盖率的先验概率

相关文章: