怎样向外行人解释马尔科夫蒙特卡洛方法? http://help.3g.163.com/15/0212/03/AI7LL3NM00964K83.html 每当我们讨论概率时,我们其实都是在对概率密度进行积分。在贝叶斯分析中,我们所用到的很多概率密度都不是能解析表达的:对他们积分你需要付出很大的代价,如果他们真的可积。所以,我们用一种代替的方法,就是大量的仿真这个随机变量,然后从我们仿真出的随机数里得到概率。如果我们想要知道X小于10的概率,我们就计算仿真出的随机数里小于10的比例,用它作为我们的估算结果。这就是“蒙特卡洛”部分,它是一种基于随机数的概率估计方法。当仿真出的随机数足够多的时候,估计的结果就非常好,但是它本质上仍然是随机的。 那又为什么用“马尔科夫”呢?因为在特定的技术条件下,你可以生成一个无记忆的过程(例如,一个马尔科夫过程),这个过程和你想要仿真的随机变量有一样的分布。你可以迭代任意数量的不同的仿真过程,这些仿真过程可以生成相关的随机数(只基于这些数的当前值),并且这个过程保证了一旦你生成足够多的结果,你将能得到一组数,它们看起来就好像你用某种方法成功地从你想要知道的复杂分布中获得了独立的样本一样。 例如,如果我想估计一个标准正态分布的随机变量小于0.5的概率,我可以从标准正态分布中生成10000个独立的样本,然后数出其中小于0.5的样本的数量;假设,我得到6905个样本小于0.5,那么我对P(Z<0.5)的估计就是0.6905,这个估计和真实值相去不远。这就是个蒙特卡洛估计。 现在想像我没办法生成独立的标准正态分布的随机变量,于是我从0开始,每一步加一些-0.5到0.5之间均匀分布的随机数到我的当前值,然后根据一种特殊的检验方法来决定我是不是接受这个新值,如果我不接受,那我就拒绝这个值保留我的旧值。因为我只考虑新值和当前值,所以这是个马尔科夫链。如果我正确地建立了决定是否保留新值的检验方法(可以是随机游走Metropolis-Hastings方法,细节比较复杂),于是尽管我没生成哪怕一个正态随机变量,如果我仿真这个过程足够长时间,我从这个过程得到的数列就将分布得像用某种方法生成的正态随机变量的大量样本一样。这就是对一个标准正态分布随机变量的马尔科夫蒙特卡洛仿真。如果我用这种方法去估计概率,这就是一个马尔科夫蒙特卡洛估计。
译者注:此篇文章是我在国外的一个数学论坛上看到的一个关于马尔科夫蒙特卡洛方法的简单解释。我觉得讲得很浅显易懂,适合入门者掌握概念,所以分享给大家。原问题的答主昵称叫Rich,这是他的论坛主页链接http://stats./users/61/rich。 马尔科夫链(Markov Chain) 在已知“现在”的条件下,“未来”与“过去”彼此独立的特性就被称为马尔科夫性,又叫无后效性或马尔科夫假设,具有这种性质的随机过程就叫做马尔科夫过程,时间和状态都是离散的马尔科夫过程称为马尔科夫链。
参考文献: 马尔科夫链 马尔科夫 http://baike./view/88424.htm#2 马尔科夫过程 http://wiki.mbalib.com/wiki/马尔可夫过程 马尔科夫链/Markov链 http://baike.baidu.com/view/3053716.htm http://baike.baidu.com/view/340221.htm 马尔科夫链模型简介 http://wenku.baidu.com/view/3ac8b5bb960590c69ec376ee.html 马尔科夫预测 http://baike.baidu.com/view/1621554.htm http://wenku.baidu.com/view/2407c58a680203d8ce2f24e6.html
蒙特卡洛模拟(Monte Carlo simulation) 1、蒙特卡罗模拟简介 蒙特卡罗模拟,也叫统计模拟,这个术语是二战时期美国物理学家Metropolis执行曼哈顿计划的过程中提出来的,其基本思想很早以前就被人们所发现和利用。早在17世纪,人们就知道用事件发生的"频率"来决定事件的"概率"。19世纪人们用投针试验的方法来决定圆周率π。本世纪40年代电子计算机的出现,特别是近年来高速电子计算机的出现,使得用数学方法在计算机上大量、快速地模拟这样的试验成为可能。 蒙特卡洛模拟是一种通过设定随机过程,反复生成时间序列,计算参数估计量和统计量,进而研究其分布特征的方法。蒙特卡洛模拟方法的原理是当问题或对象本身具有概率特征时,可以用计算机模拟的方法产生抽样结果,根据抽样计算统计量或者参数的值;随着模拟次数的增多,可以通过对各次统计量或参数的估计值求平均的方法得到稳定结论。由于涉及到时间序列的反复生成,蒙特卡洛模拟法是以高容量和高速度的计算机为前提条件的,因此只是在近些年才得到广泛推广。 2、蒙特卡洛模拟步骤 版本1: (1)构造或描述概率过程:对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性质的问题转化为随机性质的问题。 (2)实现从已知概率分布抽样:构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因。最简单、最基本、最重要的一个概率分布是(0,1)上的均匀分布(或称矩形分布)。随机数就是具有这种均匀分布的随机变量。随机数序列就是具有这种分布的总体的一个简单子样,也就是一个具有这种分布的相互独立的随机变数序列。产生随机数的问题,就是从这个分布的抽样问题。在计算机上,可以用物理方法产生随机数,但价格昂贵,不能重复,使用不便。另一种方法是用数学递推公式产生。这样产生的序列,与真正的随机数序列不同,所以称为伪随机数,或伪随机数序列。不过,经过多种统计检验表明,它与真正的随机数,或随机数序列具有相近的性质,因此可把它作为真正的随机数来使用。由已知分布随机抽样有各种方法,与从(0,1)上均匀分布抽样不同,这些方法都是借助于随机序列来实现的,也就是说,都是以产生随机数为前提的。由此可见,随机数是我们实现蒙特卡罗模拟的基本工具。建立各种估计量:一般说来,构造了概率模型并能从中抽样后,即实现模拟实验后,我们就要确定一个随机变量,作为所要求的问题的解,我们称它为无偏估计。 (3)建立各种估计量,相当于对模拟实验的结果进行考察和登记,从中得到问题的解。例如:检验产品的正品率问题,我们可以用1表示正品,0表示次品,于是对每个产品检验可以定义如下的随机变数Ti,作为正品率的估计量:于是,在N次实验后,正品个数为:显然,正品率p为:不难看出,Ti为无偏估计。当然,还可以引入其它类型的估计,如最大似然估计,渐进有偏估计等。但是,在蒙特卡罗计算中,使用最多的是无偏估计。 版本2: (1)根据提出的问题构造一个简单、适用的概率模型或随机模型,使问题的解对应于该模型中随机变量的某些特征(如概率、均值和方差等),所构造的模型在主要特征参量方面要与实际问题或系统相一致; (2)根据模型中各个随机变量的分布,在计算机上产生随机数,实现一次模拟过程所需的足够数量的随机数。通常先产生均匀分布的随机数,然后生成服从某一分布的随机数,方可进行随机模拟试验。 (3)根据概率模型的特点和随机变量的分布特性,设计和选取合适的抽样方法,并对每个随机变量进行抽样(包括直接抽样、分层抽样、相关抽样、重要抽样等); (4)按照所建立的模型进行仿真试验、计算,求出问题的随机解; (5)统计分析模拟试验结果,给出问题的概率解以及解的精度估计。 3、蒙特卡洛模拟应用 (1)直接应用蒙特卡洛模拟:应用大规模的随机数列来模拟复杂系统,得到某些参数或重要指标; (2)蒙特卡洛积分:利用随机数列计算积分,维数越高,积分效率越高; (3)MCMC:直接应用蒙特卡洛模拟的推广,该方法中随机数的产生是采用的马尔科夫链形式。 4、蒙特卡洛模拟举例 (1)有一个例子可以使你比较直观地了解蒙特卡罗方法:假设我们要计算一个不规则图形的面积,那么图形的不规则程度和分析性计算(比如,积分)的复杂程度是成正比的。蒙特卡罗模拟是怎么计算的呢?假想你有一袋豆子,把豆子均匀地朝这个图形上撒,然后数这个图形之中有多少颗豆子,这个豆子的数目就是图形的面积。当你的豆子越小,撒的越多的时候,结果就越精确。 (2)蒙特卡洛积分 蒙特卡洛方法与定积分计算:随机投点法与平均值法 http:///2010/03/monte-carlo-method-to-compute-integration/
参考文献: 蒙特卡罗方法 http://baike.baidu.com/view/476019.htm http://wiki.mbalib.com/wiki/蒙特卡罗方法 http://www.baike.com/wiki/蒙特卡罗方法 蒙特卡罗模拟 http://baike.baidu.com/view/2692033.htm http://baike.baidu.com/view/284709.htm 蒙特卡罗(MonteCarlo)方法简介 http://blog.sciencenet.cn/blog-324394-292355.html MCMC方法研究 http://cdmd.cnki.com.cn/Article/CDMD-10422-2007088260.htm
马尔科夫蒙特卡洛(MCMC) MonteCarlo方法的一个基本应用是产生(伪)随机数,使之服从一个概率分布π(X)。当X是一维的情况时,这很容易做到,现在有许多计算机软件都可以得到这样的随机数,前面介绍的例子都是这种简单情况。但X常取值于Rk,直接产生符合二的独立样本通常是不可行的。往往是要么样本不独立,要么不符合π,或者二者都有。以前有很多人设计出许多方法去克服这一点,目前最常用的是MCMC方法。Metropolis方法(Metropolis.et.al.1953)与Hastings的概括奠定了MCMC方法的基石,此方法就是在以π为平稳分布的马氏链上产生相互依赖的样本。换句话说,MCMC方法本质上是一个MonteCarlo综合程序,它的随机样本的产生与一条马氏链有关。基于条件分布的迭代取样是另外一种重要的MCMC方法,其中最著名的特殊情况就是Gibbs抽样,现在已成为统计计算的标准工具,它最吸引人的特征是其潜在的马氏链是通过分解一系列条件分布建立起来。 从数学上讲,马尔科夫链的蒙特卡洛采样的核心思想是构造一个Markovchain,使得从任意一个状态采样开始,按该Markovchain转移,经过一段时间的采样,逼近平稳分布/目标分布(Stationarydistribution/Equilibriumdistribution),最后选用逼近后的样本作为最终的采样。换句话说,如果我模拟了一条这样的马尔科夫链,去除掉前面一部分样本之后,就可以认为后面的样本来自于平稳分布。
参考文献: LDA-math-MCMC和GibbsSampling(1) http://www./lda-math-mcmc-%e5%92%8c-gibbs-sampling1 LDA-math-MCMC和GibbsSampling(2) http://www./lda-math-mcmc-%E5%92%8C-gibbs-sampling2 MCMC方法研究 http://wenku.baidu.com/view/0051e4ed856a561252d36f7f.html
MarkovChainMonteCarlo方法总结 http://blog.csdn.net/dreamflylin/article/details/6315736 MCMC算法简介 http://tieba.baidu.com/p/1681867134 为什么要用MarkovchainMonteCarlo(MCMC) http://blog.sciencenet.cn/blog-870888-677965.html
LDA-math-神奇的Gamma函数(1) http://www./lda-math-%e7%a5%9e%e5%a5%87%e7%9a%84gamma%e5%87%bd%e6%95%b01 LDA-math-神奇的Gamma函数(2) http://www./lda-math-%e7%a5%9e%e5%a5%87%e7%9a%84gamma%e5%87%bd%e6%95%b02 LDA-math-神奇的Gamma函数(3) http://www./lda-math-%e7%a5%9e%e5%a5%87%e7%9a%84gamma%e5%87%bd%e6%95%b03 LDA-math-认识Beta/Dirichlet分布(1) http://www./lda-math-%e8%ae%a4%e8%af%86betadirichlet%e5%88%86%e5%b8%831 LDA-math-认识Beta/Dirichlet分布(2) http://www./lda-math-%e8%ae%a4%e8%af%86betadirichlet%e5%88%86%e5%b8%832 LDA-math-认识Beta/Dirichlet分布(3) http://www./lda-math-%e8%ae%a4%e8%af%86betadirichlet%e5%88%86%e5%b8%833
随机模拟与采样
参考文献: 随机模拟的基本思想和常用采样方法(sampling) http://blog.csdn.net/xianlingmao/article/details/7768833 MCMC方法及应用 |
|