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

文章目录

    • 1. 狄利克雷分布
    • 2. 潜在狄利克雷分配模型
    • 3. 学习推理
    • 4. sklearn.decomposition.LatentDirichletAllocation

潜在狄利克雷分配(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αi−1∑i=1kθi=1,θi≥0,α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=1kΓ(αi)Γ(i=1kαi)i=1kθiαi1i=1kθi=1,θi0,αi>0,θDir(α)
伽马函数,Γ(s)=∫0∞xs−1e−xdx,s>0伽马函数,\Gamma(s) = \int_0^{\infty} x^{s-1}e^{-x}dx, \quad s>0Γ(s)=0xs1exdx,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 983. 最低票价(动态规划)

1. 题目 在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。 在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。 每一项是一个从 1 到 365 的整数。 火车票有三种不同的销售方式: 一张为期一天的通行证售价为 co…

LeetCode 1306. 跳跃游戏 III(广度优先搜索BFS)

1. 题目 这里有一个非负整数数组 arr,你最开始位于该数组的起始下标 start 处。 当你位于下标 i 处时,你可以跳到 i arr[i] 或者 i - arr[i]。 请你判断自己是否能够跳到对应元素值为 0 的 任意 下标处。 注意,不管是什么情况下&#xff…

mysql错误日志为aborting_MySQL 错误日志(Error Log)

同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件。通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。这些日志能够帮助我们定位mysqld内部发生的事件&#xff0…

LeetCode 529. 扫雷游戏(广度优先搜索BFS/深度优先搜索DFS)

文章目录1. 题目2. 解题2.1 BFS2.2 DFS1. 题目 让我们一起来玩扫雷游戏! 给定一个代表游戏板的二维字符矩阵。 ‘M’ 代表一个未挖出的地雷, ‘E’ 代表一个未挖出的空方块, ‘B’ 代表没有相邻(上,下,左…

Flash 与数学:圆的切线(3)

在上面几节当中,已经了解过计算圆上任意一点的切线的方法,我们首先知道使用导数几何意义在哪里?在我们高中数学和大学的数学当中,说明了。导数的几何意义函数yf(x)在点x0处导数为f(x0)在几何上表示曲线yf&a…

LeetCode 1110. 删点成林(二叉树递归)

1. 题目 给出二叉树的根节点 root,树上每个节点都有一个不同的值。 如果节点值在 to_delete 中出现,我们就把该节点从树上删去,最后得到一个森林(一些不相交的树构成的集合)。 返回森林中的每棵树。你可以按任意顺序…

创建链表

代码#include <iostream>usingnamespacestd;structstudent //定义结构体{ intdata; student *next;};//创建链表student *CreateList(){ student *headNULL; student *pnewstudent; cin>>p->data; student *endp; while(p->data!0…

LeetCode 1286. 字母组合迭代器(回溯/位运算)

文章目录1. 题目2. 解题2.1 回溯2.2 位运算1. 题目 请你设计一个迭代器类&#xff0c;包括以下内容&#xff1a; 一个构造函数&#xff0c;输入参数包括&#xff1a;一个 有序且字符唯一 的字符串 characters&#xff08;该字符串只包含小写英文字母&#xff09;和一个数字 c…

基于Java+SpringMvc+Vue求职招聘系统详细设计实现

基于JavaSpringMvcVue求职招聘系统详细设计实现 &#x1f345; 作者主页 专业程序开发 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; 文章目录 基于JavaSpringMvcVue求职招聘系统详细设计实现一、前言介…

无监督学习方法总结

文章目录1. 无监督学习方法的关系和特点1.1 各种方法之间的关系1.2 无监督学习方法1.3 基础机器学习方法1. 无监督学习方法的关系和特点 八种常用的统计机器学习方法&#xff1a; 聚类方法&#xff08;层次聚类、k均值聚类&#xff09;奇异值分解&#xff08;SVD&#xff09;…

java从控制台输入数组_Java将控制台输入的一行整数转成整型数组

思路&#xff1a;将一行数据按字符串的形式读取进来。首先判断输入的字符串是不是空&#xff0c;为空的话&#xff0c;则不作任何操做。其次&#xff0c;将字符串按照指定方式切分为字符串数组&#xff0c;此处是按照空格切分&#xff0c;由于输入是按空格区分的。最后&#xf…

在Silverlight中使用Socket进行通信(1)Socket请求-回复方式的简易数据交换

很久之前用过Socket&#xff0c;由于近期项目需要用socket传输视频流&#xff0c;早上花了半小时回顾了一下。 Socket类简要介绍 socket下提供的主要类有四个&#xff0c;分别是socket,tcpclient,tcplistener,udpclient&#xff0c;他们的作用如下&#xff1a; Socket 含有大量…

java listview控件_ListView普通列表控件的使用

Android中的列表空间非常灵活&#xff0c;可以自定义每一个列表项&#xff0c;实际上每一个列表项就是一个View&#xff0c;在Android定义了3个列表控件&#xff1a;ListView、ExpandableListView和Spinner&#xff0c;其中Spinner就是在Windows中常见的下拉列表框。ListView控…

【Kaggle】Intro to Machine Learning 第一次提交 Titanic

项目官网地址 新手可以参考这篇 8、Getting Started With Titanic&#xff0c;教你如何操作、提交等 自己简要再记录一下&#xff1a; Join the competition 各个 tab 下可以查看数据Data、代码编写Notebooks、讨论、排名、比赛规则、队伍点击 Notebooks&#xff0c;新建文…

在C#代码中执行BCS外部内容类型方法

在前面的博文中我们讨论了如何使用Business Connectivity Services对象模型栏获取已部署在SharePoint BCS中的外部内容类型。 本文中我们将学习如何获取一个ECT的BCS方法集合。并且还要通过Business Connectivity Services对象模型执行其中的Finder方法和SpecificFinder方法。…

java ndc_通过slf4j/log4j的MDC/NDC 实现日志追踪

在分布式系统或者较为复杂的系统中&#xff0c;我们希望可以看到一个客户请求的处理过程所涉及到的所有子系统\模块的处理日志。由于slf4j/log4j基本是日志记录的标准组件&#xff0c;所以slf4j/log4j成为了我的重点研究对象。slf4j/log4j支持MDC&#xff0c;可以实现同一请求的…

java 反射的弊端_java反射机制的一些学习心得小结

概述之前在了解Spring的类加载机制的时候&#xff0c;了解了java的反射机制。但是&#xff0c;我对反射理解一直不深。也一直有点疑惑&#xff1a;Spring为什么利用反射创建对象&#xff1f;直接new对象和依靠反射创建对象有什么区别&#xff1f;什么是动态加载类&#xff1f;什…

LeetCode 1443. 收集树上所有苹果的最少时间(自底向上DFS)

1. 题目 给你一棵有 n 个节点的无向树&#xff0c;节点编号为 0 到 n-1 &#xff0c;它们中有一些节点有苹果。 通过树上的一条边&#xff0c;需要花费 1 秒钟。 你从 节点 0 出发&#xff0c;请你返回最少需要多少秒&#xff0c;可以收集到所有苹果&#xff0c;并回到节点 0 …

java怎吗从磁盘读文件_编写一个Java应用程序,该程序使用FileInputStream类,实现从磁盘读取本应用程序源代码文件,并将文件内容显示在屏幕上。...

满意答案x786741812013.05.10采纳率&#xff1a;42% 等级&#xff1a;12已帮助&#xff1a;14476人import java.io.FileInputStream;import java.io.InputStreamReader;import java.io.BufferedReader;import java.io.IOException;import java.io.FileNotFoundException;pub…

漂亮的博客搜索框

看到漂亮的搜索框&#xff0c;收藏... 主要用背景图片和输入框和链接隐藏完成。 可以在IE6,ff&#xff0c;chorme下兼容... <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quo…