spark机器学习:lda主题模型算法

代码空间 代码空间     2022-09-07     336

关键词:

1. LDA基础知识

LDA(Latent Dirichlet Allocation)是一种主题模型。LDA一个三层贝叶斯概率模型,包含词、主题和文档三层结构。

LDA是一个生成模型,可以用来生成一篇文档,生成时,首先根据一定的概率选择一个主题,然后在根据概率选择主题里面的一个单词,这样反复进行,就可以生成一篇文档;反过来,LDA又是一种非监督机器学习技术,可以识别出大规模文档集或语料库中的主题。

LDA原始论文给出了一个很简单的例子。Arts、Budgets、Children、Education是4个主题,下面是每一个主题包含的单词。

然后就可以随机选择主题,以及每个主题里面的单词,重复多次后就生成了一篇文档,其中不同的颜色表示单词来自不同的主题。

可见,文档和单词是可见的,而主题是隐藏的。

文档里某个单词出现的概率可以用公式表示:

其中d是文档,w是单词,z是主题,k是主题数量。可以想象成三个矩阵:

第一个矩阵表示每个文档里面每个单词出现的概率,第二个矩阵表示每个文档里面每个主题出现的概率,第三个矩阵表示每个主题里面每个词语出现的概率。在机器学习时,根据文档集,我们可以计算出第一个矩阵,要求的是第二个矩阵和第三个矩阵。

2. 极大似然估计

极大似然估计的基本思想是,从总体抽取n个样本之后,最合理的参数估计量应该是使得这批样本出现的概率最大的参数估计量。比如说你在一个小城市,很少看见美国人,偶然看见了几个美国人身材都很高,这时就可以估计美国人普遍身材很高,因为只有这样你看到几个美国人身材都很高这件事出现的概率才最大。

3. EM方法

EM即Exception Maximization,是机器学习的重要算法之一,在机器学习中有着重要的作用。简单的说,EM方法就是解决这样的问题:想估计两个参数A和B,这两个参数都是未知的,知道了参数A就能得到参数B,反过来知道了参数B就能得到参数A,这时我们就可以先给A一个初始值,然后计算出B,然后再根据计算出的B再计算A,这样反复迭代下去,一直到收敛为止。在数学上可以证明这种方法时有效的。

4. Beta分布和Dirichlet分布

Beta分布是二项分布的共轭先验分布:

 

比如抛硬币,3次出现正面,2次出现背面,a=3,b=2,就可以得到一个概率分布图,从概率分布图上可以看出,x=0.6时函数取得最大值,于是就可以认为x的值很可能接近于0.6,又扔了5次,2次正面,3次背面,a=5,b=5,又可以得到一个新的概率分布图,x=0.5时函数取得最大值,此时可以认为x的值很可能接近于0.5。

Dirichlet分布和Beta分布类似,是Beta分布在高维度的推广:

比如扔骰子,扔了60次,6个面,各出现10次,可以得到一个概率分布图,x=(1/6,1/6,1/6,1/6,1/6,1/6)时函数取得最大值,x的值很可能接近于(1/6,1/6,1/6,1/6,1/6,1/6)。

5. LDA的EM算法

具体到LDA,采用EM方法的步骤如下:

(1) 给矩阵wk和kj随机赋值,其中wk是每个主题中每个单词出现的次数,kj是每个文档中每个主题出现的次数,虽然这些次数还只是随机数,我们还是可以根据这些次数,利用Dirichlet分布计算出每个主题中每个单词最可能出现的概率,以及每个文档中每个主题最可能出现的概率,也就相当于给上面的第二个和第三个矩阵初始值;

(2) 对于文档中的一个单词,计算出是由哪个主题产生的,因为可能有多个主题都会产生这个单词,那么它到底是属于哪个主题呢?这时就要用到极大似然估计了。计算出每个主题产生这个单词的概率:

然后找出概率最大的那个主题,认为这个单词就是这个主题产生的,这在EM方法中属于E-STEP;

(3) 由于确定了这个单词是哪个主题产生的,相当于Dirichlet分布中a的值发生了改变,于是计算出新的概率矩阵(即上面的第二个和第三个矩阵),这在EM方法中属于M-STEP。

重复步骤(2)和(3),就可以得到最终的概率矩阵(即上面的第二个和第三个矩阵),机器学习结束。

6. MLlib中LDA的实现

MLlib使用GraphX实现LDA。有两类节点:词节点和文档节点。每个词节点上存储一个单词,以及这个单词属于每一个主题的概率;每个文档节点上存储一个文档,以及这个文档属于每个主题的概率。例如下图,存储了3个单词和两个文档,hockey和system在Article1中出现,launch和system在Article2中出现。

迭代过程中,文档节点通过收集邻居节点(即词节点)的数据来更新自己的主题概率,如下图所示。

 

spark2.0机器学习系列之8:聚类分析(k-means,bisectingk-means,lda,高斯混合模型)

...这篇文章之前,先说一些题外话。    许多机器学习算法(如后面将要提到的LDA)涉及的数学知识太多,前前后后一大堆,理解起来不是那么容易。    面对复杂的机器学习模型,尤其是涉及大量数学... 查看详情

机器学习入门-文本特征-使用lda主题模型构造标签1.latentdirichletallocation(lda用于构建主题模型)2.lda.components(输出各个词向量的权重值)(代码(代码

函数说明 1.LDA(n_topics,max_iters,random_state) 用于构建LDA主题模型,将文本分成不同的主题 参数说明:n_topics表示分为多少个主题,max_iters表示最大的迭代次数,random_state表示随机种子 2.LDA.components_打印输入特征的权重... 查看详情

lda笔记

...年提出的基于概率模型的主题模型算法,LDA是一中非监督机器学习技术, 查看详情

lda主题模型学习相关的书籍介绍

...LDA主题模型属于编码简单,但是数学功底要求较高的一个机器学习模型,在搜索引擎和广告领域有用到。按照《LDA数学八卦》作者靳志辉老师的说法,是一个比较简单的模型,前提是需要数学功底扎实。如果统计学基础扎实,理... 查看详情

文档主题生成模型(lda)

主题模型(topicmodeling)是一种常见的机器学习应用,主要用于对文本进行分类。传统的文本分类器,例如贝叶斯、KNN和SVM分类器,只能将测试对象分到某一个类别中,假设我给出三个分类:“算法”、“网络”和“编译”让其... 查看详情

lda主题建模

...法叫做主题建模(topicmodel)或主题抽取(topicextraction),在机器学习的分类中,它属于非监督学习(unsupervisedmachinelearning)。它是文本挖掘中常用的主题模型,用来从大量文档中提取出最能表达各个主题的一些关键词。主题模型定义(... 查看详情

文本主题模型之ldalda基础

...含狄利克雷分布(LatentDirichletAllocation,以下简称LDA)。注意机器学习还有一个LDA,即线性判别分析,主要是用于降维和分类的,如果大家需要了解这个LDA的信息,参看之前写的线性判别分析LDA原理总结。文本关注于隐含狄利克雷分... 查看详情

用scikit-learn学习lda主题模型

...模型的原理,这里我们就从应用的角度来使用scikit-learn来学习LDA主题模型。除了scikit-learn, 还有sparkMLlib和gensim库也有LDA主题模型的类库,使用的原理基本类似,本文关注于scikit-learn中LDA主题模型的使用。1. scikit-learnLDA主... 查看详情

简单易学的机器学习算法——latentdirichletallocation(理论篇)

...模型中使用到了贝叶斯思维的一些知识,这些知识是统计机器学习的基础。为了能够对LDA原理有清晰的认识,也为了能够对贝叶斯思维有全面的了解,在这里对基本知识以及LDA的相关知识进行阐述,本系列包括两个部分:LatentDir... 查看详情

文本主题模型之ldalda求解之变分推断em算法

       文本主题模型之LDA(一)LDA基础    文本主题模型之LDA(二)LDA求解之Gibbs采样算法    文本主题模型之LDA(三)LDA求解之变分推断EM算法    本文是LDA主题模型的第三篇,读这一篇之前建议... 查看详情

机器学习--lda初始和应用(代码片段)

一、前述LDA是一种非监督机器学习技术,可以用来识别大规模文档集(documentcollection)或语料库(corpus)中潜藏的主题信息。它采用了词袋(bagofwords)的方法,这种方法将每一篇文档视为一个词频向量,从而将文本信息转化为... 查看详情

主题模型topicmodel:隐含狄利克雷分布lda

...档的主题按照概率分布的形式给出。同时它是一种无监督学习算法,在训练时不需要手工标注的训练集,需要的仅仅是文档集以及指定主题的数量k即可。此外LDA的另一 查看详情

文本主题模型之ldalda求解之变分推断em算法

 本文是LDA主题模型的第三篇,读这一篇之前建议先读文本主题模型之LDA(一)LDA基础,同时由于使用了EM算法,如果你对EM算法不熟悉,建议先熟悉EM算法的主要思想。LDA的变分推断EM算法求解,应用于SparkMLlib和Scikit-learn的LDA算法... 查看详情

文本主题模型之ldalda求解之gibbs采样算法

 本文是LDA主题模型的第二篇,读这一篇之前建议先读文本主题模型之LDA(一)LDA基础,同时由于使用了基于MCMC的Gibbs采样算法,如果你对MCMC和Gibbs采样不熟悉,建议阅读之前写的MCMC系列MCMC(四)Gibbs采样。 1. Gibbs采样算法求... 查看详情

学习参考《深度实践spark机器学习》pdf+吴茂贵

...热点。近年来国内外开始关注在Spark平台上如何实现各种机器学习和数据挖掘并行化算法设计。Spark提供了大量的库,包括SQL、DataFrames、MLlib、GraphX、SparkStreaming。开发者可以在同一个应用程序中无缝组合使用这些库。《深度实践... 查看详情

掌握spark机器学习库-07-回归算法原理

  1)机器学习模型理解统计学习,神经网络2)预测结果的衡量代价函数(costfunction)、损失函数(loss function) 3)线性回归是监督学习  查看详情

lda

...在的主题信息,因此也称为LDA主题模型。它是一种无监督学习,可以应用于推荐系统之中,其优点在于无需手工标注训练集,仅仅需要的是文档集和指定主题的数量。其中,对于每个主题只需找出一些词语代替即可。LDA主题模型 查看详情

主题模型(topicmodels)总结

...cmodels)总结相关主题模型(CTM)是一种用于自然语言处理和机器学习的统计模型。相关主题模型(CTM)用于发现一组文档中显示的主题。CTM的关键是logistic正态分布。相关主题模型(CTM)依赖于LDA。表1.主题建模方法的特点方法名称 查看详情