【LDA】吉布斯采样

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

吉布斯采样是用条件概率得到联合概率分布
其实是得到我们想要东西的近似解

目录

  • 1 蒙特卡罗
  • 2 马尔科夫链
  • 3.MCMC采样
  • 4 MH采样
  • 5 吉布斯采样

1 蒙特卡罗

蒙特卡洛方法是为了解决一些不太好求解的求和或者积分问题。
在这里插入图片描述
其实就是一个近似方法,通过采样的多个样本代替原本的连续函数,帮助我们把这个式子解出来。
对于一些常见的概率分布p(x),如正态分布等,我们先通过一些公式将其转换为0-1之间的数,(均一化处理嘛,)然后进行采样。
对于不太常见的概率分布f(x),我们用一个常见的概率分布(如高斯分布)q(x)把他蒙上,就是让 f(x)<=k*q(x),k是常数。
然后对p(x)进行采样得到z0,,对0到kq(z0)之间均匀分布采样得到y0,要求接受的样本点(z0,y0)不能落在f(z0)和kq(z0)之间,就是下图灰色区域,灰色是拒绝区域。(图来自参考链接)
在这里插入图片描述这里其实我还是不太理解怎么就可以用不断的接受拒绝q来模拟p了,
最终的结果公式:(蒙特卡洛一般形式 p是概率分布,f是要求积分的公式,n是采样n次)
在这里插入图片描述
参考:MCMC(一)蒙特卡罗方法

2 马尔科夫链

马尔科夫链接触过很多次了,就是说下一个时刻的状态只依赖于前一个时刻的状态
马尔科夫状态转移矩阵P,我们假设其中p(i,j)是状态i到状态j转移的概率,比如状态i是吃饭,状态j是拉肚子,那么p(i,j)==0.35就是吃饭后拉肚子的概率是0.35.
马尔科夫链的一个性质是,经过非常多次状态转换后,我们得到的最终的状态分布和初始状态分布关系不大,只和状态转移矩阵有关最终的状态概率分布比较稳定

要求:
非周期的马尔科夫链,如果是周期的不会收敛。
任意两个状态是联通的,就是通过有限个步骤可以到达的。
马尔科夫链的状态数可以是有限的或者是无限的(无限的比如连续函数)
如果上一个状态向量T,则最终稳定时的状态分布 TP=T,T为马尔科夫链的平稳分布。

马尔科夫链的采样:
1.得到状态转移矩阵P,采样(任意简单概率分布都可以)得到初始状态概率分布x0,设置状态转移次数阈值n1,需要的样本个数n2
2.for t =0 to n1+n2-1 ,从条件概率分布p(x|xt)中采样得到样本x t+1;
我们需要的平稳分布对应的样本集就是(xn1,xn1+1,xn1+2,…x n1+n2-1

就是要通过这些样本集,进行蒙特卡洛模拟,得到马尔科夫链中的平稳分布,就是TP中的T。

这里我不太理解,为什么需要蒙特卡洛模拟 ,这里最终采样得到的X应该都接近于T了,也就是说,只要把所有的样本累加除以n2就可以了吧?
这里如果带入蒙特卡洛一般公式的话这里的p是谁呢?怎么得到呢?

参考:MCMC(二)马尔科夫链

3.MCMC采样

MCMC采样是想要通过马尔科夫链的平稳分布获得马尔可夫链的转移矩阵。

MCMC算法过程如下:
1.获得平稳分布T,任意选定的转移矩阵Q,采样(任意简单概率分布)得到初始状态概率分布x0,设置状态转移次数阈值n1,需要的样本个数n2
2.for t =0 to n1+n2-1 ,
条件概率分布Q(x|xt) 中采样得到样本xt+1;
从均匀分布(0,1)采样u
如果u< α \alpha α(xt,x*), 其中 α \alpha α(xt,x*)=T(x*)Q(x * , xt),
则接受转移 xt -> x* 就是 xt+1=x*,
否则不接受转移, xt+1=xt
样本集就是(xn1,xn1+1,xn1+2,…x n1+n2-1)
这里的接受拒绝也没看懂,就是为什么要用u来进行比较,这里的u进行多次采样,采样本身应该是符合高斯分布的。只能大概有这个感觉。

链接:MCMC(三)MCMC采样和M-H采样

4 MH采样

MH采样解决了MC接受率过低的问题。
对上面的 α \alpha α(xt,x*)进行了改进,
在这里插入图片描述这样的话就是让u更容易小于 α \alpha α,更容易被接受,其余和 MCMC没有区别

5 吉布斯采样

定义:
吉布斯采样(英语:Gibbs sampling)是统计学中用于马尔科夫蒙特卡洛(MCMC)的一种算法,用于在难以直接采样时从某一多变量概率分布中近似抽取样本序列。该序列可用于近似联合分布部分变量的边缘分布计算积分(如某一变量的期望值)。某些变量可能为已知变量,故对这些变量并不需要采样。
来源:维基百科定义

吉布斯采样程序的每一步都涉及用某个变量相对于其他变量的条件概率分布中抽样得出的值代替该变量的值。

具体方法
  首先随便初始化一个组合,i.e. 学习+晚上+刮风,
  然后依条件概率改变其中的一个变量。
  具体说,假设我们知道晚上+刮风,我们给E生成一个变量,比如,学习-》吃饭。我们再依条件概率改下一个变量,根据学习+刮风,把晚上变成上午。类似地,把刮风变成刮风(当然可以变成相同的变量)。这样学习+晚上+刮风-》吃饭+上午+刮风。
  同样的方法,得到一个序列,每个单元包含三个变量,也就是一个马尔可夫链。然后跳过初始的一定数量的单元(比如100个),然后隔一定的数量取一个单元(比如隔20个取1个)。这样sample到的单元,是逼近联合分布的。
  
来源:csdn_吉布斯采样(Gibbs Sampling)

也就是,吉布斯采样采用的是坐标轴轮换(维度轮换)的思维进行采样,每次固定某个轴a,以其他轴为 条件 进行采样,预测a在t+1时刻的值。
参考:MCMC(四)Gibbs采样


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

相关文章

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

机器学习笔记之马尔可夫链蒙特卡洛方法——吉布斯采样 引言回顾&#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…

oracle sqlloader 的简单使用

1、EMP1 建表语句&#xff1a; CREATE TABLE EMP1 (EMPNO NUMBER(8) NOT NULL,ENAME VARCHAR2(10),HIREDATE DATE,JOB VARCHAR2(20),SAL NUMBER(8),DEPTNO NUMBER(8) NOT NULL ); 2、test.txt 数据文件&#xff1a; 1|Abandon1|2022-02-01|销售人员1|2500…

linux sql*loader-704,初见Oracle SqlLoader工具

因为大量的数据存在于文本文件中&#xff0c;需要导入到Oracle&#xff0c;有幸接触到神器SqlLoader. 在安装好Oracle的主机上单独运行sqlldr命令 sqlldr 将看到关于此工具的说明: 也只是简单的一个例子&#xff0c;帮助初次接触的你。 编写一个ctl文件&#xff0c;Oracle数据库…

mysql sql loader_Sql Loader的简单使用

之前总结的关于SQL*Loader的用法&#xff0c;今天又用到&#xff0c;又翻出来看看 SQL*Loader 可将外部文件中的数据加载到Oracle DB的表中。它具有一个功能强大的数据分析引擎&#xff0c;因此对数据文件中数据的格式没有什么限制。 SQL*Loader 使用以下文件&#xff1a;输入数…

Linux中sql*loader-350,SqlLoader

Sqlloader的步骤 1) Oracle 数据库端必须已经建好了需要导入的数据表的结构 2) 存在数据源文件 3) 手工编辑一个XXX.CTL 的控制文件 4) 命令行加载数据 Sqlldr命令具体信息如下图 Sqlldr运行的一个具体例子 sqlldr userid=user1/123456 control=bcp1.ctl log=log/bcp1.log bad=…

如何使用SqlLoader导入数据

Oracle 使用sqlloader导入数据非常方便,下面是我的导入步骤&#xff1a; 第一步&#xff0c;检查机器安装了sqlldr.exe没&#xff1f; 2、建一张表 CREATE TABLE student1 ( sname varchar (20), sage INTEGER, semall varchar (20), sphone VARCHAR (20), saddress varchar (…

MyBatis select标签

在 MyBatis 中&#xff0c;select 标签是最常用也是功能最强大的 SQL 语言&#xff0c;用于执行查询操作。 select 示例语句如下。 SELECT id,NAME,url FROM website WHERE NAME LIKE CONCAT (‘%’,#{name},‘%’) 以上是一个 id 为 selectAllWebsite 的映射语句&#xff0…

MyBatis标签对postgreSQL中returning返回参数的处理

mybatis中用标签处理SQL语句时&#xff0c;遇到pgsql中比较特殊的returning *。 当INSERT时会返回returning后的字段&#xff0c;但是在mybatis中使用INSERT("${sql}")时会遇到如下错误 ps&#xff1a; Mapper method com.lingtu.mapper.EventMapper.insert has an u…

MyBatis 配置文件标签

文章目录 MyBatis 配置文件标签1. properties2. settings3. plugins4. typeAliases5. environments6. mappers MyBatis 配置文件标签 MyBatis 的全局配置文件习惯上命名为&#xff1a;mybatis-config.xml &#xff0c;此文件名仅仅是建议&#xff0c;并非是强制要求。配置文件存…