Spark MLlib — EMLDA

本文详细介绍了LDA(潜在狄利克雷分配)主题模型的理论基础,包括Dirichlet先验分布、EM算法和Gibbs Sampling。通过Spark MLlib中的GraphX实现LDA,讨论了图的构造、分布式存储和聚合操作,为读者提供了深入理解LDA及其在Spark中应用的视角。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  LDA(Latent Dirichlet allocation)是一种主题模型,它可以将文档集中每篇文档的主题按照概率分布的形式给出,也即根据给定的一篇文档,推测其主题分布。同时它是一种无监督学习算法,在训练时不需要手工标注的训练集,需要的仅仅是文档集以及指定主题的数量k即可。此外LDA的另一个优点则是,对于每一个主题均可找出一些词语来描述它。本文主要介绍LDA涉及的数学知识以及Spark MLlib中基于Graphx的实现方式。

1.理论基础

  这部分内容主要参考《LDA数学八卦》《通俗理解LDA主题模型》,涉及到数学内容真是挺多的,网上大多数博文的阐述过程大多一上来就摆出一大堆理论基础,自己学习的过程中也会觉得一开始就很吃力,而且不能把众多理论和最终的模型联系起来,所以一直想找到一种易于理解的方式来阐述该模型。

1.1 LDA引入— Dirichlet先验分布

  在NLP领域,文本的表现形式通常是有序的词序列,即 d=(ω1,ω2,...,ωn) 。文本建模的实质就是为文本对应的词序列建模。《LDA数学八卦》中以上帝掷骰子的游戏形象的阐述了各种模型生成文本的过程,这里简单概括下各种模型的本质,并假设m篇文本的总词数为N,词典中单词总数为V:

1.1.1 主题无关模型
  • Unigram Model:投掷一个V面的骰子,重复N次生成词序列,则这N个随机变量(即生成的N个单词)是独立同分布的,该分布的概率函数即为骰子每一面出现的概率为 p⃗ ={ p1,p2,...pV} 。则词典中每个单词出现次数(记为 n⃗ =n1,n2,...,nV )的联合分布满足Multinomial分布(多项分布),其概率密度函数为:
    p(n⃗ )=Mult(n⃗ |p⃗ ,N)=(Nn⃗ )k=1Vpnkk=N!n1!n2!...nV!pn11pn22...pnVV(1.1)
  • 贝叶斯Unigram Model:在Unigram Model的基础上为 p⃗  加入了先验分布,即需要先以一定的概率选出骰子。这里的先验分布选择了Multinomial式分布的共轭先验分布Dirichlet分布,Dirichlet分布的一般表现形式如下:
    Dir(p⃗ |α⃗ )=Γ(Kk=1αk)Kk=1Γ(αk)k=1Kpnkk(1.2)

    其中 Γ(x)=0tx1etdt=(n1)! 为gamma函数。
    共轭先验分布的本质为:Dirichlet先验+Multinomial分布—>后验分布也为Dirichlet分布 即:
    Dir(p⃗ |α⃗ )+Mult(m⃗ )=Dir(p⃗ |α⃗ +m⃗ )(1.3)

    关于gamma函数的更多性质以及Dirichlet先验和Multinomial分布的共轭关系的证明待有空专门整理。
1.1.2 主题相关模型

  文本的生成过程过程依然是生成单词序列的过程,只不过引入主题后,需要先确定主题,再根据主题生成单词的过程,这也更符合人类平常的语言习惯。

  • PLSA模型:先投掷一个K面的doc-topic骰子,确定主题编号z,再从K个V面的topic-word骰子中选择编号为z的骰子投掷,得到一个单词,重复该过程生成文档。假设文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值