Gibbs Sampler
Example: Sampling from a bivariate a Normal distribution
目标函数p(x)是一种规范化形式,表示如下:
均值是:
方差是:
为了使用吉布斯采样从这个分布中采样,我们需要有变量/维度x1和x2的条件分布:
是第二个维度的前一个状态,是从
中得到的第一个维度的状态。有差异的原因是更新x1和x2用的是(t-1)和t时刻的状态,在上一节中的算法大纲第三步可以看出来。第t次迭代,我们首先以变量x2的最近状态即第(t-1)次迭代结果为条件,为x1采样一种新状态。然后再以第t次迭代得到的x1的最新状态为条件采样得到变量x2。
经过一些数学推导(http://fourier.eng.hmc.edu/e161/lectures/gaussianprocess/node7.html),我们发现目标正态分布的两个条件分布是:
每一个都是单变量的正态分布,其中均值依赖条件变量的最近状态的值,方差依赖两个变量之间的目标方差。
使用上述描述的变量x1和x2的条件概率,我们下面采用matlab实现吉布斯采样,输出的采样如下:
clear all
close all
clc
%seed 用来控制 rand 和 randn
% 如果没有设置seed,每次运行rand或randn产生的随机数都是不一样的
% 用了seed,比如设置rand('seed',0);,那么每次运行rand产生的随机数是一样的,这样对调试程序很有帮助
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
rand( 'seed' , 12345 );
nSamples = 5000 ;
mu = [ 0 0 ]; % TARGET MEAN目标均值
rho=[ 1 0.8 ; 0.8 1 ]; % 目标方差
%% INITIALIZE THE GIBBS SAMPLER
propSigma = 1 ; % PROPOSAL VARIANCE
minn = [- 3 - 3 ];
maxx = [ 3 3 ];
%% INITIALIZE SAMPLES
x = zeros(nSamples, 2 );
x( 1 , 1 ) = unifrnd(minn( 1 ), maxx( 1 ));%unifrnd生成连续均匀分布的随机数
x( 1 , 2 ) = unifrnd(minn( 2 ), maxx( 2 ));
dims = 1 : 2 ; % INDEX INTO EACH DIMENSION 每一维度数组索引
%% RUN GIBBS SAMPLER
for t= 2 :nSamples
T=[t- 1 ,t];
for iD= 1 : 2
i=iD+ 1 ;
if (i> 2 )
i= 1 ;
end
muCond = mu(iD) + rho(i,iD)*(x(T(iD),i)-mu(i));%计算均值=μ( 1 )+ρ( 21 )*(x(n, 2 )-μ( 2 )),其中x(n, 2 )代表样本第n个数据的第二维
var Cond = sqrt( 1 -rho(i,iD)^ 2 );%计算方差
x(t,iD) = normrnd(muCond, var Cond);%正态分布随机函数,计算得到当前第t个数据的第 1 维数据value
end
end
% DISPLAY SAMPLING DYNAMICS
figure;
h1 = scatter(x(:, 1 ),x(:, 2 ), 'r.' );%scatter描绘散点图,x为横坐标,y为纵坐标
% CONDITIONAL STEPS/SAMPLES
hold on;%画出前 3 个采样点
for t = 1 : 3
plot([x(t, 1 ),x(t+ 1 , 1 )],[x(t, 2 ),x(t, 2 )], 'k-' );
plot([x(t+ 1 , 1 ),x(t+ 1 , 1 )],[x(t, 2 ),x(t+ 1 , 2 )], 'k-' );
h2 = plot(x(t+ 1 , 1 ),x(t+ 1 , 2 ), 'ko' );
end
h3 = scatter(x( 1 , 1 ),x( 1 , 2 ), 'go' , 'Linewidth' , 3 );
legend([h1,h2,h3],{ 'Samples' , '1st 50 Samples' , 'x(t=0)' }, 'Location' , 'Northwest' )
hold off;
xlabel( 'x_1' );
ylabel( 'x_2' );
axis square
|
输出结果:
参考文献:
https://theclevermachine.wordpress.com/2012/11/05/mcmc-the-gibbs-sampler/
http://fourier.eng.hmc.edu/e161/lectures/gaussianprocess/node7.html
http://blog.csdn.net/zb1165048017/article/details/51778694
本文转自stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1794340,如需转载请自行联系原作者
Gibbs Sampler相关推荐
- Gibbs sampling
Gibbs sampling(吉布斯采样)(资料集合) 维基百科,自由的百科全书: In statistics, Gibbs sampling or a Gibbs sampler is a Mark ...
- Gibbs sampling [Gibbs采样]
关于Gibbs sampling, 首先看一下Wiki上的解释:Gibbs sampling or Gibbs sampler is an algorithm to generate a sequen ...
- MCMC:Gibbs 采样(matlab 实现)
MCMC: The Gibbs Sampler 多元高斯分布的边缘概率和条件概率 Marginal and conditional distributions of multivariate norm ...
- MCMC: Metropolis-Hastings, Gibbs and slice sampling
从标题中即已看出,Metropolis-Hastings.Gibbs and slice sampling是MCMC(基于马尔科夫链的蒙特卡洛采样算法)的变体及改进算法. With MCMC, we ...
- Collapsed Gibbs Sampling
(The contents of this post are largely due to a conversation with Percy Liang at ACL.) I'm a big fan ...
- 随机采样和随机模拟:吉布斯采样Gibbs Sampling
2016年05月12日 00:24:21 阅读数:45658 http://blog.csdn.net/pipisorry/article/details/51373090 吉布斯采样算法详解 为什么 ...
- 三步完成吉布斯采样Gibbs sampling
吉布斯采样的具体执行过程只需要三个步骤,非常非常简单好理解,其它相关的背景知识能帮助加深理解. 一.Preliminaries Monte Carlo methods 它是很宽泛的一类计算方法,依赖重 ...
- 【ML】线性回归的吉布斯采样(Gibbs Sampling)实现(python)
导航 Bayesian Linear Regression Gibbs Sampling Derving a Gibbs sampler Update for β0\beta_0β0 Update ...
- 随机采样和随机模拟:吉布斯采样Gibbs Sampling实现高斯分布参数推断
http://blog.csdn.net/pipisorry/article/details/51539739 吉布斯采样的实现问题 本文主要说明如何通过吉布斯采样来采样截断多维高斯分布的参数(已知一 ...
最新文章
- torch 特征对齐
- GRE核心词汇助记与精练-List11弯、折、扭
- beanpostprocessor与@autowired的关系
- Kestrel的ListenAnyIP和ListenLocalhost的区别
- access update语句执行_SQL Server与Access数据库sql语法十大差异
- 信息学奥赛一本通C++语言——1012:计算多项式的值
- 外媒:苹果聘请更多司机在加州测试其自动驾驶汽车
- 在SQL Server中插入IN-T-SQL语句
- android 生成apk名字自动已,Jenkins打包android应用时自动签名apk详解
- 【Oracle】ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired
- Oracle VM VirtualBox 随系统自动启动虚拟机的方法
- 美国欲投 2.58 亿美元与中国争夺超算霸主地位
- 【Python】【有趣的模块】【requests】【一】HTTP头信息总结
- fiddler——一款莱斯的抓包工具
- JAVA - 银行卡认证
- windows server 2008 进行多域名指向同一个ip
- 工作手册 会计核算制度 目录 1. 会计核算管理制度	1 2. 会计档案管理办法	4 1.会计核算管理制度 8. 1.采取借贷记账法记账,采用权责发生制,即凡是收益已经实现,用已经发生,不论款
- 浅谈微分求导+泰勒展开+生成函数
- 后台启动elastisearch-head,避免后台启动es head在关闭shell后es head自动关闭,网上一大堆错误的,这个是正解,来自互联网
- 学生管理系统(JSP+Servlet+MySQL)