专栏首页魏晓蕾的专栏解决文本中词语和主题分布的主题模型LSA和LDA详述

解决文本中词语和主题分布的主题模型LSA和LDA详述

1、LSA

潜在语义分析(Latent Semantic Analysis, LSA),也叫做Latent Semantic Indexing(LSI),是一种常用的简单的主题模型。LSA是基于奇异值分解(SVD)的方法得到文本主题的一种方式。

我们输入的有m个文本,每个文本有n个词。而AijA_{ij}Aij​则对应第i个文本的第j个词的特征值。k是我们假设的主题数,一般要比文本数少。SVD分解后,UilU_{il}Uil​对应第i个文本和第l个主题的相关度。VjmV_{jm}Vjm​对应第j个词和第m个词义的相关度。ΣlmΣ_{lm}Σlm​对应第l个主题和第m个词义的相关度。 通过SVD矩阵分解我们可以得到文本、词与主题、语义之间的相关性,但是这个时候计算出来的内容存在负数,我们比较难解释,所以我们可以对LSI得到文本主题矩阵使用余弦相似度计算文本的相似度的计算。这个时候直接在文本主题矩阵的基础上直接应用聚类算法即可。

LSA主题模型总结

除非数据规模比较小,而且希望快速的粗粒度的找出一些主题分布关系,否则我们一般不会使用LSA主题模型。

  • 优点:
  • 原理简单,一次SVD分解即可得到主题模型,可以同时解决词义的问题
  • 缺点:
  • SVD分解的计算非常耗时,对于高维度矩阵做SVD分解非常困难
  • 主题模型数量的选取对于结果的影响非常大,很难选择合适的k值
  • LSA模型不是概率模型,缺乏统计基础,结果难以直观的解释

2、NMF

非负矩阵分解(Non-negative Matrix Factorization, NMF)是一种常用的矩阵分解方式,常用于矩阵分解、降维、主题模型等应用场景。 NMF虽然和SVD一样都是矩阵分解,但是NMF不同的是:它的目标是希望将矩阵分解成为两个子矩阵。

在NMF中求解出来的W和H,分别体现的是文本和主题的概率相关度,以及词和主题的概率相关度。NMF的期望是找到两个W、H矩阵,使得WH的矩阵乘积结果和对应的原矩阵V对应位置的值相比误差尽可能的小。

NMF的目标函数中总共包含了

个参数,可以直接使用梯度下降法或者拟牛顿法来进行求解。

为了防止过拟合,也可以在NMF的目标函数的基础上添加一个正则化项:

但是当加入L1正则项后,由于没法求解出正常的导函数出来(导函数不是连续的),也就没法使用梯度下降法和拟牛顿法求解参数,此时一般采用坐标轴下降法来进行参数的求解。

3、坐标轴下降法

坐标轴下降法(Coordinate Descent,CD)是一种迭代法,通过启发式的方法一步步的迭代求解函数的最小值,和梯度下降法(GD)不同的时候,坐标轴下降法是沿着坐标轴的方向去下降,而不是采用梯度的负方向下降。

坐标轴下降法利用EM算法的思想,在参数更新过程中,每次均先固定m-1个参数值,求解剩下的一个参数的局部最优解;然后进行迭代式的更新操作。 坐标轴下降法的核心思想是多变量函数F(X)可以通过每次沿着一个方向优化来获取最小值。其数学依据是:对于一个可微凸函数

,其中θθθ为n∗1n*1n∗1的向量,如果对于一个解

,使得

在某个坐标轴

上都能达到最小值,则θ=(θ1,θ2,…,θn)

就是

的全局的最小值点。 在坐标轴下降法中,优化方向从算法的一开始就固定了,即沿着坐标的方向进行变化。在算法中,循环最小化各个坐标方向的目标函数。即:如果xkx_kxk​给定,那么xk+1x_{k+1}xk+1​的第i维度为:

因此,从一个初始的x0x_0x0​求得函数F(x)的局部最优解,可以迭代获取x0、x1、x2...x_0、x_1、x_2...x0​、x1​、x2​...的序列,从而可以得到:

坐标轴下降法算法过程:
  • 给θθθ向量随机选取一个初值,记做θ0θ_0θ0​
  • 对于第k轮的迭代,从

开始计算,

到为止,计算公式如下:

  • 检查

向量在各个维度上的变化情况,如果所有维度的变化情况都比较小的话,那么认为结束迭代,否则继续k+1轮的迭代

  • 在求解每个参数局部最优解的时候可以求导的方式来求解

4、概率分布

(1)二项分布 二项分布是从伯努利分布推进的。伯努利分布,又称两点分布或0-1分布,是一个离散型的随机分布,其中的随机变量只有两类取值,非正即负{+,-}。而二项分布即重复n次的伯努利试验,记为

。简言之,只做一次实验,是伯努利分布,重复做了n次,是二项分布。二项分布的概率密度函数为:

(2)Beta分布 Beta分布是二项分布的共轭分布,条件概率公式如下:

(3)多项分布 多项分布是二项分布扩展到多维的情况。多项分布是指单次试验中的随机变量的取值不再是0-1的,而是有多种离散值可能(1,2,3…,k)。比如投掷6个面的骰子实验,N次实验结果服从K=6的多项分布。其中,

多项分布的概率密度函数为:

(4)Dirichlet分布 Dirichlet分布是Beta分布扩展到多维的情况。

5、LDA

隐含狄利克雷分布(Latent Dirichlet Allocation,LDA)是一种基于贝叶斯算法模型,利用先验分布对数据进行似然估计并最终得到后验分布的一种方式。LDA是一种比较常用的主题模型。 LDA假设文档主题是多项分布,多项分布的参数(先验分布)服从Dirichlet分布,其实LDA是一种三层的贝叶斯模型。

LDA详细解释
  • 共有M篇文档,每个文档有

个单词,一共涉及到K个主题

  • 每篇文档都有各自的主题,主题分布是多项式分布,该多项式分布的参数服从Dirichlet分布,该Dirichlet分布的参数为α
  • 每个主题都有各自的词分布,词分布为为多项式分布,该多项式分布的参数服从Dirichlet分布,该Dirichlet分布的参数为η
  • 对于某篇文档d中的第n个词,首先从该文档的主题分布中采用一个主题,然后再这个主题对应的词分布中采用一个词,不断重复该操作,直到m篇文档全部完成上述过程
  • 词汇表中共有V个term(不可重复)
  • 语料库中共有m篇文档

​,对于文档

,是由NiN_iNi​个word组成的(word可重复)。语料库共有K个主题

  • α和η是先验分布(Dirichlet分布)的参数
  • θ是每篇文档的主题分布,是一个K维的向量
  • 对于第i篇文档

,在主题分布

下,可以确定一个具体的主题

  • β是每个主题的词分布,是一个V维的向量
LDA参数学习-Gibbs采样

对于一个n维的概率分布

,可以通过在n个坐标上轮换采样,来得到新的样本,对于轮换到任意一个坐标xix_ixi​上的转移,马尔可夫链的状态转移概率为

,即固定n-1个坐标轴,在某一个坐标上移动。 Gibbs采样算法在高维空间采样的时候具有比较高的优势,GIbbs采样的过程比较类似这个坐标轴下降法。

Gibbs采样算法流程
  • 输入稳定的分布

或者对应特征的条件概率分布,设定状态转移次数阈值n1n_1n1​,需要的样本数n2n_2n2​

  • 随机初始化状态值
  • 进行迭代数据采样

,从条件概率分布中采样得到对应的样本:

  • 最终得到的样本集为:
Gibbs采样

给定一个文档集合,w是可以观察到的值,α和η是根据经验给定的先验参数,其它的各个z,θ、β都是未知的隐含变量,都是需要根据观测到的数据进行学习的。 具体来讲,所有文档联合起来形成的词向量w是已知数据,但是不知道语料库的主题z的分布。假设可以先求解出w、z的联合分布p(w,z),进而就可以求出某个词wiw_iwi​对应主题特征ziz_izi​的条件概率分布p(zi=k∣w,z−i)p(z_i =k|w,z_{-i})p(zi​=k∣w,z−i​),其中z−iz_{-i}z−i​表示去掉下标i后的主题分布,有了条件概率,那么就可以使用Gibbs采样,最终可以得到第i个词的主题。 如果通过采样得到所有词的主题,那么可以通过统计所有词的主题数,从而得到各个主题的词分布。接着统计各个文档对应词的主题数,从而可以得到各个文档的主题分布。 简化Dirichlet分布表达式:

计算文档的主题条件分布:

在第d个文档中,第k个主题的词的个数表示为:nd(k)n_d^{(k)}nd(k)​,对应的多项分布的计数可以表示为:

有了一个文档的主题条件分布,则可以得到所有文档的主题条件分布为:

使用同样的方式,可以得到第k个主题对应的词的条件分布p(w∣z,η)p(w|z,η)p(w∣z,η)为:

其中第k个主题中,第v个词的个数表示为nkvn_k^vnkv​,对应的多项式分布计数表示为:

最终得到主题和词向量的联合分布为:

基于联合分布,就可以使用求解Gibbs采样所需要的条件分布

,对于下标i,由于它对应的词wiw_iwi​是可以观察到的,因此有公式如下:

对于

,只涉及到第d篇文档和第k个主题两个Dirichlet共轭,即:

至于其他的Dirichlet共轭和这两个是互相独立的,也就是说从语料库中去掉ziz_izi​和wiw_iwi​后,并不会改变共轭结构。所以对应的后验分布为:

开始计算Gibbs采样的条件概率:

Dirichlet分布的期望公式如下,带入条件概率中,可以得到最终的条件概率公式:

Gibbs采样训练流程
  • 选择合适的主题数K,选择合适的超参数α、η
  • 对于语料库中每一篇文档的每一个词,随机的赋予一个主题编号z
  • 重新扫描语料库,对于每一个词,利用Gibbs采样公式更新它的topic的编号,并更新语料库中该词的编号
  • 重复第三步中基于坐标轴轮询的Gibbs采样,直到Gibbs采样收敛
  • 统计语料库中各个文档各个词的主题,得到文档主题分布;然后统计语料库中各个主题词的分布,得到主题与词的分布
Gibbs采样预测流程
  • 对应当前文档的每一个词,随机的赋予一个主题编号z
  • 重新扫描当前文档,对于每一个词,利用Gibbs采样算法更新它的topic编号
  • 重复第二步的基于坐标轴轮换的Gibbs采样,直到Gibbs采样收敛
  • 统计文档中各个词的主题,得到该文档主题分布
安装LDA
pip install lda

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • EM算法及高斯混合模型GMM详述

    最大似然估计(Maximum Likelihood Estimation,MLE)就是利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值的计算过程...

    魏晓蕾
  • 【NDN实验】Consumer-Producer API for Named Data Networking 学习笔记

    版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/gongxifacai_believe/artic...

    魏晓蕾
  • 隐马尔可夫模型及其相关算法详述

    −1​无关,即条件分布函数满足下列等式,此性质称为马尔可夫性质。如果随机过程满足马尔可夫性,则该过程称为马尔可夫过程。

    魏晓蕾
  • 云开发校园技术布道师----云常工:基于云数据库的高校信息发布网

    想要在一个小程序里就能看到学校校内举办的所有活动;最好是能官网的和社团的都能看到,以及一些周边发起的好玩活动

    用户6935401
  • bootstrap3 js

    用户5760343
  • CKafka系列学习文章 - CKafka界面管理(四)

    导语:在使用的过程中,我们总是需要根据自己公司的业务场景去调整服务端的参数配置和监控参数,接下来我们一起来看看如何配置。

    发哥说消息队列
  • 整理了一些DataGrid ColumnStyle

    http://files.cnblogs.com/neozhu/ColumnsSytle.rar 共享给大家 image.png image.png im...

    阿新
  • 长文:读《经济学32定律》

    近期看的一本经济学原理的书,算是给我这个经济学小白入入门。书中谈到的32个经济学原理,很有收获,特分享出来。

    用户5548425
  • 腾讯云服务器关闭防火墙

    本文章提供windows2008,windows2012以及windows2016操作系统如何关闭防火墙的截图步骤;

    用户4049265
  • spring cloud gateway 聚合swagger文档

    spring cloud gateway是基于webflux的,升级swagger版本到2.9.2

    24-丰总

扫码关注云+社区

领取腾讯云代金券