怎么确定LDA的lda topicc个数

谁知道如何建立层次关系--Topic Model的分类和设计原则
bczqyly2124
Topic Model (LDA)认为一个离散数据集合(如文档集合,图片集合,为行文方便,本文统统以文档集合作为描述对象,其他的数据集合只需换掉对应的术语即可)是由隐含在数据集合背后的topic set 生成的,这个set中的每一个topic都是词的概率分布.对于文档中的每一篇文档,先抽取一个topics proportion \theta;然后对于这个文档中的每一个词的位置 w_i, LDA 先从\theta中选择一个topic,然后再从这个topic对应的词分布中选择一个词去填充;按照上述步骤直到整个文档集合产生完毕. 上述是LDA生成一个文档集合过程的简要介绍,下面我会把目前出现的topic models进行分门别类. 我认为topic models主要可以分为四大类:1)无监督的、无层次结构的topic model;2)无监督的、层次结构的topic model;3)有监督的、无层次结构的topic model;4)有监督的、层次结构的topic model. 对于1)主要有: PLSA, LDA, Correlated Topic Model, PAM,Concept Topic Model等对于2)主要有: HLDA, HDP,HPAM等对于3)主要有: S-LDA, Disc-LDA, MM-LDA, Author-Model, Labeled LDA, PLDA 等等对于4)主要有: hLLDA, HSLDA 以上模型对应的文章名字,用google直接搜索即可得到,这里就不列出. 很多人都在或者想使用已有的Topic Model,当然最理想的应该是我们自己设计适合我们问题的topic model来解决问题. 然而这是很难的一个问题,一方面我们需要较为合理地设计适合问题的模型;另外一方面还需要较为强的数学基础去为自己的模型做相关的数学推导,如参数学习和推理. 在这里,就我自己的经验,总结了一下topic model设计中的一些设计原则:A. 在topic model的设计中,非常关键的一点是怎么看待topic,下面是一些总结: 1). 把topic看为一个词的分布,这是最基本的;如LDA等模型2). 不仅把topic看做是一个词的分布,而且topic还可以是一堆topic的分布,即建立了topic之间的层次关系;如HPAM模型等3). 把topic对应于标签,即一个topic有对应的一个标签,这样就可以建立有监督的topic model;如labeled LDA模型等B. 另外,在topic model中建立有监督模型的方法大概有两类:一类是生成式的;一类是判别式的 对第一类,主要是把标签看为了一个topic,从而建立一个概率模型,用数据去训练得到参数,然后去应用;如labeled LDA, HLLDA等2). 人工指定存在某种层次关系,然后去刻划之间的关系,如HPAM/PAM模型;3). 在有监督的模型,这种层次关系已经存在(例如标签是一个层次结构),一种处理方法是认为这些标签都是topic,然后用概率模型去刻划变量之间的关系,如labeled LDA; 至于如何进行推理和学习,常用的方法有EM算法,变分推断方法,Gibbs采样方法等,最主要还是最后两种方法, 其中最简单的是Gibbs采样方法,最容易理解,然后是EM算法,最后变分推断方法是最难的,需要较多数学基础,由于内容多,这里只作简单的介绍,以后有时间再详细的写写. EM算法:这个是PLSA论文里面用到的方法,在数学领域早已有之,它其实不是一个算法,而是一类问题进行近似计算的理论框架,主要的思想就是在Q函数的基础上进行迭代,最后逼近最优值,值得注意的是,最后的值不一定是全局最优值,很大可能是局部最优,这个算法相对较为简单,花上几个小时应该能够弄明白; 变分推断方法:这个方法的基本思想是,如果一个分布很难求,我们就找一个容易求的近似分布来代替它,如何来刻划近似呢?就是用KL度量来衡量两个分布的近似程度,在得到容易求的近似分布之后,问题就变简单了. Gibbs采样方法:这个算法的基本思想是:用来自一系列的容易采样的条件分布的样本来得到对应的全概率分布的样本,从而用这些样本来求取相应的统计量,这里的理论基础是这一系列的条件分布在经过一段时间采样后会达到平衡分布,这个平衡分布就是要求取的全概率分布.
为您推荐:
其他类似问题
扫描下载二维码3858人阅读
主题模型(8)
Topic&models主要可以分为四大类:
1.无监督无层次结构,&主要有:
&&&&(1)(Hofmann&1999),&
&&&&(2)&(Blei&et&al.,&2003),&
&&&&(3)&(Blei&and&Lafferty,&2006&)
&&&&&&&&&CTM主要是为了克服标准LDA模型不能建模话题在文档中出现的相关性的缺点,将LDA中文档话题分布服从的Dirichlet分布改为Logistic正态分布。例如CTM论文中举的一个例子是在Science杂志语料中,一篇遗传学文章很可能也跟健康和疾病有关,但是却不大可能跟射线天文学有关。
&&&&因为Logistic正态分布不再是Multinomial分布的共轭分布,因此模型的解变得更加复杂。对此,作者使用的方法是,在变分推理的过程中,继续使用Taylor展开式以简化似然函数下界的复杂性。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&图X&Correlated&Topic&Model&模型的图形表示
&&&&&&&&&07年CTM详细版本:
&&&&&&&&&&&CTM的变分推导细节见另一个学者的文档:
&&&&(4)&(Li&and&McCallum,&ICML&2006),
&&&&Concept&Topic&Model等
2.&无监督有层次结构,&主要有:&
&&&&&(Blei&NIPS&2003),&
&&&&&(Teh&et&al.,&2005):标准LDA模型中话题的个数K需要已知,然而很多时候确定K的大小是一件困难的事情。HDP能够根据数据自动确定K的大小。
&&&&&(Mimno&et&al.,&ICML 2007)
3.&有监督无层次结构,&主要有:&(&Blei&et&al.,&2007),&Disc-LDA,&MM-LDA,&Author-Model,&(Ramage&et&al.,&2009),&(Wang&et&al.,&2009)&等
4.&有监督有层次结构,&主要有:&(Petinot&et&al.,&ACL&2011),&(Hierarchically&Supervised&Latent&Dirichlet&Allocation,&Perotte&et&al.,&NIPS&2012)
除上述集中类型的话题模型外,还有一些半监督的话题模型,主要有:
(Wang&et&al.&2007),&(Semi-Supervised&Hierarchical&Topic&Model,&Mao&EMNLP&2012)
另一些LDA变种主要是为了描述一些链接信息而作的扩展:
(Liu&et&al.,&ICML&2009)
&(Chang&and&Blei,&AISTATS&2009):&Relational&topic&models:&文档之间有连接关系,即对一个文档网络建模。使用一个响应变量来表示文档之间的关系。
(Rosen-Zvi&et&al.,&UAI&2004):&将文档作者也考虑进去
(Blei&and&Lafferty,&ICML&2006)&Dynamic&Topic&Models,话题随时间的演变
(Pathak,&et&al.,&KDD&workshop&2008)Social&Topic&Models&for&Community&Extraction
Social-Network&Analysis&Using&Topic&Model&SIGIR2012
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:315320次
积分:3610
积分:3610
排名:第6512名
原创:104篇
转载:13篇
评论:114条
(2)(4)(1)(6)(2)(8)(2)(10)(1)(1)(4)(4)(5)(5)(8)(45)(10)文本分析的参数估计方法
概率图模型:贝叶斯网络与朴素贝叶斯网络主题模型TopicModel:LDA中的数学模型参数估计(极大似然估计,极大后验概率估计,贝叶斯估计)
日期: 17:05:58
来源:csdn
文本分析的参数估计方法
概率图模型:贝叶斯网络与朴素贝叶斯网络主题模型TopicModel:LDA中的数学模型参数估计(极大似然估计,极大后验概率估计,贝叶斯估计)
文本分析的三类参数估计方法-最大似然估计MLE、最大后验概率估计MAP及贝叶斯估计。
参数估计中,我们会遇到两个主要问题:(1)如何去估计参数的value。(2)估计出参数的value之后,如何去计算新的observation的概率,即进行回归分析和预测。
首先定义一些符号:
数据集X中的所有Xi,他们是独立同分布的,因此后面求X 的概率的时候,xi可以相乘。
贝叶斯公式
这个公式也称为逆概率公式,可以将后验概率转化为基于似然函数和先验概率的计算表达式,即
最大似然估计MLE
顾名思义,当然是要找到一个参数,使得L最大,为什么要使得它最大呢,因为X都发生了,即基于一个参数发生的,那么当然就得使得它发生的概率最大。
最大似然估计就是要用似然函数取到最大值时的参数值作为估计值,似然函数可以写做
相乘因为它们之间是独立同分布的。由于有连乘运算,通常对似然函数取对数计算简便,即对数似然函数。
最大似然估计问题可以写成
这是一个关于的函数,求解这个优化问题通常对求导,得到导数为0的极值点。该函数取得最大值是对应的的取值就是我们估计的模型参数。
给定观测到的样本数据,一个新的值发生的概率是
求出参数值不是最终目的,最终目的是去预测新事件基于这个参数下发生的概率。
Note: 注意有一个约等于,因为他进行了一个近似的替换,将theta替换成了估计的值,便于计算。that is, the next sample is anticipated to be distributed with the estimated parameters θ ^ ML .
扔硬币的伯努利实验示例
以扔硬币的伯努利实验为例子,N次实验的结果服从二项分布,参数为P,即每次实验事件发生的概率,不妨设为是得到正面的概率。为了估计P,采用最大似然估计,似然函数可以写作
其中表示实验结果为i的次数。下面求似然函数的极值点,有
得到参数p的最大似然估计值为
可以看出二项分布中每次事件发的概率p就等于做N次独立重复随机试验中事件发生的概率。
如果我们做20次实验,出现正面12次,反面8次,那么根据最大似然估计得到参数值p为12/20 = 0.6。
最大后验估计MAP
最大后验估计与最大似然估计相似,不同点在于估计的函数中允许加入一个先验,也就是说此时不是要求似然函数最大,而是要求由贝叶斯公式计算出的整个后验概率最大,即
Note: 这里P(X)与参数无关,因此等价于要使分子最大。
通过加上这个先验分布项,我们可以编码额外的信息,并且可以避免参数的过拟合问题。
与最大似然估计相比,现在需要多加上一个先验分布概率的对数。在实际应用中,这个先验可以用来描述人们已经知道或者接受的普遍规律。例如在扔硬币的试验中,每次抛出正面发生的概率应该服从一个概率分布,这个概率在0.5处取得最大值,这个分布就是先验分布。先验分布的参数我们称为超参数(hyperparameter)即,我们认为,theta也是服从一个先验分布的:alpha是他的超参数。
同样的道理,当上述后验概率取得最大值时,我们就得到根据MAP估计出的参数值。
给定观测到的样本数据,一个新的值发生的概率是
Note: 这里积分第一项与theta无关(使用的是MAP值),所以第二项积分为1(也就是后验概率不随新来的数据变化,为1?)。
扔硬币的伯努利实验示例
我们期望先验概率分布在0.5处取得最大值,我们可以选用Beta分布(lz:实际上选择beta分布的原因是beta分布和二项分布是共轭分布)即
其中Beta函数展开是
当x为正整数时
Beta分布的随机变量范围是[0,1],所以可以生成normalized probability values。下图给出了不同参数情况下的Beta分布的概率密度函数
我们取,这样先验分布在0.5处取得最大值(观察上面的图,因为我们先验认为p约等于0.5,因此超参数a和b是相等的,我们这里选择等于5)。
现在我们来求解MAP估计函数的极值点,同样对p求导数,得到参数p的的最大后验估计值为
后面两项是对log(p(p|alpha,beta))的求导
和最大似然估计ML的结果对比可以发现结果中多了,我们称这两者为pseudo
count伪计数,这两项的作用是使总概率p向0.5拉近,因为我们的先验认为就是约等于0.5的。这样的pseudo-counts就是先验在起作用,并且超参数越大,为了改变先验分布传递的belief所需要的观察值就越多,此时对应的Beta函数越聚集,紧缩在其最大值两侧。
如果我们做20次实验,出现正面12次,反面8次,那么,根据MAP估计出来的参数p为16/28 = 0.571,小于最大似然估计得到的值0.6,这也显示了“硬币一般是两面均匀的”这一先验对参数估计的影响。
贝叶斯估计
贝叶斯估计是在MAP上做进一步拓展,此时不直接估计参数的值,而是允许参数服从一定概率分布。极大似然估计和极大后验概率估计,都求出了参数theta的值,而贝叶斯推断则不是,贝叶斯推断扩展了极大后验概率估计MAP(一个是等于,一个是约等于)方法,它根据参数的先验分布P(theta)和一系列观察X,求出参数theta的后验分布P(theta|X),然后求出theta的期望值,作为其最终值。另外还定义了参数的一个方差量,来评估参数估计的准确程度或者置信度。
贝叶斯公式
现在不是要求后验概率最大,这样就需要求,即观察到的evidence的概率,由全概率公式展开可得
当新的数据被观察到时,后验概率可以自动随之调整。但是通常这个全概率的求法是贝叶斯估计比较有技巧性的地方。
用贝叶斯估计来做预测
如果我们想求一个新值的概率,可以由下面公式来计算。
此时第二项因子在上的积分不再等于1,这就是和MLE及MAP很大的不同点。
扔硬币的伯努利实验示例
跟上面极大后验概率例子一样,N次伯努利实验,参数p(即正面的概率)的先验分布是参数为(5,5)的beta分布,然后接下来,我们根据参数p的先验分布和N次伯努利实验结果来求p的后验分布。我们假设先验分布为Beta分布,但是构造贝叶斯估计时,不是要求用后验最大时的参数来近似作为参数值,而是求满足Beta分布的参数p的期望,也就是直接写出参数的分布再来求分布的期望,有
1 C是所有实验结果的集合Ci=1或者0。
3 这里用到了公式
4 推导也可参考[:Beta-Binomial 共轭部分]
根据结果可以知道,根据贝叶斯估计,参数p服从一个新的Beta分布。回忆一下,我们为p选取的先验分布是Beta分布,然后以p为参数的二项分布用贝叶斯估计得到的后验概率仍然服从Beta分布,由此我们说二项分布和Beta分布是共轭分布。当T为二维的情形可以对Beta分布来应用;T为多维的情形可以对狄利克雷分布应用。
根据Beta分布的期望和方差计算公式,我们有
可以看出此时估计的p的期望和MLE ,MAP中得到的估计值都不同,此时如果仍然是做20次实验,12次正面,8次反面,那么我们根据贝叶斯估计得到的p满足参数为12+5和8+5的Beta分布,其均值和方差分别是17/30=0.567, 17*13/(31*30^2)=0.0079。可以看到此时求出的p的期望比MLE和MAP得到的估计值都小,更加接近0.5。
MLE,MAP和贝叶斯估计对参数估计的比较
综上所述我们可以可视化MLE,MAP和贝叶斯估计对参数的估计结果如下
lz:从MLE到MAP再到贝叶斯估计,对参数的表示越来越精确(由易到难,估计的value也越来越perfect),得到的参数估计结果也越来越接近0.5这个先验概率,越来越能够反映基于样本的真实参数情况。
文本分析中的参数估计,以LDA为例,英文版:
本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
ceph系统原理 细节 benchmark 不完全说明 1 流程说明 1.1 应用 1) RADOS GW是一个提供与Amazon S3和Swift兼容的RESTful API的gateway,以供相应的对象存储应用开发使用。RADOS GW提供的API抽象层次更高,但功能则不如librados强大。因此,开发者应针对自己的需求选择使用. 2) RBD则提供了一个标准的块设备接口,常用于在虚拟化的场景下为虚拟机创建volume。目前,Red Hat已经将RBD驱动集成在KVM/QEMU中,以提高虚拟机访问
特别说明: 在上一遍文章中有详细的叙述Receiver启动的过程,如果不清楚的朋友,请您查看上一篇博客,这里我们就基于上篇的结论,继续往下说。 博文的目标是: Spark Streaming在接收数据的全生命周期贯通 组织思路如下: a) 接收数据的架构模式的设计 b) 然后再具体源码分析 接收数据的架构模式的设计 1. 当有Spark Streaming有application的时候Spark Streaming会持续不断的接收数据。 2. 一般Receiver和Driver不在一个进程中的,所以接收到
http:// blog.csdn.net/pipisorry/article/details/ 贝叶斯与频率派思想 频率派思想
长久以来,人们对一件事情发生或不发生,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大。而且事情发生或不发生的概率 虽然未知,但最起码是一个确定的值。 比如如果问那时的人们一个问题:“有一个袋子,里面装着若干个白球和黑球,请问从袋子中取得白球的概率 是多少?”他们会立马告诉你,取出白球的概率 就是1/
1、MapReduce计数器是什么?
计数器是用来记录job的执行进度和状态的。它的作用可以理解为日志。我们可以在程序的某个位置插入计数器,记录数据或者进度的变化情况。 2、MapReduce计数器能做什么?
MapReduce 计数器(Counter)为我们提供一个窗口,用于观察 MapReduce Job 运行期的各种细节数据。对MapReduce性能调优很有帮助,MapReduce性能优化的评估大部分都是基于这些 Counter 的数值表现出来的。 3、MapReduce 都有哪些内置计数器
ceph系统 1 流程说明 1.1 应用 1) RADOS GW是一个提供与Amazon S3和Swift兼容的RESTful API的gateway,以供相应的对象存储应用开发使用。RADOS GW提供的API抽象层次更高,但功能则不如librados强大。因此,开发者应针对自己的需求选择使用。 2) RBD则提供了一个标准的块设备接口,常用于在虚拟化的场景下为虚拟机创建volume。目前,Red Hat已经将RBD驱动集成在KVM/QEMU中,以提高虚拟机访问性能。 3) Ceph FS是一个POSI
映射 mapping机制用于进行字段类型确认,将每个字段匹配为一种确定的数据类型(string, boolean, date); 分析 analysis机制用于进行 全文文本 Full Text的分词,以建立供搜索用的 倒排索引 Inverted index. 上边做个总结,后续学习之后就明白了.先看一个查询现象: 在索引中有12个tweets,只有一个包含日期,但是我们看看下面查询中的total hits。 GET /_search?q=2014 # 12 个结果GET /_sear
聚焦在 Twitter 上关于Apache Spark的数据, 这些是准备用于机器学习和流式处理应用的数据。 重点是如何通过分布式网络交换代码和数据,获得 串行化, 持久化 , 调度和缓存的实战经验 。 认真使用 Spark SQL, 交互性探索结构化和半结构化数据. Spark SQL 的基础数据结构是?Spark dataframe, Spark dataframe 受到了 Python Pandas?dataframe 和R dataframe 的启发. 这是一个强大的数据结构, 有R 或Pytho
http:// blog.csdn.net/pipisorry/article/details/ 贝叶斯网络图模型的表示
为了理解有向图对于描述概率分布的作用,首先考虑三个变量 a, b, c 上的一个任意的联合分布 p(a, b, c) 。注意,现阶段我们不需要对这些变量做出任何更多的假设,例如它们是离散的还是连续的。实际上,图模型的一个强大的方面是,一个具体的图可以描述一大类概率分布。通过使用概率的乘积规则(1.11),我们可以将联合概率分布写成下面的形式。 p(a, b, c
本博客欢迎转载,但请注明出处 http://blog.csdn.net/ringoshen/article/details/ 由于能力与时间有限,文章内容难免错漏,望大家多加指正,相互进步! 0. 前言 这次看了一下nova list命令的执行过程,整个过程可以分为几步:HTTP请求、URLMap分发、过滤、APIRouter到具体执行函数,接下来使用Postman组个包并发送http请求作为开始对各个模块进行跟踪和注解。 1. HTTP请求 OpenStack组件都是通过RESTful
一:Receiver启动的方式设想 1. Spark Streaming通过Receiver持续不断的从外部数据源接收数据,并把数据汇报给Driver端,由此每个Batch Durations就可以根据汇报的数据生成不同的Job。 2. Receiver属于Spark Streaming应用程序启动阶段,那么我们找Receiver在哪里启动就应该去找Spark Streaming的启动。 3. Receivers和InputDStreams是一一对应的,默认情况下一般只有一个Receiver. 如何启动R
Copyright (C)
ITfish.net| 时间排序
LDA中如何确定topic数量一直都没有公认的好方法,原因在于不同业务对于生成topic的要求是存在差异的。&br&&br&如果LDA的结果是用于某个目标明确的学习任务(比如分类),那么就直接采用最终任务的指标来衡量就好了,能够实现分类效果最好的topic个数就是最合适的。&br&&br&如果没有这样的任务怎么办?业界最常用的指标包括Perplexity,MPI-score等。以我的经验,通过观察Perplexity/MPI-score这些指标随topic个数的变化确实能够帮助我们选择合适的个数值,比如可以找出曲线的拐点。但是这些指标只能作为参考,而不能作为标准。&br&&br&有的业务需要topic之间相互比较独立,那么就可以选择考察topic之间的相关性作为额外的指标。而有的业务可以容忍topic之间存在overlap,但是对topic中词的聚合性要求高,这时候就需要寻找一些聚类的指标做评判标准。&br&&br&最后,肉眼看仍然是我目前发现的最简单有效的方法。
LDA中如何确定topic数量一直都没有公认的好方法,原因在于不同业务对于生成topic的要求是存在差异的。 如果LDA的结果是用于某个目标明确的学习任务(比如分类),那么就直接采用最终任务的指标来衡量就好了,能够实现分类效果最好的topic个数就是最合适的。…
早已经有这类的研究,从2004年的Hu and Liu论文中提出aspect extraction任务,到2014年的SemEval评测,aspect提取可以说已经比较成熟了。但aspect有显性和隐形之分,前面提到的大多数研究都是explicit的(如『这部手机的屏幕很大』就是explicit,『这家餐厅很贵』就是implicit,潜在aspect是price),而implicit的研究大多都是有监督学习,因为领域很多,所以标注成本高。目前了解到的比较新的研究是无监督的implicit aspect提取,还有double-implicit问题。
早已经有这类的研究,从2004年的Hu and Liu论文中提出aspect extraction任务,到2014年的SemEval评测,aspect提取可以说已经比较成熟了。但aspect有显性和隐形之分,前面提到的大多数研究都是explicit的(如『这部手机的屏幕很大』就是explicit,『这家餐厅…
多项分布中,底数是分布参数,指数是随机变量;&br&Dirichlet分布中,底数是随机变量,指数是分布参数。&br&&br&在贝叶斯估计中,多项分布的参数也被看成随机变量,它们的分布就由Dirichlet分布来描述了。
多项分布中,底数是分布参数,指数是随机变量; Dirichlet分布中,底数是随机变量,指数是分布参数。 在贝叶斯估计中,多项分布的参数也被看成随机变量,它们的分布就由Dirichlet分布来描述了。
&p&因为最近我也遇到类似的问题,所以就特地用心去了解了一下LDA的工作原理也顺便来解答一下这位小哥的困惑。实际上LDA主题模型是一种对文本进行无监督聚类的方法,每一个主题实际上对应的就是一个类(注意理解这句话),而当每个文档被解释成基于各个主题的一个分布的向量时,其在各个主题上的概率(载荷)对应的是对各个类别进行“软分类”的隶属度。既然如此的话,那么我们就容易理解为什么很多文献上并不对LDA主题模型在新文档测试的问题上进行详细解释说明了,因为,对一个聚类算法,没什么好进行测试的,没有预测的意义。&/p&&br&&p&那么话又说回来了,LDA主题分析真的没有测试新文档的意义么?当被认为是一个聚类算法的时候固然没有,往往一次性就把信息解析出来了,然后呈递分析结果。但是,LDA主题分析的作用不仅仅是聚类,也是可以用于分析新文档的。在对新文档进行分析时,主要源于如下几个需求:&/p&&br&&p&&b&1) &/b&&b&对模型的优劣程度进行判断&/b&&/p&&p&Blei最早的对LDA主题模型的文章中提到,LDA主题模型使用过程中有很多超参数不能确定,因此需要用一些客观指标来对超参数的选择进行调试。测评模型优劣的关键在于必须有一个客观指标,这个指标就是Perplexity(关于Perplexity怎么回事儿参考: &a href=&///?target=https%3A//www.52ml.net/14623.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&52ml.net/14623.html&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&),但是Perplexity对模型的评估却依赖于主题模型在新的测试文档集合中的应用。尽管Blei的文章中只提到了测试集合,但没说已有的主题如何在测试集合中进行新文档的分析,可能因为这事儿对于大牛来说太简单不屑一顾吧。后来Thomas Griffiths的文章提出了大家所熟知的MCMC的方法,也提到了Perplexity的评估方法,但是依然没有提出如何进行相应的操作……哎,大牛就是这么任性…&/p&&br&&p&&b&2) &/b&&b&测试集合和训练集合不来自于同一个语料库&/b&&/p&&p&有时候需要对多个语料库进行分析,不同语料库的语言结构可能不同,但是都会涉及同样的领域,这种情况下不建议将两个语料库放在一起进行主题分析,而最好分开对其进行操作,一个用作训练集而另一个用作测试集。&/p&&br&&p&&b&3) &/b&&b&待分析文档全集太大不能一次性训练操作&/b&&/p&&p&在对某一个语料库中的文档进行基于LDA主题模型的聚类操作时,可能文档集合太大,一次性放入内存构造过长的Markov链进行分析很容易把内存撑坏。虽然很多人说PC硬件不是问题,但是仍有一部分研究者是还没有独立研究机构给自己撑腰的屌丝博士生,很难找到合适的硬件计算资源,这种情况下,可以考虑分批次处理文档,一小部分训练,另外那些放不进内存的数据分批进行测试,从而把所有文档进行降维。&/p&&br&&p&好了,扯了半天言归正传,如何对训练集进行测试。首先你要清楚如何用MCMC的方法对文档进行训练,不懂的可以看一下Thomas Griffths的文章。Thomas Griffths认为,在对文档的主题进行估计时,按照:&img src=&/a65fdcc9d3b60_b.png& data-rawwidth=&737& data-rawheight=&160& class=&origin_image zh-lightbox-thumb& width=&737& data-original=&/a65fdcc9d3b60_r.png&&&/p&&p&进行Markov状态转移,不断调整隐含变量,即各个词汇位置的主题。第一部分是特定主题生成特定词汇的概率,第二部分是特定文档生成特定主题的概率。当我们考虑测试文档时,认为通过训练集训练已经把所有的&b&词汇&/b&&b&-&/b&&b&主题&/b&分布确定了下来,所以第一部分不用再进行调整,只调整第二部分。第一部分直接用已经估计出来的各个主题上的词汇分布带入即可。即:&/p&&img src=&/7debce708a1_b.png& data-rawwidth=&711& data-rawheight=&165& class=&origin_image zh-lightbox-thumb& width=&711& data-original=&/7debce708a1_r.png&&&br&&p&其中&img src=&///equation?tex=%5Cvarphi+_%7Bk%2Ct%7D& alt=&\varphi _{k,t}& eeimg=&1&& 是通过训练集合训练出的词汇项在特定主题上的概率分布~~&/p&&p&如果想了解详细内容,可以参考文献:《Finding Scientific Topics》, Thomas L.Griffths and Mark Steyvers,2004. &/p&
因为最近我也遇到类似的问题,所以就特地用心去了解了一下LDA的工作原理也顺便来解答一下这位小哥的困惑。实际上LDA主题模型是一种对文本进行无监督聚类的方法,每一个主题实际上对应的就是一个类(注意理解这句话),而当每个文档被解释成基于各个主题的一…
David Blei关于LDA的原论文里,参数推导使用的是变分推断,里面就涉及了EM。看我的回复:&a href=&/question//answer/?from=profile_answer_card& class=&internal&&如何才能看得懂变分贝叶斯方法(Variational Bayesian)? - 李政文的回答&/a&
David Blei关于LDA的原论文里,参数推导使用的是变分推断,里面就涉及了EM。看我的回复:
有时,如果我们的任务并不在topic本身的时候,比如只是为了文本聚类、分类或是推荐什么的,这个时候主题的个数相对来说可以比较任意,宁可多一点,也不要少一点;&br&但有时,如果我们的任务就是着眼于topic本身,比如我们就是想挖掘一些有意义的topic来做主题(事件)探测之类的,那么topic个数就比较要紧了。&br&&br&从模型的角度解决这个主题个数的话,可以在LDA的基础上融入&b&嵌套中餐馆过程(nested Chinese Restaurant Process)&/b&,&b&印度自助餐厅过程(Indian Buffet Process)&/b&等。因此就诞生了这样一些主题模型:&br&&b&1. hierarchical Latent Dirichlet Allocation (hLDA) &/b& (2003_NIPS_Hierarchical topic models and the nested Chinese restaurant process)&br&&b&2. hierarchical Dirichlet process (HDP) &/b& (2006_NIPS_Hierarchical dirichlet processes)&br&&b&3. Indian Buffet Process Compound Dirichlet Process (ICD)&/b&
(2010_ICML_The IBP compound Dirichlet process and its application to focused topic modeling)&br&&b&4. Non-parametric Topic Over Time&/b&&b& (npTOT) &/b& (2013_SDM_A nonparametric mixture model for topic modeling over time)&br&5. &b&collapsed Gibbs Samplingalgorithm for the Dirichlet Multinomial Mixture Model (GSDMM)&/b&
(2014_SIGKDD_A Dirichlet Multinomial Mixture Model-based Approach for Short Text Clustering)&br&&br&这些主题模型都被叫做&b&非参数主题模型(Non-parametric
Topic Model)&/b&,最初可追溯到David
M. Blei于2003年提出hLDA那篇文章(2003_NIPS_Hierarchical topic models and the nested Chinese restaurant process)。非参数主题模型是基于贝叶斯概率的与参数无关的主题模型。这里的参数无关主要是指模型本身可以“&b&随着观测数据的增长而相应调整&/b&”,即主题模型的主题个数能够随着文档数目的变化而相应调整,无需事先人为指定。&br&&br&但是实际效果(指的是挖掘出的主题的有意义程度的效果),其实是不太理想的。
有时,如果我们的任务并不在topic本身的时候,比如只是为了文本聚类、分类或是推荐什么的,这个时候主题的个数相对来说可以比较任意,宁可多一点,也不要少一点; 但有时,如果我们的任务就是着眼于topic本身,比如我们就是想挖掘一些有意义的topic来做主题…
面试被问到这个问题了。可是现实中我就是一点一点试主题个数的。求大神指点。
面试被问到这个问题了。可是现实中我就是一点一点试主题个数的。求大神指点。
很多答案提到从并行的角度看PLSA更优。&br&另一个点是,LDA作为bayesian model加了先验,在小数据量上就能取得不错的效果。但以百度业务数据的体量,需不需要加先验是一个值得思考的问题。毕竟有了大数定律发光发热,属于频率学派的plsa就模型本身也是有优势的。&br&&br&这也算LDA在很多实际工业场景常常没有outperform掉PLSA的原因之一吧。模型work不work更多要看与使用场景的契合度,而不是看模型本身多复杂。
很多答案提到从并行的角度看PLSA更优。 另一个点是,LDA作为bayesian model加了先验,在小数据量上就能取得不错的效果。但以百度业务数据的体量,需不需要加先验是一个值得思考的问题。毕竟有了大数定律发光发热,属于频率学派的plsa就模型本身也是有优势的…
这个问题在《LDA漫游指南》一书中做了很好的解答,详见第4章第4.2节&br&topic number K:许多读者问,如何设置主题个数,其实现在没有特别好的办(HDP等较为复杂的模型可以自动确定这个参数,但是模型复杂,计算复杂),目前只有交叉验证(cross validation),通过设置不同的K值训练后验证比较求得最佳值,我的建议是一开始不要设置太大而逐步增大实验,Blei在论文《Latent Dirichlet Allocation》提出过一个方法,采用设置不同的topic数量,画出topic_number-perplexity曲线;Thomas L. Griffiths等人在《Finding scientific topics》也提出过一个验证方法,画出topic_number-logP(w|T)曲线,然后找到曲线中的纵轴最高点便是topic数量的最佳值。有兴趣的读者可以去读读这两篇论文原文的相应部分。这个参数同时也跟文章数量有关,可以通过一个思想实验来验证:设想两个极端情况:如果仅有一篇文章做训练,则设置几百个topic不合适,如果将好几亿篇文章拿来做topic model,则仅仅设置很少topic也是不合适的。
这个问题在《LDA漫游指南》一书中做了很好的解答,详见第4章第4.2节 topic number K:许多读者问,如何设置主题个数,其实现在没有特别好的办(HDP等较为复杂的模型可以自动确定这个参数,但是模型复杂,计算复杂),目前只有交叉验证(cross validation)…
实际上用collapsed Gibbs sampling对模型进行inference的时候,最终估计的结果就是phi,所有单词在主题上的分布,和theta,所有主题在文档上的分布。&br&&br&理解collapsed Gibbs sampling的关键点在于理解这个采样过程到底是在对什么东西采样。没错,就是z向量,也就是生成语料库所有词的隐含主题。因为隐含主题z和词是一一对应的,所以很容易就能够用z向量推算出phi和theta了。
实际上用collapsed Gibbs sampling对模型进行inference的时候,最终估计的结果就是phi,所有单词在主题上的分布,和theta,所有主题在文档上的分布。 理解collapsed Gibbs sampling的关键点在于理解这个采样过程到底是在对什么东西采样。没错,就是z向量,…
你们搞笑呢?&br&&br&&a href=&///?target=https%3A//en.wikipedia.org/wiki/Conjugate_prior& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&en.wikipedia.org/wiki/C&/span&&span class=&invisible&&onjugate_prior&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&先验后验分布属于同一类型的分布,则称conjugate。
你们搞笑呢?
先验后验分布属于同一类型的分布,则称conjugate。
从准备好语料入手 脚本修改执行比较简单 如果想做监督版的Labeled LDA请再对语料做好标记
有时间可以再详细说明
从准备好语料入手 脚本修改执行比较简单 如果想做监督版的Labeled LDA请再对语料做好标记 有时间可以再详细说明
已有帐号?
无法登录?
社交帐号登录}

我要回帖

更多关于 lda 确定最优主题数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信