吉布斯采样

article/2025/9/19 11:48:58

回顾一下MC 采样:

f(x)是已知 的概率分布函数,现在 找到一系列的x服从这个概率分布。也就是在f(x)当中抽取一些样本x。后来就提出了:

F(x)是f(x)的累积概率分布,只需 在0到1上均匀采样得到i,然后将这个样本带到F(x)的反函数当中得到Xi.这个Xi服从F(x)的概率分布那一定服从f(x)的累积概率密度分布。

现在面临的一个问题是:F(x)已经有了就能采出Xi,但是现在f(x)是已知的,对F(x)求积分不一定好求。

后来冯诺依曼提出了另一个方法,假设一个q(x),

 因为q(x)的积分比较好求,然后采样的方式是和前面的一样的。但是得到的Xi的hi符合mq(x)分布的,不服从f(x).

以mq(x)采样得到的样本只抽取其中的一小部分,以P的概率抽取,这样的方式称之为拒绝采样。

拒绝采样有时候的效率并不是很高,出现了MCMC采样,是基于马尔科夫链采样。

马尔科夫链的性质是:存在一种稳定的分布,如果能找到两个Π之间的转移概率,可以得到转移概率矩阵P,如果一个Π乘上转移矩阵P最后还是等于Π,因为最后的结果求的还是Π(x),假如在Πt达到了稳定分布,那么在Πt之后的Π都会服从Π(x)分布。因为要抽取的样本是服从Π(x)分布的样本,所以抽取的样本就是Πt之后的样本。就完成了一系列采样。

问题是怎么找到转移概率矩阵P,满足等式ΠP=Π,因为这个等式不好找到,所以就提出了细致平衡等式:

但是在细致平衡等式当中的难点是P还是不好找到,所以就出现了3式,在3式当中 黄色线部分式假设的,强行使得3等式成立,并且与2等式恒成立。

 

黄色圈出来的部分叫做接收概率

以这样的方式进行采样据满足了ΠP=Π 的等式。

如果接收概率比较小的时候怎么办,这种情况往往会出现在高维变量中。

 

 所以MCMC 的效率就不是很高,就出现了吉布斯采样。

以二位联合概率分布讲解。我们想得到一系列的x,y服从Π(x,y)分布。

Π(x,y)是折麽样的呢?在平面上任意找一个点(x,y),这个点的概率是Π(x,y),采样就是采平面里的点,使这些点的概率符合三维的分布。

现在在平面中任意找一个点A,计算A的概率:

上式是将联合分布转换成了条件分布,体哦阿健概率分布是一维的,联合概率分布是二维的。这样计算简单化了。

现在再假设点B,计算其概率。A,B两点的横坐标是一样的。

上面的两个式子存在很大的相同点,所以做一个等式:

所以经过简单的变换得到等式:

 满足细致平衡条件可以构造马尔科夫链进行采样。

 

上面式子经过重写得到:

上面的 这个式子就是一个典型的细致平衡条件。

如果现在有个点C,和A 是总表表相同的情况下得到的细致平衡条件:

那对任意一个点得到细致平衡条件:

 

 根据上面这个式子是否能够进行愉快的抽样?

对上面改的讲解过程进行总结:首先是构造马尔科夫链进行采样,至少是A到B,A到C是满足细致平衡条件的。因为出现了一个接受概率,但是并不知道再什么样的情况下接受,再什么样的情况下拒绝。但是我们之傲A到B  的转移概率是Π(y2|x1),这个转移矩阵式已知的,为什么呢?因为Π(x,y)是已知的,所以Π(y2|x1)就是已知的。得到的结论如下:

 现在回到:

任意一个点都能用上面的这个式子嘛?

假设点D,目前上面的推论是不能证明点D能使用这个式子。所以这个式子只允许再平行坐标轴方向上采样

最后得到结论:

吉布斯采样的步骤: 

 


http://chatgpt.dhexx.cn/article/0hexrWR9.shtml

相关文章

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

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

吉布斯抽样

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

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

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

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

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

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

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

oracle-sqlloader的简单使用

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

使用Sqlloader处理数据

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

oracle之sqlloader

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

oracle sqlloader 的简单使用

1、EMP1 建表语句: 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 数据文件: 1|Abandon1|2022-02-01|销售人员1|2500…

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

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

mysql sql loader_Sql Loader的简单使用

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

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导入数据非常方便,下面是我的导入步骤: 第一步,检查机器安装了sqlldr.exe没? 2、建一张表 CREATE TABLE student1 ( sname varchar (20), sage INTEGER, semall varchar (20), sphone VARCHAR (20), saddress varchar (…

MyBatis select标签

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

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

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

MyBatis 配置文件标签

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

Mybatis值trim标签

Mybatis具有实现动态SQL的能力,使用这个特性免不了会用到trim这个标签,trim标签的功能简单来说就是自定义格式拼凑SQL语句。 trim有4个属性: prefix:表示在trim包裹的SQL前添加指定内容 suffix:表示在trim包裹…

MyBatis foreach标签

前面我们学习了如何使用 Mybatis if、where、trim 等动态语句来处理一些简单的查询操作。对于一些 SQL 语句中含有 in 条件,需要迭代条件集合来生成的情况,可以使用 foreach 来实现 SQL 条件的迭代。 Mybatis foreach 标签用于循环语句,它很…

mybatis常用标签

一.定义sql语句 1.select 标签 属性介绍: (1)id :唯一的标识符. (2)parameterType:传给此语句的参数的全路径名或别名 例:com.test.poso.User或user (3)resultType :语句返回值类型或别名。注意&#xff…

Mybatis中标签大全

文章目录 一、标签分类 二、标签总结 1. 基础SQL标签 1.1 查询select 1.2 增删改 1.3 其他基础标签 1.3.1 sql 标签 1.3.2 include 标签 1.3.3 if 标签 1.3.4 别名 2. collection与association标签 3. resultMap标签 4. foreach标签 5. where标签 6. set标签 7.…