当前位置:首页 » 操作系统 » lda算法主题模型

lda算法主题模型

发布时间: 2022-12-08 10:47:25

㈠ 什么是LDA主题模型

在机器学习领域,LDA是两个常用模型的简称:Linear Discriminant Analysis 和 Latent Dirichlet Allocation。本文的LDA仅指代Latent Dirichlet Allocation. LDA 在主题模型中占有非常重要的地位,常用来文本分类。
LDA由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出,用来推测文档的主题分布。它可以将文档集中每篇文档的主题以概率分布的形式给出,从而通过分析一些文档抽取出它们的主题分布后,便可以根据主题分布进行主题聚类或文本分类。
LDA 模型涉及很多数学知识,这也许是LDA晦涩难懂的主要原因。本小节主要介绍LDA中涉及的数学知识。数学功底比较好的同学可以直接跳过本小节。
LDA涉及到的先验知识有:二项分布、Gamma函数、Beta分布、多项分布、Dirichlet分布、马尔科夫链、MCMC、Gibs Sampling、EM算法等。限于篇幅,本文仅会有的放矢的介绍部分概念,不会每个概念都仔细介绍,亦不会涉及到每个概念的数学公式推导。如果每个概念都详细介绍,估计都可以写一本百页的书了。如果你对LDA的理解能达到如数家珍、信手拈来的程度,那么恭喜你已经掌握了从事机器学习方面的扎实数学基础。想进一步了解底层的数学公式推导过程,可以参考《数学全书》等资料。

㈡ NLP系列(三)LDA主题模型

LDA模型是NLP中很基础也是大家广为熟知的模型,在面试过程也经常遇到。本文简单讲述下其大致流程。

首先,我们来感受下LDA是什么,

看来,不同人在不同场景下对LDA的认识,那我们看下网络的解释:

看到这里我们只需要先记住: LDA的目的就是要识别主题,即把文档—词汇矩阵变成文档—主题矩阵(分布)和主题—词汇矩阵(分布)

对于语料库中的每篇文档,LDA定义了如下生成过程(generativeprocess):
1.对每一篇文档,从主题分布中抽取一个主题;
2.从上述被抽到的主题所对应的单词分布中抽取一个单词;
3.重复上述过程直至遍历文档中的每一个单词。

语料库中的每一篇文档与T(通过反复试验等方法事先给定)个主题的一个多项分布 (multinomialdistribution)相对应,将该多项分布记为θ。每个主题又与词汇表(vocabulary)中的V个单词的一个多项分布相对应,将这个多项分布记为φ。

LDA的核心公式如下:
p(w|d)=p(w|t)*p(t|d)
直观的看这个公式,就是以Topic作为中间层,可以通过当前的θd和φt给出了文档d中出现单词w的概率。其中p(t|d)利用θd计算得到,p(w|t)利用φt计算得到。
实际上,利用当前的θd和φt,我们可以为一个文档中的一个单词计算它对应任意一个Topic时的p(w|d),然后根据这些结果来更新这个词应该对应的topic。然后,如果这个更新改变了这个单词所对应的Topic,就会反过来影响θd和φt。

LDA算法开始时,先随机地给θd和φt赋值(对所有的d和t)。然后上述过程不断重复,最终收敛到的结果就是LDA的输出。再详细说一下这个迭代的学习过程:
1.针对一个特定的文档ds中的第i单词wi,如果令该单词对应的topic为tj,可以把上述公式改写为:
pj(wi|ds)=p(wi|tj)*p(tj|ds)
2.现在我们可以枚举T中的topic,得到所有的pj(wi|ds),其中j取值1~k。然后可以根据这些概率值结果为ds中的第i个单词wi选择一个topic。最简单的想法是取令pj(wi|ds)最大的tj(注意,这个式子里只有j是变量),即argmax[j]pj(wi|ds)
3.然后,如果ds中的第i个单词wi在这里选择了一个与原先不同的topic,就会对θd和φt有影响了(根据前面提到过的这两个向量的计算公式可以很容易知道)。它们的影响又会反过来影响对上面提到的p(w|d)的计算。对D中所有的d中的所有w进行一次p(w|d)的计算并重新选择topic看作一次迭代。这样进行n次循环迭代之后,就会收敛到LDA所需要的结果了。

N个文档组成的语料库(𝐷 1,𝐷 2,"……" ,𝐷 𝑛),由V个词组成的词汇表。矩阵中的值表示了词𝑊𝑗 〖在文档𝐷〗 𝑖 中出现的频率,主题用Z表示,下面对语料库中的每一个word随机指派一个主题编号𝑍 𝑖,统计每个𝑍_𝑖下出现的word次数,可得一个主题—词汇矩阵。

统计每个词代表的主题在每一个文档中出现的次数,可得出以下矩阵文档—主题矩阵

以上讲了大致LDA的感性认识,如果进行严格的数学推导请看这篇文章( https://www.jianshu.com/p/74ec7d5f6821 ),本人认为是看到的不错的文章。

LDA对自己一直是一个谜,看了网上的很多资料,然后整理了几篇不错的,我在这里贴出来。本篇文章主要大致了解了下LDA的大致流程,如果真正搞懂其背后数学原理,还得反复看一下下面的文章:

LDA(LDA文档主题生成模型)_网络

㈢ 无监督第五节:LDA (Latent Dirichlet Allocation算法细节)(主题模型)

LDA是生成式概率模型。基本的观点是一个文档由多个隐主题生成,每个主题是由单词的分布式表达。

LDA假设在语料库D中每个文档的生成过程如下:

1.主题数量k已知

2.单词的概率由参数 控制


参数 是一个k 维的向量,并且每个元素大于0, 服从Gamma 分布

已知参数 , 联合分布主题混合的参数 , 表示主题的参数 z,表示文档的参数w:

对 积分,并对z求和得到关于文档的边缘分布:

所有文档的边缘分布相乘,得到整个语料库的概率:

参数 和参数 是语料库级别的参数,在生成语料库的过程中使用。

变量 是文档级别的参数,每个文档采样一次。

变量 和 是单词级别的参数,每个文档中每个单词都采样一次.

一组随机变量如果联合分布和变量的排列顺序无关,则称这组变量是可交换的。

在LDA中,我们假设单词是由主题生成的,并且这些主题在文档中是无限可交换的,

其中 是关于主题多项式分布的随机变量。

通过对隐主题变量z积分。可以得到单词分布:

这是一个随机量,因为他依赖于

我们定义接下来的生成过程, 对于一个文档 w

1.选择θ∼Dir(α)

2.对于每个N的单词 :

(a)从 中选择一个单词

这个过程定义一篇文档的边缘分布看成一个连续的混合分布

inference的关心的问题使用LDA来计算隐变量z的后验分布:

这个分布通常很难计算。通过normaliza 分布,并且计算边缘分布。

这个后验分布很难计算,但是通过一些变分推断的方法还是可以得到。

基本的观点是使用jensen's 不等式来获得一个调整的下界,变分参数通过优化过程来试图找到最接近的可能的下界。

一个简单的方式是通过鲜花原始的计算图,将一些边和节点移去。在LDA中,原始的图是左图,通过把 移去,生成右边含有自由变分参数的图。
新的计算图使用如下变分分布:

是狄利克雷参数,多项式参数(φ1 , . . . , φ N ) 是自由变量参数。

得到简化的概率分布后,下一步是开始的优化问题是决定变分参数 的值。

优化这个变分参数是通过最小化KL散度来实现,并且吧他们设为0,得到以下的更新参数。

在文本的语言中,优化参数 是文档制定的。特别的,我们认为狄利克雷参数 是一个文档的主题表达。

经验贝叶斯方法来估计LDA中的参数。给定一个语料D,我们希望找到参数 来最大化边缘似然概率:

计算 比较困难,可以通过变分EM算法来估计。

1.E step,对于每个文档,找到最优的变分参数 。

2.M step, 最大化结果的下界。

重复上述几步直到下界收敛。

㈣ 对比传统K-Means等聚类算法,LDA主题模型在文本聚类上有何优缺点

K-means 算法属于聚类分析方法中一种基本的且应用最广泛的划分算法,它是一种已知聚类类别数的聚类算法。指定类别数为K,对样本集合进行聚类,聚类的结果由K 个聚类中心来表达,基于给定的聚类目标函数(或者说是聚类效果判别准则),算法采用迭代更新的方法,每一次迭代过程都是向目标函数值减小的方向进行,最终的聚类结果使目标函数值取得极小值,达到较优的聚类效果。使用平均误差准则函数E作为聚类结果好坏的衡量标准之一,保证了算法运行结果的可靠性和有效性。
-

热点内容
php取数组第一个 发布:2025-05-16 11:30:58 浏览:423
解调算法 发布:2025-05-16 11:21:09 浏览:136
python密码暴力破解 发布:2025-05-16 11:13:28 浏览:592
倒角刀编程 发布:2025-05-16 11:12:55 浏览:350
数据库的酸性 发布:2025-05-16 11:03:17 浏览:124
phpmysql长连接 发布:2025-05-16 10:51:50 浏览:734
android横屏全屏 发布:2025-05-16 10:47:43 浏览:475
服务器直链下载搭建 发布:2025-05-16 10:47:38 浏览:176
编译不成功怎么办 发布:2025-05-16 10:35:54 浏览:613
如何修改密码找回 发布:2025-05-16 10:35:53 浏览:571