我是这样一步步理解--主题模型(Topic Model)、LDA(案例代码)

本文深入解析LDA(Latent Dirichlet Allocation)主题模型,包括5个分布、3个基础模型的理解,以及如何确定LDA的topic个数。探讨LDA在推荐系统中解决冷启动问题的应用,并提供了代码实现示例。
摘要由CSDN通过智能技术生成

1. LDA模型是什么

LDA可以分为以下5个步骤:

  • 一个函数:gamma函数。
  • 四个分布:二项分布、多项分布、beta分布、Dirichlet分布。
  • 一个概念和一个理念:共轭先验和贝叶斯框架。
  • 两个模型:pLSA、LDA。
  • 一个采样:Gibbs采样

关于LDA有两种含义,一种是线性判别分析(Linear Discriminant Analysis),一种是概率主题模型:隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA),本文讲后者。

按照wiki上的介绍,LDA由Blei, David M.、Ng, Andrew Y.、Jordan于2003年提出,是一种主题模型,它可以将文档集 中每篇文档的主题以概率分布的形式给出,从而通过分析一些文档抽取出它们的主题(分布)出来后,便可以根据主题(分布)进行主题聚类或文本分类。同时,它是一种典型的词袋模型,即一篇文档是由一组词构成,词与词之间没有先后顺序的关系。此外,一篇文档可以包含多个主题,文档中每一个词都由其中的一个主题生成。

人类是怎么生成文档的呢?首先先列出几个主题,然后以一定的概率选择主题,以一定的概率选择这个主题包含的词汇,最终组合成一篇文章。如下图所示(其中不同颜色的词语分别对应上图中不同主题下的词)。

那么LDA就是跟这个反过来:根据给定的一篇文档,反推其主题分布。

在LDA模型中,一篇文档生成的方式如下:

  • 从狄利克雷分布 α \alpha α 中取样生成文档 i 的主题分布 θ i \theta_i θi
  • 从主题的多项式分布 θ i \theta_i θi 中取样生成文档i第 j 个词的主题 z i , j z_{i,j} zi,j
  • 从狄利克雷分布 β \beta β 中取样生成主题 z i , j z_{i,j} zi,j 对应的词语分布 ϕ z i , j \phi_{z_{i,j}} ϕzi,j
  • 从词语的多项式分布 ϕ z i , j \phi_{z_{i,j}} ϕzi,j 中采样最终生成词语 w i , j w_{i,j} wi,j

其中,类似Beta分布是二项式分布的共轭先验概率分布,而狄利克雷分布(Dirichlet分布)是多项式分布的共轭先验概率分布。此外,LDA的图模型结构如下图所示(类似贝叶斯网络结构):

1.1 5个分布的理解

先解释一下以上出现的概念。

  1. 二项分布(Binomial distribution)

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

  2. 多项分布

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

    ∑ i = 1 k p i = 1 , p i > 0 \sum_{i=1}^{k}p_i=1,p_i>0 i=1kpi=1,pi>0

  3. 共轭先验分布

    贝叶斯统计中,如果后验分布先验分布属于同类,则先验分布与后验分布被称为共轭分布,而先验分布被称为似然函数的共轭先验

  4. Beta分布

    二项分布的共轭先验分布。给定参数 α > 0 \alpha>0 α>0 β > 0 \beta>0 β>0,取值范围为[0,1]的随机变量 x 的概率密度函数:

    f ( x ; α , β ) = 1 B ( α , β ) x α − 1 ( 1 − x ) β − 1 f(x;\alpha,\beta)=\frac{1}{B(\alpha,\beta)}x^{\alpha-1}(1-x)^{\beta-1} f(x;α,β)=B(α,β)1xα1(1x)β1

    其中:

    1 B ( α , β ) = Γ ( α + β ) Γ ( α ) Γ ( β ) \frac{1}{B(\alpha,\beta)}=\frac{\Gamma(\alpha+\beta)}{\Gamma(\alpha)\Gamma(\beta)} B(α,β)1=Γ(α)Γ(β)Γ(α+β)

    Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t \Gamma(z)=\int_{0}^{\infty}t^{z-1}e^{-t}dt Γ(z)=0tz1etdt

    注:这便是所谓的gamma函数,下文会具体阐述。

  5. 狄利克雷分布

    是beta分布在高维度上的推广。Dirichlet分布的的密度函数形式跟beta分布的密度函数如出一辙:

    f ( x 1 , x 2 , . . . , x k ; α 1 , α 2 , . . . , α k ) = 1 B ( α ) ∏ i = 1 k

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值