当前位置:首页 > 代码 > 正文

lda代码gibbs(lda操作码)

admin 发布:2022-12-19 22:29 156


今天给各位分享lda代码gibbs的知识,其中也会对lda操作码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

LDA在短文本分类方面的扩展模型有哪些

针对短文本存在的稀疏问题,有一系列的算法被提出。可以大致分为三类。第一类采用一种的简单的假设去学习隐含的主题,可以认为是基于窗口的算法,一个窗口内的词具有同一主题或者共现的词具有相同的主题,代表算法Dirichlet Multinomial Mixture (DMM) in conference KDD2014, Biterm Topic Model (BTM) in journal TKDE2016。第二类算法可以成为伪长文档算法,主要是把短文本聚合成伪长文档来增强词的共现信息,代表算法有Pseudo-Document-Based Topic Model (PTM) in conference KDD2016, Self-Aggregation-Based Topic Model (SATM) in conference IJCAI2015。 第三类是通过外部语料(如词嵌入)增强词的语义信息,代表算法有Generalized P´olya Urn (GPU) based Dirichlet Multinomial Mixturemodel (GPU-DMM) in conference SIGIR2016, Generalized P´olya Urn (GPU) based Poisson-based Dirichlet Multinomial Mixturemodel (GPU-PDMM) in journal TIS2017 and Latent Feature Model with DMM (LF-DMM) in journal TACL2015.。

这些算法的源代码都可以在这个基于JAVA的包里获取到网页链接。

pattern recognition and machine learning这本书怎么看

作者:Richardmore

这本书可以说是机器学习的经典学习之作。以前在上机器学习这么课的时候,很多细节还没联系到,结果在读论文中就显得捉襟见肘。本文打算理清楚这本书的脉络,也顺便为学习机器学习的人打下一个学习路线图。

1. 排除两块内容

现排除第五章的内容神经网络,之所以把神经网络先单列出来,原因一是一个比较独立的研究脉络,二是因为这部分因为深度学习的原因太热了,所以我认为在学习机器学习中把神经网络单列出来学习,在交大的研究生课程安排中,神经网络是机器学习的后续课程。

对于第6,7章,也不在下面的学习路线中,因为这部分是关于核技巧方面的,主要是就是高斯过程回归,高斯过程分类以及SVM等内容。

2. 一个概率图框架为中心视角

排除了上面几章的内容,PRML书中可以用下面的学习路线图覆盖,通过这个图可以理清楚了各个内容的不同角色。

img src="" data-rawwidth="1888" data-rawheight="412" class="origin_image zh-lightbox-thumb" width="1888" data-original=""

说明:

(1)一般模型中都会有隐变量因此,,因此对于P(X)的采用MLE学习的另一个技巧,便是第九章 EM算法。条件是在M步时,Q要可以被analytically computed。

(2)至于为什么近似,Exact Inference is hard we resort to approximation

3. 隐变量技巧

下面我们看看另外一个视角:隐变量技巧。隐变量不仅可以使得模型的表达能力丰富起来,而且通常对于隐变量往往富有一定的实际意义。

img src="" data-rawwidth="1764" data-rawheight="422" class="origin_image zh-lightbox-thumb" width="1764" data-original=""

说明:

(1)这里所谓的结合模型中,在PRML中最后一章仅仅提到了以加法的方式进行模型集合,也就是mixture of experts,在论文Hinton G E. Training products of experts by minimizing contrastive divergence[J]. Neural computation, 2002, 14(8): 1771-1800. 提出了product of experts 模型,也就是以乘法的方式进行结合,RBM就是一种特殊的product of experts 模型,而高斯混合模型便是加法模型的代表。

(2)隐变量的技巧是机器学习中一种重要的技巧,隐变量的加入不仅仅增加了模型的表达能力,而且,隐变量还可以被赋予某种特殊的意义,比如RBM模型中隐变量h被当成显变量v的特征抽象。这当然归根结底是因为隐变量模型确实是现实世界真实存在的情况,unobserved but important variables do exist! 当然隐变量的引入也为模型的推断带来了新的挑战,有很多比较好的隐变量模型往往找不到很高效的方法,而被限制着。

4. 例子说明

下面分别从上面两个视角来分析RBM模型,贝叶斯线性回归和序列模型。

4.1 RBM模型

RBM模型是一个无向2层对称的图模型,从隐变量的视角来看,它是一个以乘法方式结合的distributed models。当然隐变量的引入增加了模型的复杂性和表达能力,但是也为学习,推断带来了问题。对于RBM的参数学习,因为是无向图,所以采用MLE最大化P(X),但是由于此时P(X,Z)难以评估,所以

img src="" data-rawwidth="834" data-rawheight="94" class="origin_image zh-lightbox-thumb" width="834" data-original=""

很难计算,没有在RBM的学习中不能像高斯混合模型那样可以采取EM算法。因此只能采取最为标准的做法,求取P(X)的梯度,结果梯度公式如下:

img src="" data-rawwidth="800" data-rawheight="90" class="origin_image zh-lightbox-thumb" width="800" data-original=""

然而对于计算后面的model部分的积分需要知道模型的概率分布,评估模型的概率分布需要计算一个标准化的分母,难以计算。因此就需要依赖近似,由于p(v|h),p(h|v)都是可以分析公式表达,因此采用Gibbs sampler来数值逼近积分。当然后来Hinton G E. Training products of experts by minimizing contrastive divergence[J].发现对于这一部分,Gibbs sampler 不需要多部的迭代,一次迭代就可以了,从而使的训练RBM的时间代价大大降低了,后来(A fast learning algorithm for deep belief nets,2006)提出了贪婪式的训练多层DBN(stacked RBM),每层都是训练RBM,从而使的深度学习焕发新的活力(Reducing the dimensionality of data with neural networks,2006)。

4.2 贝叶斯线性回归Bayesian Linear Regression BLR

这个模型是最为基础的,这个模型在PRML中,利用直接推断,变分法推断,MCMC采样都是可以做的;因此便于比较不同算法得到的结果。之前,本来打算在这里以LDA主题模型来举例,虽然LDA的EM算法, 变分法,以及Gibbs sampling 都是可以做的,但是模型太复杂,所以果断放弃了,以BLR模型作为例子说明。

BLR是一个有向图模型,是一个典型的贝叶斯网络(虽然简单一点)。如果以一个贝叶斯的视角来看,其中的隐变量便是线性参数w,以及各种超参数α,β.....,在贝叶斯的处理视角之下,这些都会赋予一个先验分布。当然,有些模型书中也提到,有不同层次上的贝叶斯网络。有的是仅仅对参数w赋予一个先验分布,而对于其他的参数(hyperparameter)仅仅是作为模型参数,就是假设是一个渡固定的数值,然后再通过learn evidence function,其实说白了就是MLE,来寻找最佳的超参数α,β....。相比于把线性参数w,以及各种超参数α,β.....全部作为放入到贝叶斯网络中,这样的做法显然简化了模型,降低了贝叶斯网络的复杂性。这个技巧也在多处的论文中出现。

从隐变量的角度来看,由于BLR模型相对简单,其中并没有随机隐变量,仅仅是一些参数w,以及各种超参数α,β..的环境隐变量。

4.3 序列模型:隐马尔可夫链HMM与条件随机CRF

隐马尔可夫链HMM这个模型是一个有向图模型,典型的贝叶斯网络,只不过这个网络是一个线性链(linear chains),因此可以进行分析上推断,要知道对于一般网络,并不存在通用的实用的inference算法。因为HMM是一个有向图模型。但是(1)在PRML书中,以及李航《统计学习》中并没有把其当作一个贝叶斯网络来进行处理,对所有的参数比如发射概率,转移矩阵概率都是模型的参数,而不是通过赋予一个先验分布,从而纳入到贝叶斯网络框架之中。因此对于模型而言,关键的便是通过MLE最大化P(X)来学习模型的参数,因为这里的有隐变量,因此在PRML,以及《统计学习》中都是通过EM算法做的。(2)其实,HMM是一个典型的线性链式的贝叶斯网络,因此对于通过对其参数赋予先验分布,进而从贝叶斯的角度,来对模型进行推断是一个非常自然的想法。我在论文Sharon Goldwater, Thomas L Griffiths 论文 A Fully Bayesian Approach to Unsupervised Part-of-Speech Tagging,中作者采用了Bayesian HMM 重新做了POS任务。作者在文中还详细罗列了Bayesian HMM 相比普通的HMM的优点:(a)可以使用先验知识,例如在POS中语言的认知可以加入到先验分布之中,而且(b)贝叶斯的推断,是通过一个后验分布推断参数,相比MLE点估计,会更加准确。对于贝叶斯的推断,作者在文中使用了Gibbs sample抽样实现了数值采样推断模型。最后作者比较了Gibbs sample+Bayesian HMM和普通的HMM +EM,在POS任务效果更加好。另外,对于本论文的作者Thomas L Griffiths,第一次接触这个学者,是在读Gibbs sample in LDA这篇文章,作者推导了LDA的各种的条件分布,然后基于Gibbs sample 进行采样,记得Github上有Java版的实现代码,其推导十分严谨,并且有代码辅助,是学习LDA的一个捷径。在近似推断方面可以看出Thomas L Griffiths是一个坚定的数值采样学派,而LDA的开山之作《Latent Dirichlet Allocation 》的作者David M. Blei,看了作者部分文章以后,发现这个人是在近似推断方面是一个变分法的坚定学派,在《Latent Dirichlet Allocation 》之中,便是通过变分法进行推断了,David M. Blei还写了一个关于变分法的入门讲义pdf,网上可以搜到。所以回看我们概率图视角,做机器学习推断是不可避免的,有的是变分法近似,有的是数值采样近似,也有的是EM算法试一试。至于选择哪一种,就看你的问题哪一个比较简单了。但是好像有的人对这些方面各有偏爱。

再说一下条件随机场CRF,相比与HMM,这也是一个序列模型,在很多的NLP任务中,CRF都是state of art 的算法,毕竟人家可以方便的特征工程嘛。但是这种日子被深度学习取代了,在NLP方面,RNN(递归神经网络)要比CRF表现更好,见我之前博文基于RNN做语义理解和词向量。先不说这么远,CRF的模型架构上是一个典型的无向的链式概率图模型,因此,(回看我们概率图的视角),CRF的关键问题便是如何进行学习了P(X),好在求其该模型直接求其梯度并没有太大的困难,具体可以参见李航的《统计学习》。

5 结束语

这篇文章,从概率图,隐变量两个视角对PRML中各个章节进行了串联,并以RBM,BLR,序列模型(HMMCRF)具体说明这种串联。

利用lda.collapsed.gibbs.sampler怎样去预测新的样本文档

一.主题模型

传统判断两个文档相似性的方法是通过查看两个文档共同出现的单词的多少,如TF-IDF等,这种方法没有考虑到文字背后的语义关联,可能在两个文档共同出现的单词很少甚至没有,但两个文档是相似的。

举个例子,有两个句子分别如下:

“乔布斯离我们而去了。”

“苹果价格会不会降?”

可以看到上面这两个句子没有共同出现的单词,但这两个句子是相似的,如果按传统的方法判断这两个句子肯定不相似,所以在判断文档相关性的时候需要考虑到文档的语义,而语义挖掘的利器是主题模型,LDA就是其中一种比较有效的模型。

在主题模型中,主题表示一个概念、一个方面,表现为一系列相关的单词,是这些单词的条件概率。形象来说,主题就是一个桶,里面装了出现概率较高的单词,这些单词与这个主题有很强的相关性。

怎样才能生成主题?对文章的主题应该怎么分析?这是主题模型要解决的问题。

首先,可以用生成模型来看文档和主题这两件事。所谓生成模型,就是说,我们认为一篇文章的每个词都是通过“以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到的。那么,如果我们要生成一篇文档,它里面的每个词语出现的概率为:

这个概率公式可以用矩阵表示:

其中”文档-词语”矩阵表示每个文档中每个单词的词频,即出现的概率;”主题-词语”矩阵表示每个主题中每个单词的出现概率;”文档-主题”矩阵表示每个文档中每个主题出现的概率。

给定一系列文档,通过对文档进行分词,计算各个文档中每个单词的词频就可以得到左边这边”文档-词语”矩阵。主题模型就是通过左边这个矩阵进行训练,学习出右边两个矩阵。

主题模型有早起使用SVD的LSA(隐形语义分析),然后引入基于概率的pLSA(ProbabilisticLatent Semantic Analysis),其参数学习采用EM算法和后来改进PLSA,引入hyperparameter的LDA(Latent Dirichlet Allocation),其参数学习主要采用EM和Gibbs sampling,下面主要介绍LDA。

二.LDA

LDA要干的事情简单来说就是为一堆文档进行聚类(所以是非监督学习),一种topic就是一类,要聚成的topic数目是事先指定的。聚类的结果是一个概率,而不是布尔型的100%属于某个类。国外有个博客上有一个清晰的例子,直接引用:

Suppose you have the following set of sentences:

I like to eat broccoli and bananas.

I ate a banana and spinach smoothie for breakfast.

Chinchillas and kittens are cute.

My sister adopted a kitten yesterday.

Look at this cute hamster munching on a piece of broccoli.

What is latent Dirichlet allocation? It’s a way of automatically discovering topics that these sentences contain. For example, given these sentences and asked for 2 topics, LDA might produce something like

Sentences 1 and 2: 100% Topic A

Sentences 3 and 4: 100% Topic B

Sentence 5: 60% Topic A, 40% Topic B

Topic A: 30% broccoli, 15% bananas, 10% breakfast, 10% munching, … (at which point, you could interpret topic A to be about food)

Topic B: 20% chinchillas, 20% kittens, 20% cute, 15% hamster, … (at which point, you could interpret topic B to be about cute animals)

上面关于sentence 5的结果,可以看出来是一个明显的概率类型的聚类结果(sentence 1和2正好都是100%的确定性结果)。

再看例子里的结果,除了为每句话得出了一个概率的聚类结果,而且对每个Topic,都有代表性的词以及一个比例。以Topic A为例,就是说所有对应到Topic A的词里面,有30%的词是broccoli。在LDA算法中,会把每一个文档中的每一个词对应到一个Topic,所以能算出上面这个比例。这些词为描述这个Topic起了一个很好的指导意义,我想这就是LDA区别于传统文本聚类的优势吧。

LDA整体流程

先定义一些字母的含义:

文档集合D,topic集合T

D中每个文档d看作一个单词序列 w1,w2,...,wn ,wi表示第i个单词,设d有n个单词。(LDA里面称之为word bag,实际上每个单词的出现位置对LDA算法无影响)

D中涉及的所有不同单词组成一个大集合VOCABULARY(简称VOC)

LDA以文档集合D作为输入(会有切词,去停用词,取词干等常见的预处理,略去不表),希望训练出的两个结果向量(设聚成k个Topic,VOC中共包含m个词):

对每个D中的文档d,对应到不同topic的概率θd pt1,..., ptk ,其中,pti表示d对应T中第i个topic的概率。计算方法是直观的,pti=nti/n,其中nti表示d中对应第i个topic的词的数目,n是d中所有词的总数。

对每个T中的topic t,生成不同单词的概率φt pw1,..., pwm ,其中,pwi表示t生成VOC中第i个单词的概率。计算方法同样很直观,pwi=Nwi/N,其中Nwi表示对应到topic t的VOC中第i个单词的数目,N表示所有对应到topic t的单词总数。

LDA的核心公式如下:

p(w|d) = p(w|t)*p(t|d)

直观的看这个公式,就是以Topic作为中间层,可以通过当前的θd和φt给出了文档d中出现单词w的概率。其中p(t|d)利用θd计算得到,p(w|t)利用φt计算得到。

实际上,利用当前的θd和φt,我们可以为一个文档中的一个单词计算它对应任意一个Topic时的p(w|d),然后根据这些结果来更新这个词应该对应的topic。然后,如果这个更新改变了这个单词所对应的Topic,就会反过来影响θd和φt。

LDA算法开始时,先随机地给θd和φt赋值(对所有的d和t)。然后上述过程不断重复,最终收敛到的结果就是LDA的输出。用数学语言描述就是如下过程

转化成概率图模型表示就是

图中K为主题个数,M为文档总数,是第m个文档的单词总数。 是每个Topic下词的多项分布的Dirichlet先验参数, 是每个文档下Topic的多项分布的Dirichlet先验参数。是第m个文档中第n个词的主题,是m个文档中的第n个词。剩下来的两个隐含变量和分别表示第m个文档下的Topic分布和第k个Topic下词的分布,前者是k维(k为Topic总数)向量,后者是v维向量(v为词典中term总数)。

三.用Gibbs Sampling学习LDA

Gibbs Sampling的流程:LDA中的变量,和都是未知的隐含变量,也是我们需要根据观察到的文档集合中的词来学习估计的,那么如何来学习估计呢?这就是概率图模型的Inference问题。主要的算法分为exact inference和approximate inference两类。尽管LDA是最简单的Topic Model, 但是其用exact inference还是很困难的,一般我们采用approximate inference算法来学习LDA中的隐含变量。比如LDA原始论文Blei02中使用的mean-field variational expectation maximisation 算法和Griffiths02中使用的Gibbs Sampling,其中Gibbs Sampling 更为简单易懂。

Gibbs Sampling 是Markov-Chain Monte Carlo算法的一个特例。这个算法的运行方式是每次选取概率向量的一个维度,给定其他维度的变量值Sample当前维度的值。不断迭代,直到收敛输出待估计的参数。可以图示如下

初始时随机给文本中的每个单词分配主题,然后统计每个主题z下出现term t的数量以及每个文档m下出现主题z中的词的数量,每一轮计算,即排除当前词的主题分配,根据其他所有词的主题分配估计当前词分配各个主题的概率。当得到当前词属于所有主题z的概率分布后,根据这个概率分布为该词sample一个新的主题。然后用同样的方法不断更新下一个词的主题,直到发现每个文档下Topic分布和每个Topic下词的分布收敛,算法停止,输出待估计的参数和,最终每个单词的主题也同时得出。

用Gibbs Sampling 学习LDA参数的算法伪代码如下

四.LDA开源工具GibbsLDA++

GibbsLDA++说明文档写的很清晰易懂,这里只说下输出模型。

model_name.others:LDA模型的一些参数。α、βLDA的先验参数、ntopics主题数、liter采样迭代次数

model_name.phi:This file contains the word-topic distributions, i.e., p(wordw|topict). Each line is a topic, each column is a word in the vocabulary

model_name.theta:This file contains the topic-document distributions, i.e., p(topict|documentm). Each line is a document and each column is a topic.

model_name.tassign:This file contains the topic assignments for words in training data. Each line is a document that consists of a list of wordij:topic of wordij

model_name.twords:This file contains twords most likely words of each topic.

case study示例:

学习:src/lda -est -alpha 0.5 -beta 0.1 -ntopics 100 -niters 1000 -savestep 100 -twords 20 -dfile models/casestudy/ trndocs.dat

预测:src/lda -inf -dir models/casestudy/ -model model-01800 -niters 30 -twords 20 -dfile newdocs.dat

GibbsLDA++ 处理中文文本出现乱码

我试过用了UltraEdit,但是仍然不能正常转换。可行做法如下:把项目中跟文档读出和写入相关函数的编码方式从utf8改为Unicode就可以了。希望能有所帮助~

LDA漫游系列(四)-Gibbs Sampling

随机模拟方法有一个很酷的别名是蒙特卡罗方法。这个方法的发展始于20世纪40年代。

统计模拟中有一个很重要的问题就是给定一个概率分布p(x),我们如何在计算机中生成它的样本,一般而言均匀分布的样本是相对容易生成的,通过线性同余发生器可以生成伪随机数,我们用确定性算法生成[0,1]之间的伪随机数序列后,这些序列的各种统计指标和均匀分布Uniform(0,1)的理论计算结果非常接近,这样的伪随机序列就有比较好的统计性质,可以被当成真实的随机数使用。

而我们常见的概率分布,无论是连续的还是离散的分布,都可以基于Uniform(0, 1) 的样本生成,比如正态分布可以通过著名的 Box-Muller变换得到。其他几个著名的连续分布,包括指数分布,Gamma分布,t分布等,都可以通过类似的数学变换得到,不过我们并不是总这么幸运的,当p(x)的形式很复杂,或者p(x)是个高维分布的时候,样本的生成就可能很困难了,此时需要一些更加复杂的随机模拟方法来生成样本,比如MCMC方法和Gibbs采样方法,不过在了解这些方法之前,我们需要首先了解一下马尔可夫链及其平稳分布。

马尔可夫链通俗说就是根据一个转移概率矩阵去转移的随机过程(马尔可夫过程),该随机过程在PageRank算法中也有使用,如下图所示:

通俗解释的话,这里的每个圆环代表一个岛屿,比如i到j的概率是pij,每个节点的出度概率之和=1,现在假设要根据这个图去转移,首先我们要把这个图翻译成如下的矩阵:

上面的矩阵就是状态转移矩阵,我身处的位置用一个向量表示π=(i,k,j,l)假设我第一次的位置位于i岛屿,即π0=(1,0,0,0),第一次转移,我们用π0乘上状态转移矩阵P,也就是π1 = π0 * P = [pii,pij,pik,pil],也就是说,我们有pii的可能性留在原来的岛屿i,有pij的可能性到达岛屿j...第二次转移是,以第一次的位置为基础的到π2 = π1 * P,依次类推下去。

有那么一种情况,我的位置向量在若干次转移后达到了一个稳定的状态,再转移π向量也不变化了,这个状态称之为平稳分布状态π*(stationary distribution),这个情况需要满足一个重要的条件,就是 Detailed Balance 。

那么什么是 Detailed Balance 呢?

假设我们构造如下的转移矩阵:

再假设我们的初始向量为π0=(1,0,0),转移1000次以后达到了平稳状态(0.625,0.3125,0.0625)。

所谓的 Detailed Balance 就是,在平稳状态中:

为什么满足了Detailed Balance条件之后,我们的马尔可夫链就会收敛呢?下面的式子给出了答案:

下一个状态是j的概率,等于从各个状态转移到j的概率之和,在经过Detailed Balance条件变换之后,我们发现下一个状态是j刚好等于当前状态是j的概率,所以马尔可夫链就收敛了。

对于给定的概率分布p(x),我们希望能有便捷的方式生成它对应的样本,由于马尔可夫链能够收敛到平稳分布,于是一个很漂亮的想法是:如果我们能构造一个转移矩阵伪P的马尔可夫链,使得该马尔可夫链的平稳分布恰好是p(x),那么我们从任何一个初始状态x0出发沿着马尔可夫链转移,得到一个转移序列x0,x1,x2,....xn,xn+1,如果马尔可夫链在第n步已经收敛了,于是我们就得到了p(x)的样本xn,xn+1....

好了,有了这样的思想,我们怎么才能构造一个转移矩阵,使得马尔可夫链最终能收敛即平稳分布恰好是我们想要的分布p(x)呢?我们主要使用的还是我们的细致平稳条件(Detailed Balance),再来回顾一下:

假设我们已经又一个转移矩阵为Q的马尔可夫链(q(i,j)表示从状态i转移到状态j的概率),显然通常情况下:

也就是细致平稳条件不成立,所以p(x)不太可能是这个马尔可夫链的平稳分布,我们可否对马尔可夫链做一个改造,使得细致平稳条件成立呢?比如我们引入一个α(i,j),从而使得:

那么问题又来了,取什么样的α(i,j)可以使上等式成立呢?最简单的,按照对称性:

在改造Q的过程中引入的α(i,j)称为接受率,物理意义可以理解为在原来的马尔可夫链上,从状态i以q(i,j)的概率跳转到状态j的时候,我们以α(i,j)的概率接受这个转移,于是得到新的马尔可夫链Q'的转移概率q(i,j)α(i,j)。

假设我们已经又一个转移矩阵Q,对应的元素为q(i,j),把上面的过程整理一下,我们就得到了如下的用于采样概率分布p(x)的算法:

以上的MCMC算法已经做了很漂亮的工作了,不过它有一个小问题,马尔可夫链Q在转移的过程中接受率α(i,j)可能偏小,这样采样的话容易在原地踏步,拒绝大量的跳转,这是的马尔可夫链便利所有的状态空间要花费太长的时间,收敛到平稳分布p(x)的速度太慢,有没有办法提升一些接受率呢?当然有办法,把α(i,j)和α(j,i)同比例放大,不打破细致平稳条件就好了呀,但是我们又不能无限的放大,我们可以使得上面两个数中最大的一个放大到1,这样我们就提高了采样中的跳转接受率,我们取:

于是经过这么微小的改造,我们就得到了Metropolis-Hastings算法,该算法的步骤如下:

对于高维的情形,由于接受率的存在,Metropolis-Hastings算法的效率不够高,能否找到一个转移矩阵Q使得接受率α=1呢?我们从二维的情形入手,假设有一个概率分布p(x,y),考察x坐标相同的两个点A(x1,y1) ,B(x1,y2),我们发现:

基于以上等式,我们发现,在x=x1这条平行于y轴的直线上,如果使用条件分布p(y|x1)作为任何两个点之间的转移概率,那么任何两个点之间的转移满足细致平稳条件,同样的,在y=y1这条平行于x轴的直线上,如果使用条件分布p(x|y1) 作为,那么任何两个点之间的转移也满足细致平稳条件。于是我们可以构造平面上任意两点之间的转移概率矩阵Q:

有了上面的转移矩阵Q,我们很容易验证对平面上任意两点X,Y,满足细致平稳条件:

由二维的情形我们很容易推广到高维的情形:

所以高维空间中的GIbbs 采样算法如下:

关于lda代码gibbs和lda操作码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/27714.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载