吉布斯采样的简单描述

article/2025/9/19 10:34:26

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

这里通俗点的解释一下。首先,什么是sampling。sampling就是以一定的概率分布,看发生什么事件。举一个例子。甲只能E:吃饭、学习、打球,时间T:上午、下午、晚上,天气W:晴朗、刮风、下雨。现在要一个sample,这个sample可以是:打球+下午+晴朗。。。

问题是我们不知道p(E,T,W),或者说,不知道三件事的联合分布。当然,如果知道的话,就没有必要用gibbs sampling了。但是,我们知道三件事的conditional distribution。也就是说,p(E|T,W),p(T|E,W),p(W|E,T)。现在要做的就是通过这三个已知的条件分布,再用gibbs sampling的方法,得到joint distribution。

具体方法。首先随便初始化一个组合,i.e. 学习+晚上+刮风,然后依条件概率改变其中的一个变量。具体说,假设我们知道晚上+刮风,我们给E生成一个变量,比如,学习-》吃饭。我们再依条件概率改下一个变量,根据学习+刮风,把晚上变成上午。类似地,把刮风变成刮风(当然可以变成相同的变量)。这样学习+晚上+刮风-》吃饭+上午+刮风。

同样的方法,得到一个序列,每个单元包含三个变量,也就是一个马尔可夫链。然后跳过初始的一定数量的单元(比如100个),然后隔一定的数量取一个单元(比如隔20个取1个)。这样sample到的单元,是逼近联合分布的。

  • 什么是Gibbs Sampling

Gibbs Sampling是MCMC算法中的一种,用来构造多变量概率分布的随机样本,比如构造两个或多个变量的联合分布,求积分,期望。

  • 为什么需要Gibbs Sampling

这不是废话,肯定是积分,期望或者联合分布很难计算出来,通常情况下当前面三个问题是NP问题时才需要Gibbs Sampling。不然的话,直接计算就可以了嘛,既准确又快速,干嘛还要Gibbs Sampling呢。补充一句Gibbs Sampling只是(也只能)到近似解。

  • 应用场景

a、积分,期望,样本概率很难计算出来;b、条件概率很容易计算。具体一点的例子:受限玻尔兹曼机(RBM)的训练,贝叶斯网络,LDA都用到Gibbs Sampling。

  • 为什么Gibbs Sampling有效

当Gibbs Sapling算法执行多次之后,产生的样本服从真实样本的分布,即相当于直接从联合分布中采样。

  • Gibbs Sampling 算法 

二维Gibbs Sampling的马氏链转移

 

n维Gibbs Sampling算法

 观点:

1. We have a representation of p(x) and f(x), but integration is intractable. It turns out that if correctly sampled, only 10-20 points can be sufficient to estimate the mean and variance of a distribution. Of course, Samples must be independently drawn; Expectation may be dominated by regions of high probability, or high function values.[1]

Reference

[1] Lecture 1: Introduction - CUNY 

[2] LDA数学八卦

后记:为什么要写关于Gibbs Sampling的文章呢?首先Gibbs Sampling是有用滴,Gibbs Sampling在机器学习中主要用于学习阶段的推理,比如求期望(平均值)和积分;再者网上的关于Gibbs Sampling的博客写得不好,资料也不多。

转载于:https://www.cnblogs.com/peizhe123/p/5800711.html


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

相关文章

【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)+吉布斯采样

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

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

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

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 蒙特卡罗 蒙特卡洛方法是为了解决一些不太好求解的求和或者积分问题。 其实就是一个近似方法,通过采样的多个样本代替原…

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

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

三步完成吉布斯采样Gibbs sampling

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

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

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

吉布斯采样

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

随机采样和随机模拟:吉布斯采样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 使用以下文件:输入数…