LDA-模型的实现-----吉布斯采样

article/2025/9/19 10:30:31

https://www.cnblogs.com/nlp-yekai/p/3858705.html?utm_source=tuicool&utm_medium=referral

算法 LDA Collapsed Gibbs Sampling

输入:文档集(分词后),K(主题数),α,β,iter_number(迭代次数)
输出:θ_mat(doc->topic)和 (topic->word)、tassign文件(topic assignment)

对于中文语料要首先分词,给定K个主题数目,alpha,beta和迭代次数的确定

输出:theta_mat(doc->topic)和phi_mat(topic->word),主题分布的文件

定义的统计量:

nw[][]:单词i分配给主题j,大小为V*K(词典的大小*主题个数)

nwsum[]:主题j中的单词数目,大小 为k

nd[][]:第i篇文档里被 指定第j个主题词的次数,大小为:M*K(文档数目*主题个数)

ndsum[]:文档i中的单词。大小为M

z[][]:每个单词的主题分布,大小为M*每篇文档的单词数(第M文档中第n个词被指定的主题的索引)

初始化阶段:

循环1:文档数目m

    循环2:文档中的单词数目n

                 (topic_index)主题_索引=主题随机指定

                 z[m][n]=topic_index

                 nw[word_id][topic_index]=++ 

                  nwsum[topic_index]++

                  nd[m][ topic_index]++

                  ndsum[m]++

初始化结束后的迭代重新采样的三部曲-1→采样公式重新分配+1→三重奏

collasped of Gibbs Sampling迭代阶段:(每次迭代有三个for循环)

for iter in iter_number{ //迭代iter_number次
   for (m, doc) in doc_set{ //m是doc编号,文档的编号
      for word in doc{ #文档中的单词
         t=从z[m][n]中取得当前word的主题编号(初始化来自随机)  
         令nw[word_id][t]、nwsum[t]、nd[m][t]三个统计量均−1  (-1三部曲的第一步)
          double p[] = new double p[K]
          for k in [0,1,2,...,K-1]{  //从0到K-1号每个主题计算概率

每个单词产生的概率估计值是对应事件的先验的伪计数和数据中的计数的和在整体计数中的比例

两个图可以进行对比说明。

//按照上述公式生成每个主题的概率存到临时概率数组p中

      }
  new_t = 输入数组p到算法4.1 cumulative method随机投掷  #产生的新的主题  ----采样是从该式体现出来
令nw[word_id][new_t]、nwsum[new_t]、nd[m][new_t]三个统计量均+1
          }
      }
}
输出阶段(也可以在迭代一半时候即可输出):
根据z数组输出文件tassign.txt
根据nw、nwsum、nd、ndsum套用公式(3.4)生成文件theta.txt和文件phi.txt
文件theta格式: 大矩阵文件,M行K列
文件phi格式: 大矩阵文件,K行V列

model文件就是算法4.2输出的这几个矩阵文件。如果输出了这几个文件,中断训练后,下次想再继续的时候:nw、nwsum、nd、ndsum这4
个统计量均从tassign文件中可以读取得到。

预测(predict):

另外,如果已经训练过一个model了,如果有一篇新文档,需要对其predict(预测)新文档上的主题分布,可以利用已经训练的trn_nw和trn_nwsum用以下公式推断,

trn_nw和trn_nwsum相当于起到了伪计数(pseudo count)的作用,公式后一项因子只与当前文档的主题词数计数有关,故不必加入已有训练过的(train)model的计数。此外,预测(predict)在不管是初始化还是迭代时只修改new_nw和new_nwsum统计量,其余采样过程都一样

由于trn_nw二维数组变量已经很大,因此new_nw变量对其影响不是特别的大,所以可以减少一些对文档预测时候的采样次数,通常情
况下,20次采样足矣。

-1→重新分配topic→+1三重奏,我将其形象比喻为在采样每个单词前,从各个统计量中抠掉该单词(及其主题),然后重新分

1.tassign文件(一行一个doc,冒号前是wordid,冒号后是topicid)

2.theta文件(矩阵文件:行号=doc idx,列号=topic idx)

3.phi文件(矩阵文件:行号=topic idx,列号=word idx)

4.wordmap文件(word→wordid)

nd[]----------------theta

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/uemRaCAD.shtml

相关文章

R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样

创建测试数据 第一步&#xff0c;我们创建一些测试数据&#xff0c;用来拟合我们的模型。我们假设预测变量和因变量之间存在线性关系&#xff0c;所以我们用线性模型并添加一些噪音。 trueA <- 5trueB <- 0trueSd <- 10sampleSize <- 31# 创建独立的x值x <- (…

马尔科夫过程与吉布斯采样

随机模拟(或者统计模拟)方法有一个很酷的别名是蒙特卡罗方法(Monte Carlo Simulation)。这个方法的发展始于20世纪40年代&#xff0c;和原子弹制造的曼哈顿计划密切相关&#xff0c;当时的几个大牛&#xff0c;包括乌拉姆、冯.诺依曼、费米、费曼、Nicholas Metropolis&#xf…

吉布斯采样的简单描述

几个可以学习gibbs sampling的方法1&#xff0c;读Bishop的Pattern Recognition and Machine Learning&#xff0c;讲的很清楚&#xff0c;但是我记得好像没有例子。2&#xff0c;读artificial Intelligence&#xff0c;2、3版&#xff0c;都有。但是我没读过。3&#xff0c;最…

【ML】线性回归的吉布斯采样(Gibbs Sampling)实现(python)

导航 Bayesian Linear RegressionGibbs SamplingDerving a Gibbs samplerUpdate for β 0 \beta_0 β0​Update for β 1 \beta_1 β1​Update for τ \tau τSynthetic dataGibbs sampler code downlaodReferences Bayesian Linear Regression 考虑只有一个自变量(indepen…

【机器学习】主题建模+隐狄利克雷分配模型(LDA)+吉布斯采样

【主题建模】 大数据时代&#xff0c;面对海量的数据&#xff0c;如果能知道它的主题是什么&#xff0c;从数据压缩的角度来看&#xff0c;我们可以通过很少量的主题来管理很大亮的文档数据集合&#xff0c;从而实现一个比较简洁的操作和管理文档集合的目的&#xff1b;除此之外…

【人工智能】对贝叶斯网络进行吉布斯采样

问题 现要求通过吉布斯采样方法&#xff0c;利用该网络进行概率推理&#xff08;计算 P(RT|SF, WT)、P2(CF|WT)的概率值&#xff09;。 原理 吉布斯采样的核心思想为一维一维地进行采样&#xff0c;采某一个维度的时候固定其他的维度&#xff0c;在本次实验中&#xff0c;假…

matlab bnt工具箱吉布斯采样,吉布斯采样——原理及matlab实现

原文来自:https://victorfang.wordpress.com/2014/04/29/mcmc-the-gibbs-sampler-simple-example-w-matlab-code/ 【注】评论区有同学指出译文理论编码有误,请参考更官方的文献,个人当时仅验证过红色字体部分理论与维基百科中二位随机变量吉布斯采样的结果是否对应,其余部分…

【LDA】吉布斯采样

吉布斯采样是用条件概率得到联合概率分布。 其实是得到我们想要东西的近似解 目录 1 蒙特卡罗2 马尔科夫链3.MCMC采样4 MH采样5 吉布斯采样 1 蒙特卡罗 蒙特卡洛方法是为了解决一些不太好求解的求和或者积分问题。 其实就是一个近似方法&#xff0c;通过采样的多个样本代替原…

机器学习笔记之马尔可夫链蒙特卡洛方法(四)吉布斯采样

机器学习笔记之马尔可夫链蒙特卡洛方法——吉布斯采样 引言回顾&#xff1a;MH采样算法基于马尔可夫链的采样方式细致平衡原则与接收率 MH采样算法的弊端吉布斯采样方法吉布斯采样的采样过程吉布斯采样的推导过程吉布斯采样的代码实现 引言 上一节介绍了将马尔可夫链与蒙特卡洛…

三步完成吉布斯采样Gibbs sampling

吉布斯采样的具体执行过程只需要三个步骤&#xff0c;非常非常简单好理解&#xff0c;其它相关的背景知识能帮助加深理解。 一、Preliminaries Monte Carlo methods 它是很宽泛的一类计算方法&#xff0c;依赖重复的随机采样去获得数值结果。a broad class of computational a…

MCMC笔记:吉布斯采样(Gibbs)

1 介绍 吉布斯采样是一种特殊的MH采样 MCMC笔记Metropilis-Hastings算法&#xff08;MH算法&#xff09;_UQI-LIUWJ的博客-CSDN博客 此时我们要采样的分布是一个高维的情况 吉布斯采样的思想就是一维一维地进行采样&#xff0c;采某一个维度的时候固定其他的维度 吉布斯采…

吉布斯采样

回顾一下MC 采样&#xff1a; f(x)是已知 的概率分布函数&#xff0c;现在 找到一系列的x服从这个概率分布。也就是在f(x&#xff09;当中抽取一些样本x。后来就提出了&#xff1a; F(x)是f(x)的累积概率分布&#xff0c;只需 在0到1上均匀采样得到i&#xff0c;然后将这个样本…

随机采样和随机模拟:吉布斯采样Gibbs Sampling

http://blog.csdn.net/pipisorry/article/details/51373090 吉布斯采样算法详解 为什么要用吉布斯采样 通俗解释一下什么是sampling。 sampling就是以一定的概率分布&#xff0c;看发生什么事件。举一个例子。甲只能E&#xff1a;吃饭、学习、打球&#xff0c;时间T&#xff1a…

吉布斯抽样

吉布斯采样是生成马尔科夫链的一种方法&#xff0c;生成的马尔科夫链可以用来做蒙特卡洛仿真&#xff0c;从而求得一个较复杂的多元分布。 吉布斯采样的具体做法&#xff1a;假设有一个k维的随机向量&#xff0c;现想要构造一条有n个样本的k维向量&#xff08;n样本马尔科夫序列…

从马尔科夫过程到吉布斯采样(附程序示例)

目标&#xff1a;如何采取满足某个概率分布的一组数据&#xff0c;比如如何给出满足标准正太分布的1000个点&#xff0c;当然该分布比较简单&#xff0c;生成满足此分布的1000个点并不难&#xff0c;对matlab&#xff0c;python 等都是一行语句的事&#xff0c;但是如果是一个不…

sqlloader导出数据指定分隔符_来一份数据库全家桶~

♫. ♪ ~ ♬..♩~ ♫. ♪..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩♫. ♪ ~ ♬..♩~ ♫. ♪..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩ 点击蓝字关注我们♫. ♪ ~ ♬..♩~ ♫. ♪..♩~ ♫. ♪ ~ ♬..♩..♩~ ♫. ♪ ~ ♬..♩..…

使用sqlloader导入数据(千万级)-oracle

前言&#xff1a;笔者业务场景&#xff1a;当前表无分区&#xff0c;需将数据导出&#xff0c;创建分区后&#xff0c;重新导入当前表&#xff1b;当然&#xff0c;该方法同样使用于普通的数据迁移&#xff0c;或新旧表数据同步&#xff08;表结构一致&#xff09; 一、涉及数…

oracle-sqlloader的简单使用

目录 使用场景 简单使用 编写ctl文件 执行命令 使用场景 当你拿到一个txt文件&#xff0c;里面的数据是用统一符号分割的&#xff0c;例如如下文件&#xff0c;就可以考虑使用sqlloader导入到oracle数据库。 简单使用 编写ctl文件 OPTIONS (skip1,rows128) -- sqlldr 命…

使用Sqlloader处理数据

Oracle数据导出工具sqluldr2可以将数据以csv、txt等文件格式导出&#xff0c;适用于大批量数据的导出&#xff0c;导出速度非常快&#xff0c;导出后可以使用Oracle SQL Loader工具将数据导入到数据库中。下面将介绍Sqluldr2和sqlldr在Windows平台下的数据处理过程。 一、获取…

oracle之sqlloader

oracle的sqlloader可以从文件批量的将数据插入到数据库中&#xff0c;避免了使用SQL一句一句插入给数据库带来的压力。在工作中&#xff0c;简单的使用了一下&#xff0c;并没有深入的研究&#xff0c;下面是一个例子。 ① 数据文件信息&#xff1a; tina&#xff0c;12,34…