一、简介

    LDA(隐狄利克雷分布)是一种无监督学习的主题概率生成模型,输入是文档集合和主题个数,输出是以概率分布的形式呈现的主题,常用于主题建模、文本分类、观点挖掘等多个领域。
    它假定了一个前提:文档相当于一个词袋(bag-of-words),袋子中的词是独立可交换的,没有语法结构和顺序。
    其基本思想是:每个文档(Document)由多个主题(Topic)构成,每个主题都有对应的多个词(Word)来描述。

二、LDA模型介绍

1. 模型描述

    LDA的核心是贝叶斯网络(左图是贝叶斯网络,右边是参数说明):
                     
                   图一   LDA的贝叶斯网络                                 图二  参数说明
    
    在贝叶斯网络中,左边的矩形表示每个主题对应的单词概率分布;右边的外矩形表示有M个文档,内矩形表示每个文档中的所有单词。
    贝叶斯网络模拟文档的生成过程,为了方便理解,结合伪代码来解释生成过程(先看伪代码的注释;其中各种概率分布先忽略,后面再解释):

2. 概率分布介绍

2.1 主题分布

    贝叶斯网络的两个结点之间的箭头表示概率分布。在图一中,因为每一个主题出现的概率是独立同分布的,所以假定未知参数符合多项分布。这个假定的分布在贝叶斯公式中叫做似然函数。贝叶斯规则还提出:对于已知模型的未知参数,需要一个先验分布与似然函数共轭,来评估未知参数。关于贝叶斯规则,请看”贝叶斯公式的共轭分布“。
    由贝叶斯规则可知:
    
    其中,先验分布是Dirichlet分布,似然函数是多项分布函数,而计算后验分布目的是为了获得主题分布。则图一的上半部分可表示为:

2.2 单词分布

    同理,单词分布也服从多项分布,其贝叶斯表达式为:
    
    其先验分布是Dirichlet分布,似然函数是多项分布。如图:

2.3 主题分布和单词分布的表达式

    经过一系列的公式推导(详见 "Parameter estimation for text analysis", Gregor Heinrich),得到主题分布和单词分布的最终表达式:
参数说明:

三、Gibbs Sampling算法:实现LDA 

    第二部分重点描述了LDA生成文档的模型,以及模型中未知参数(即主题分布和单词分布)的表达式。模型已经大体了解,不过具体该怎么实现?这里采用的算法是Gibbs Sampling
    Gibbs Sampling算法是MCMC(Markov Chain Monte Carlo,马尔科夫链-蒙特卡罗)算法的一个特例。它的运行方式是每次选择概率向量的一个维度,然后根据这个向量的其他维度的值来采样当前维度的新值。请看下图:

1. 步骤说明


Initialize:
    初始时随机给文本中的每个单词分配主题
Count:
    计算每个每篇文档属于第k个主题的单词总数,以及第k个主题在所有文档中生成第t个单词的总数。
Compute:
    去除当前单词的主题,根据该文档中其他单词的主题评估当前单词被赋予各个主题的概率。其中, 
Sample:
    在得到当前单词的主题概率分布后,根据这个概率分布为该词采样一个新的主题
Loop:
    从Count步骤重新开始,不断更新下一个单词的主题,直到收敛。

2. 输出结果

    最后输出的是主题分布和单词分布,对文本挖掘方面的技术有重要意义。

LDA(Latent Dirichlet Allocation)简介相关推荐

  1. gensim实现LDA(Latent Dirichlet Allocation)算法提取主题词(topic)

     Latent Dirichlet Allocation(LDA) 隐含分布作为目前最受欢迎的主题模型算法被广泛使用.LDA能够将文本集合转化为不同概率的主题集合.需要注意的是LDA是利用统计手段对主 ...

  2. R语言文本主题模型之潜在语义分析(LDA:Latent Dirichlet Allocation)

    文本分析:主题建模 library(tidyverse) theme_set( theme_bw()) 目标 定义主题建模 解释Latent Dirichlet以及此过程的工作原理 演示如何使用LDA ...

  3. LDA: 从头到尾彻底理解LDA (Latent Dirichlet Allocation)

    小记: 很长一段时间没有更新博客了,因为工作比较忙,也没有回答一些朋友的问题, 非常抱歉. 这篇LDA的总结已经写好了有三个多月, 一直没有时间发到CSDN上, 今天周末, 本来打算在很火爆的国内MO ...

  4. 自然语言处理NLP之主题模型、LDA(Latent Dirichlet Allocation)、语义分析、词义消歧、词语相似度

    主题模型 主题模型旨在文章中找到一种结构,学习到这种结构后,一个主题模型可以回答以下这样的问题.X文章讨论的是什么?X文章和Y文章直接有多相似?如果我对Z文章感兴趣我应该先读那些文章?什么是主题?主题 ...

  5. 简单易学的机器学习算法——Latent Dirichlet Allocation(理论篇)

    引言 LDA(Latent Dirichlet Allocation)称为潜在狄利克雷分布,是文本语义分析中比较重要的一个模型,同时,LDA模型中使用到了贝叶斯思维的一些知识,这些知识是统计机器学习的 ...

  6. 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(三)

    潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(三) 目录 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(三) 主题演 ...

  7. 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(二)

    潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(二) 目录 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(二) LDA ...

  8. 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(一)

    潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(一) 目录 潜在狄利克雷分配(LDA,Latent Dirichlet Allocation)模型(一) LDA ...

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

    文章目录 1. 狄利克雷分布 2. 潜在狄利克雷分配模型 3. 学习推理 4. sklearn.decomposition.LatentDirichletAllocation 潜在狄利克雷分配(lat ...

  10. LDA(Latent Dirichlet allocation)

    目录 1. 贝叶斯网络 2. 主题模型 2.1 主题模型的直观理解 2.2 共轭先验分布 2.3 二项分布及其共轭先验--Beta分布 2.3.1 Bete分布 2.3.2 二项分布与其先验分布 2. ...

最新文章

  1. 原来,王兴是理想汽车的「二当家」!股份只比李想少1.6%丨理想汽车招股书
  2. 十大互联网公司都在寻找她!她是什么样的?
  3. vsftpd配置文件详细介绍
  4. tensorflow gpu利用率低_「动手学习Tensorflow」- Tensorflow综述I
  5. 对那些刷抖音外放音乐的人,就这么治他!| 今日最佳
  6. MUI 列表组件:文字居左中右(排版) - 代码篇
  7. 需求 新建数据表用于演练查询 2128
  8. history.go(-1)返回页面后,此页面中的input标签隐藏域中的值消失
  9. 多字节编码与Unicode码的区别 内码
  10. 最新版MySQL 8.0.22(Windows 64位)下载安装详细方法
  11. M1下载Photoshop CC2019亲测可用
  12. rk3288 android4.4,RK3288 Android4.4使用A6212,wifi可以用但是蓝牙起不来
  13. 湿化学清洗过程中晶片污染控制方法
  14. go语言实现2048小游戏(完整代码)
  15. 互联网技术架构——画龙点睛
  16. 涤纶电容的作用原理及优点缺点
  17. 卖身风波中的考拉员工
  18. php 的 yii 框架,详解PHP的Yii框架的运行机制及其路由功能
  19. 今日头条能干掉微信么?
  20. VirtualBOX 虚拟机安装 OS X 10.9 Mavericks 及 Xcode 5,本人X220亲测

热门文章

  1. AMD规范和requirejs入门
  2. MythXinWCF通用宿主绿色版V1.2发布,及服务启动相关说明
  3. POJ 2082Lost Cows
  4. sqlserver2005查询表字典
  5. EXCEL怎样完整显示身份证号码
  6. Activity的启动模式standard,singleTop,singleTask,singleInstance(转)
  7. 20/23种设计模式---C++实现
  8. struts1.x 标签库
  9. java 常用缓存描述
  10. 阿里开源框架Jarslink1.6.1新特性