ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

潜在狄利克雷分配(Latent Dirichlet Allocation,LDA)

2020-05-07 23:02:08  阅读:699  来源: 互联网

标签:LDA Dirichlet Latent 狄利克 话题 分布 theta 文本


文章目录


潜在狄利克雷分配(latent Dirichlet allocation,LDA),作为基于贝叶斯学习的话题模型,是潜在语义分析、概率潜在语义分析的扩展,于2002年由Blei等提出。LDA在文本数据挖掘、图像处理、生物信息处理等领域被广泛使用。

LDA模型是文本集合的生成概率模型

  • 假设每个文本话题的一个多项分布表示

  • 每个话题单词的一个多项分布表示

  • 特别假设文本的话题分布的先验分布是狄利克雷分布

  • 话题的单词分布的先验分布也是狄利克雷分布

  • 先验分布的导入使LDA能够更好地应对话题模型学习中的过拟合现象

LDA的文本集合的生成过程如下:

  • 首先随机生成一个文本的话题分布
  • 之后在该文本的每个位置,依据该文本的话题分布随机生成一个话题
  • 然后在该位置依据该话题的单词分布随机生成一个单词
  • 直至文本的最后一个位置,生成整个文本。重复以上过程生成所有文本

LDA模型是含有隐变量的概率图模型

  • 模型中,每个话题的单词分布,每个文本的话题分布,文本的每个位置的话题是隐变量
  • 文本的每个位置的单词是观测变量
  • LDA模型的学习与推理无法直接求解,通常使用吉布斯抽样(Gibbs sampling)和变分EM算法(variational EM algorithm),前者是蒙特卡罗法,而后者是近似算法

1. 狄利克雷分布

狄利克雷分布(Dirichlet distribution)是一种多元连续随机变量的概率分布,是贝塔分布(beta distribution)的扩展。在贝叶斯学习中,狄利克雷分布常作为多项分布的先验分布使用。

定义:

多元连续随机变量 θ=(θ1,θ2,...,θk)\theta = (\theta_1,\theta_2,...,\theta_k)θ=(θ1​,θ2​,...,θk​) 的概率密度函数为:
p(θα)=Γ(i=1kαi)i=1kΓ(αi)i=1kθiαi1i=1kθi=1,θi0,αi>0,θDir(α)p(\theta|\alpha) = \frac{\Gamma \bigg(\sum\limits_{i=1}^k \alpha_i\bigg)}{\prod\limits_{i=1}^k \Gamma(\alpha_i)} \prod\limits_{i=1}^k \theta_i^{\alpha_i-1}\quad \sum\limits_{i=1}^k \theta_i = 1, \theta_i\ge 0,\alpha_i >0,记作\theta \sim Dir(\alpha)p(θ∣α)=i=1∏k​Γ(αi​)Γ(i=1∑k​αi​)​i=1∏k​θiαi​−1​i=1∑k​θi​=1,θi​≥0,αi​>0,记作θ∼Dir(α)
Γ(s)=0xs1exdx,s>0伽马函数,\Gamma(s) = \int_0^{\infty} x^{s-1}e^{-x}dx, \quad s>0伽马函数,Γ(s)=∫0∞​xs−1e−xdx,s>0
伽马函数性质:
Γ(s+1)=sΓ(s)\Gamma(s+1) = s\Gamma(s)Γ(s+1)=sΓ(s)
sss 是自然数时,有 Γ(s+1)=s!\Gamma(s+1) = s!Γ(s+1)=s!

2. 潜在狄利克雷分配模型

在这里插入图片描述
LDA模型是概率图模型:

  • 特点:以狄利克雷分布为多项分布的先验分布
  • 学习:就是给定文本集合,通过后验概率分布的估计,推断模型的所有参数

利用LDA进行话题分析,就是对给定文本集合,学习到每个文本的话题分布,以及每个话题的单词分布

  • 可以认为LDA是PLSA(概率潜在语义分析)的扩展
  • 相同点:两者都假设话题是单词的多项分布,文本是话题的多项分布
  • 不同点:LDA使用狄利克雷分布作为先验分布,而PLSA不使用先验分布(或者说假设先验分布是均匀分布),两者对文本生成过程有不同假设
  • 学习过程:LDA基于贝叶斯学习,而PLSA基于极大似然估计
  • LDA的优点是:使用先验概率分布,可以防止学习过程中产生的过拟合(over-fitting)

3. 学习推理

LDA模型的学习与推理不能直接求解。

  • 通常采用的方法是吉布斯抽样算法变分EM算法
  • 前者是蒙特卡罗法,而后者是近似算法

4. sklearn.decomposition.LatentDirichletAllocation

sklearn.decomposition.LatentDirichletAllocation官网介绍

class sklearn.decomposition.LatentDirichletAllocation(n_components=10, 
doc_topic_prior=None, topic_word_prior=None, learning_method='batch',
learning_decay=0.7, learning_offset=10.0, max_iter=10, batch_size=128, 
evaluate_every=-1, total_samples=1000000.0, perp_tol=0.1, 
mean_change_tol=0.001, max_doc_update_iter=100, n_jobs=None, verbose=0, 
random_state=None)

n_components, optional (default=10),话题数量

实践参考:https://www.cnblogs.com/pinard/p/6908150.html

标签:LDA,Dirichlet,Latent,狄利克,话题,分布,theta,文本
来源: https://blog.csdn.net/qq_21201267/article/details/105884879

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有