Ref: http://blog.csdn.net/xianlingmao/article/details/7768833

通常,我们会遇到很多问题无法用分析的方法来求得精确解,例如由于式子特别,真的解不出来;

一般遇到这种情况,人们经常会采用一些方法去得到近似解,已经近似程度。

本文要谈的随机模拟就是这么一类近似求解的方法。

它的诞生虽然最早可以追溯到18xx年法国数学家蒲松的投针问题(用模拟的方法来求解\pi的问题),但是真正的大规模应用还是被用来解决二战时候美国生产原子弹所碰到的各种难以解决的问题而提出的蒙特卡洛方法(Monte Carlo),从此一发不可收拾。

一. 随机模拟的基本思想

其基本思路就是要把待解决的问题转化为一种可以通过某种采样方法可以解决的问题,至于怎么转化,还是挺有创造性,没有定法。

因此,随机模拟方法的核心就是:如何对一个概率分布得到样本,即抽样(sampling)。

二. 常见的抽样方法

2.0 直接抽样法

略。

2.1 接受-拒绝抽样(Acceptance-Rejection sampling)

又简称拒绝抽样,直观地理解,为了得到一个分布的样本,我们通过某种机制得到了很多的初步样本,然后其中一部分初步样本会被作为有效的样本(即要抽取的分布的样本),一部分初步样本会被认为是无效样本舍弃掉。

这个算法的基本思想是:我们需要对一个分布f(x)进行采样,但是却很难直接进行采样,所以我们想通过另外一个容易采样的分布g(x)的样本,用某种机制去除掉一些样本,从而使得剩下的样本就是来自与所求分布f(x)的样本。

2.2 重要性抽样(Importance sampling)

重要性采样 和 蒙特卡洛积分 密切相关。

给每个样本赋予了一个权重,g(xi)大意味着概率大,那么N里面含有这样的样本xi就多,即这些样本的权重大,所以称为重要性抽样。

2.3  MCMC抽样方法

无论是拒绝抽样还是重要性采样,都是属于独立采样,即样本与样本之间是独立无关的,这样的采样效率比较低,如拒绝采样,所抽取的样本中有很大部分是无效的,这样效率就比较低。

MCMC方法是关联采样,即下一个样本与这个样本有关系,从而使得采样效率高。

MCMC方法的基本思想是:通过构建一个markov chain使得该markov chain的稳定分布是我们所要采样的分布f(x)

当markov chain达到稳定状态,那么来自这个chain的每个样本都是f(x)的样本,从而实现抽样的目的。

这里存在一个核心问题,如何构建满足要求的markov chain?

A).  Metropolis-Hasting算法

见:[Bayes] dchisq: Metropolis-Hastings Algorithm

B).  Gibbs采样算法

暂略。

当然无论是metropolis-hasting算法还是gibbs算法,都有一个burn in的过程,在burn in过程中产生的样本都需要被舍弃。

可以证明Gibbs算法是metropolis-hasting算法的一个特例,即比率\alpha(x,y) = 1的一个特列。具体证明,此处略。

[Bayes] What is Sampling的更多相关文章

  1. [Bayes] runif: Inversion Sampling

    runifum Inversion Sampling 看样子就是个路人甲. Ref: [Bayes] Hist & line: Reject Sampling and Importance S ...

  2. [Bayes] dchisq: Metropolis-Hastings Algorithm

    dchisq gives the density,                          # 计算出分布下某值处的密度值 pchisq gives the distribution fun ...

  3. [Bayes] MCMC (Markov Chain Monte Carlo)

    不错的文章:LDA-math-MCMC 和 Gibbs Sampling 可作为精进MCMC抽样方法的学习材料. 简单概率分布的模拟 Box-Muller变换原理详解 本质上来说,计算机只能生产符合均 ...

  4. [AI] 深度数学 - Bayes

    数学似宇宙,韭菜只关心其中实用的部分. scikit-learn (sklearn) 官方文档中文版 scikit-learn Machine Learning in Python 一个新颖的onli ...

  5. 本人AI知识体系导航 - AI menu

    Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯   徐亦达老板 Dirichlet Process 学习 ...

  6. [UFLDL] Generative Model

    这一部分是个坑,应该对绝大多数菜鸡晕头转向的部分,因为有来自物理学界的问候. Deep learning:十九(RBM简单理解) Deep learning:十八(关于随机采样)    采样方法 [B ...

  7. [Bayes] Hist & line: Reject Sampling and Importance Sampling

    吻合度蛮高,但不光滑. > L= > K=/ > x=runif(L) > *x*(-x)^/K)) > hist(x[ind],probability=T, + xla ...

  8. [Bayes] prod: M-H: Independence Sampler for Posterior Sampling

    M-H是Metropolis抽样方法的扩展,扩展后可以支持不对称的提议分布. 对于M-H而言,根据候选分布g的不同选择,衍生出了集中不同的变种: (1)Metropolis抽样方法 (2)随机游动Me ...

  9. [Bayes] Parameter estimation by Sampling

    虽然openBugs效果不错,但原理是什么呢?需要感性认识,才能得其精髓. Recall [Bayes] prod: M-H: Independence Sampler firstly. 采样法 Re ...

随机推荐

  1. 使用PD进行数据库建模时的问题

    在PowerDesigner中建立好概念模型后,将其转为物理模型的时候出现如下错误提示: 前面四个是相同的问题,原因是由于没有修改默认设置.可以在Tools--->Model Options-& ...

  2. 数据库ACID属性

    A:Atomicity,原子性.即是事务要么全部完成,要么不完成. C:Consistency,一致性.即是事务如果是并发的,系统也必须如同串行一样. I:Isolation,隔离性.即是使得每个事务 ...

  3. 25个最常用的iptables策略

    1.清空存在的策略当你开始创建新的策略,你可能想清除所有的默认策略,和存在的策略,可以这么做:iptables -F  或者iptables --flush2,设置默认策略默认链策略是ACCEPT,改 ...

  4. hbase源码系列(四)数据模型-表定义和列族定义的具体含义

    hbase是一个KeyValue型的数据库,在<hbase实战>描述它的逻辑模型[行键,列族,列限定符,时间版本],物理模型是基于列族的.但实际情况是啥?还是上点代码吧. HTableDe ...

  5. sqoop 常用命令整理(二)

    26.Validate 它用来比较源数据和目标数据的数量 它有三个接口 Validator. 它有三个接口 Validator. Property: validator Description: Dr ...

  6. 放弃winform的窗体吧,改用html作界面,桌面应用程序UI的新的开发方式。

    做过很多winform项目,都为winform控件头疼不已.想实现一些漂亮的样子总是很难.我这里列举几个缺点: 1.winform控件大多是 绝对布局 ,你需要给出准确的坐标.那么在实现居中效果就会很 ...

  7. 引用dataframe的值为什么会不同

    在R语言中,通常有一些操作符可以来提取对象的子集,如以下三种: 1.“[” 单层方括号,返回的对象与原对象类型相同,它也可以返回一个对象中的多个元素: 2.“[[” 双层方括号,用来从列表(list) ...

  8. 用css3实现社交分享按钮

    以前实现按钮一般都是用图片来实现的,特别是一些拥有质感的按钮,今天练习了一些相关方面的的例子,用css3来实现Social Media Buttons html代码如下 <div class=& ...

  9. jquery-仿flash的一个导航栏特效

    演示地址:http://itxiaoming.sinaapp.com/demo05/demo.html <html> <head> <meta http-equiv=&q ...

  10. HOW-TO GEEK SCHOOL

    This How-To Geek School class is intended for people who want to learn more about security when usin ...