上篇文章认识了马尔科夫蒙特卡洛方法,并简单了解了其中一个重要的方法---GibbsSampling。之前在读论文时多次遇见,未深入了解,现在终于知道它的真面目了。。。

也是一篇很好的文章,写的较简单易懂,对于我这样地初学者,再适合不过了!
转载自:http://cos.name/2013/01/lda-math-mcmc-and-gibbs-sampling/

1 随机模拟

随机模拟(或者统计模拟)方法有一个很酷的别名是蒙特卡罗方法(MonteCarloSimulation)。这个方法的发展始于20世纪40年代,和原子弹制造的曼哈顿计划密切相关,当时的几个大牛,包括乌拉姆、冯.诺依曼、费米、费曼、NicholasMetropolis,在美国洛斯阿拉莫斯国家实验室研究裂变物质的中子连锁反应的时候,开始使用统计模拟的方法,并在最早的计算机上进行编程实现。

随机模拟与计算机

现代的统计模拟方法最早由数学家乌拉姆提出,被Metropolis命名为蒙特卡罗方法,蒙特卡罗是著名的赌场,赌博总是和统计密切关联的,所以这个命名风趣而贴切,很快被大家广泛接受。被不过据说费米之前就已经在实验中使用了,但是没有发表。说起蒙特卡罗方法的源头,可以追溯到18世纪,布丰当年用于计算 π 的著名的投针实验就是蒙特卡罗模拟实验。统计采样的方法其实数学家们很早就知道,但是在计算机出现以前,随机数生成的成本很高,所以该方法也没有实用价值。随着计算机技术在二十世纪后半叶的迅猛发展,随机模拟技术很快进入实用阶段。对那些用确定算法不可行或不可能解决的问题,蒙特卡罗方法常常为人们带来希望。

蒙特卡罗方法

统计模拟中有一个重要的问题就是给定一个概率分布 p(x) ,我们如何在计算机中生成它的样本。一般而言均匀分布  Uniform(0,1) 的样本是相对容易生成的。通过线性同余发生器可以生成伪随机数,我们用确定性算法生成 [0,1]   之间的伪随机数序列后,这些序列的各种统计指标和均匀分布  Uniform(0,1)  的理论计算结果非常接近。这样的伪随机序列就有比较好的统计性质,可以被当成真实的随机数使用。

生成一个概率分布的样本

而我们常见的概率分布,无论是连续的还是离散的分布,都可以基于 Uniform(0,1) 的样本生成。例如正态分布可以通过著名的Box-Muller 变换得到

[Box-Muller 变换] 如果随机变量  U1,U2  独立且 U1,U2∼Uniform[0,1],

则  Z0,Z1  独立且服从标准正态分布。

其它几个著名的连续分布,包括指数分布、Gamma 分布、t 分布、F分布、Beta 分布、Dirichlet分布等等,也都可以通过类似的数学变换得到;离散的分布通过均匀分布更加容易生成。更多的统计分布如何通过均匀分布的变换生成出来,大家可以参考统计计算的书,其中Sheldon M. Ross 的《统计模拟》是写得非常通俗易懂的一本。

不过我们并不是总是这么幸运的,当 p(x) 的形式很复杂,或者  p(x)  是个高维的分布的时候,样本的生成就可能很困难了。譬如有如下的情况

此时就需要使用一些更加复杂的随机模拟的方法来生成样本。而本节中将要重点介绍的MCMC(Markov Chain Monte Carlo) 和 GibbsSampling算法就是最常用的一种,这两个方法在现代贝叶斯分析中被广泛使用。要了解这两个算法,我们首先要对马氏链的平稳分布的性质有基本的认识。

2 马氏链及其平稳分布

马氏链的数学定义很简单

P(Xt+1=x|Xt,Xt−1,⋯)=P(Xt+1=x|Xt)

也就是状态转移的概率只依赖于前一个状态。

我们先来看马氏链的一个具体的例子。社会学家经常把人按其经济状况分成3类:下层(lower-class)、中层(middle-class)、上层(upper-class),我们用1,2,3分别代表这三个阶层。社会学家们发现决定一个人的收入阶层的最重要的因素就是其父母的收入阶层。如果一个人的收入属于下层类别,那么他的孩子属于下层收入的概率是0.65, 属于中层收入的概率是 0.28, 属于上层收入的概率是0.07。事实上,从父代到子代,收入阶层的变化的转移概率如下

使用矩阵的表示方式,转移概率矩阵记为

我们发现从第7代人开始,这个分布就稳定不变了,这个是偶然的吗?我们换一个初始概率分布 π0 =[0.75,0.15,0.1] 试试看,继续计算前 n 代人的分布状况如下

我们发现,到第9代人的时候,分布又收敛了。最为奇特的是,两次给定不同的初始概率分布,最终都收敛到概率分布  π=[0.286,0.489,0.225] ,也就是说收敛的行为和初始概率分布  π0  无关。这说明这个收敛行为主要是由概率转移矩阵 P 决定的。

(接二)

Gibbs Sampling\吉布斯采样(一)相关推荐

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

    2016年05月12日 00:24:21 阅读数:45658 http://blog.csdn.net/pipisorry/article/details/51373090 吉布斯采样算法详解 为什么 ...

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

    导航 Bayesian Linear Regression Gibbs Sampling Derving a Gibbs sampler Update for β0\beta_0β0​ Update ...

  3. Gibbs sampling

    Gibbs sampling(吉布斯采样)(资料集合) 维基百科,自由的百科全书: In statistics, Gibbs sampling or a Gibbs sampler is a Mark ...

  4. Markov Chain Monte Carlo 和 Gibbs Sampling算法

    Welcome To My Blog 一.蒙特卡洛模拟 蒙特卡洛模拟(Monte Carlo Simulation)是随机模拟的别名,关于随机模拟的一个重要的问题就是:给定一个概率分布p(x),如何生 ...

  5. 吉布斯采样——原理及matlab实现

    原文来自:https://victorfang.wordpress.com/2014/04/29/mcmc-the-gibbs-sampler-simple-example-w-matlab-code ...

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

    原文来自:https://victorfang.wordpress.com/2014/04/29/mcmc-the-gibbs-sampler-simple-example-w-matlab-code ...

  7. 吉布斯采样(Gibbs Sampling)

    吉布斯采样(Gibbs Sampling)   常用于DBM和DBN,吉布斯采样主要用在像LDA和其它模型参数的推断上.   要完成Gibbs抽样,需要知道条件概率.也就是说,gibbs采样是通过条件 ...

  8. 三步完成吉布斯采样Gibbs sampling

    吉布斯采样的具体执行过程只需要三个步骤,非常非常简单好理解,其它相关的背景知识能帮助加深理解. 一.Preliminaries Monte Carlo methods 它是很宽泛的一类计算方法,依赖重 ...

  9. 随机采样和随机模拟:吉布斯采样Gibbs Sampling实现高斯分布参数推断

    http://blog.csdn.net/pipisorry/article/details/51539739 吉布斯采样的实现问题 本文主要说明如何通过吉布斯采样来采样截断多维高斯分布的参数(已知一 ...

最新文章

  1. openpyxl方法记录
  2. 为Tiny4412设备驱动在proc目录下添加一个可读版本信息的文件
  3. Stack(栈 c++模版实现)
  4. nssl1298-网站计划【线段树】
  5. S5PV210的启动过程:三星推荐的启动方式和uboot的实现方式不同
  6. java Math类与Number类
  7. 游戏日志分析2:全方位数据采集
  8. 神经网络十大学习率衰减提效策略!
  9. 揭秘百万人围观的Facebook视频直播
  10. Midas GTS NX To 3DEC网格转换程序
  11. 多功能扩音器索爱S-318,教师、导游们的辅助神器
  12. KANO 模型——卡诺模型
  13. 新产品开发过程基本原则
  14. html5霓虹效果代码,HTML5 canvas蜂巢式彩色霓虹背景效果
  15. NAR | 董波/王师/李语丽合作建立首个横跨动物界的进化发育组学数据库平台
  16. 大屏监控系统实战(1)-项目介绍
  17. Python hypot() 函数
  18. 限制网页只能在微信浏览器打开
  19. MATLAB入门实战版
  20. 深度剖析QQ密码被盗原因

热门文章

  1. 解决IDEA输出乱码问题
  2. 高数 | 为什么f(x)从a到b的积分等于从b到a的积分的相反数?
  3. php取FBOX数据,云平台制作(1)-OPC Client取数模块的制作
  4. Linux 终端命令 --常用命令一
  5. 数据处理方法-算术编码(香农算法、java编码实现)
  6. SAR成像系列:【11】干涉合成孔径雷达(干涉SAR,Interferometric SAR,InSAR)
  7. qt 图片适应窗口_Qt图片自适应窗口控件大小
  8. 什么是XML?如何学习XML?
  9. 关于NullPointerException的小实例
  10. matlab中如何转动三维图_MATLAB小技巧之:绕任意空间轴旋转三维图形