采样方法(二)MCMC相关算法介绍及代码实现
0.引子
书接前文,在采样方法(一)中我们讲到了拒绝采样、重要性采样一系列的蒙特卡洛采样方法,但这些方法在高维空间时都会遇到一些问题,因为很难找到非常合适的可采样Q分布,同时保证采样效率以及精准度。
本文将会介绍采样方法中最重要的一族算法,MCMC(Markov Chain Monte Carlo),在之前我们的蒙特卡洛模拟都是按照如下公式进行的:
E[f(x)]≈1m ∑ m i=1 f(x i ). x i ∼p.iid E[f(x)]≈1m∑i=1mf(xi). xi∼p.iid E[f(x)]≈ 1m∑i=1mf(xi). xi∼p.iidE[f(x)]≈1m ∑ m i=1 f(x i ). x i ∼p.iid E[f(x)]≈1m∑i=1mf(xi). xi∼p.iid {E}[f(x)] \approx \frac{1}{m}\sum_{i=1}^m{f(x_i)}.\ \ x_i \sim p.iidE[f(x)]≈1m ∑ m i=1 f(x i ). x i ∼p.iid E[f(x)]≈1m∑i=1mf(xi). xi∼p.iid E[f(x)]≈ m1i=1∑mf(xi). xi∼p.iidπ=πT
这里可以参考《LDA数学八卦0.4.2》的例子,非常生动地描述了社会阶层转化的一个例子,也对MCMC作了非常好的讲解
书归正传,回到我们采样的场景,我们知道,采样的难点就在于概率密度函数过于复杂而无法进行有效采样,如果我们可以设计一个马尔可夫过程,使得它最终收敛的分布是我们想要采样的概率分布,不就可以解决我们的问题了么。
前面提到了在某种特定情况下,这就是所有MCMC算法的理论基础Ergodic Theorem:
如果一个离散马尔可夫链(x 0 ,x 1 ...x m ) (x 0 ,x 1 ...x m ) (x 0 ,x 1 ...x m )
- 采样方法(二)MCMC相关算法介绍及代码实现
- 本文给出了一种方便实用的解决大文件的读取、存储等处理的方法,并结合相关程序代码对具体的实现过程进行了介绍
- php实现相关文章功能代码方法
- LCA算法实现方法介绍
- 介绍两种方法来实现不用开浏览器就能运行php代码的方法
- WordPress代码实现相关文章的几种方法(一)
- 比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言)
- 比特币系统采用的公钥密码学方案和ECDSA签名算法介绍——第二部分:代码实现(C语言)
- 用WEKA对于数据挖掘时相关算法的介绍和使用方法
- Andrew Ng机器学习笔记+Weka相关算法实现(五)SVM最优间隔和核方法
- 二分图相关概念及匈牙利算法求解最大匹配(附代码实现)
- ML之Clustering之LPA:LPA算法主要思路、输出结果、代码实现等相关配图之详细攻略
- WordPress代码实现相关文章的几种方法(二)
- WordPress代码实现相关文章的几种方法
- C++代码实现Ford-Fulkerson方法Edmonds Karp算法解决最大流问题
- 数据分析2:盒图介绍及相关算法实现
- Andrew Ng机器学习笔记+Weka相关算法实现(五)SVM最优间隔和核方法
- 原始LBP纹理特征提取方法介绍以及代码实现
- CRC算法原理及C语言实现(介绍了3种方法)
- 实现web打印的各种方法介绍及实现代码