Metropolis–Hastings算法
1蒙特卡洛方法
蒙特卡罗方法也称统计模拟方法,是一种以概率统计理论为指导的数值计算方法。蒙特卡洛方法的基本思想是,当所求解问题是某种随机事件出现的概率,或者是某个随机变量的期望值时,通过某种“实验”的方法,以这种事件出现的频率估计这一随机事件的概率,或者得到这个随机变量的某些数字特征,并将其作为问题的解。蒙特卡罗方法主要有三个工作过程:构造或描述概率过程;实现从已知概率分布抽样;建立各种估计量。
(1)构造或描述概率过程
对于本身就具有随机性质的问题,如粒子输运问题,主要是正确描述和模拟这个概率过程,对于本来不是随机性质的确定性问题,比如计算定积分,就必须事先构造一个人为的概率过程,它的某些参量正好是所要求问题的解。即要将不具有随机性质的问题转化为随机性质的问题。
(2)实现从已知概率分布抽样
构造了概率模型以后,由于各种概率模型都可以看作是由各种各样的概率分布构成的,因此产生已知概率分布的随机变量(或随机向量),就成为实现蒙特卡罗方法模拟实验的基本手段,这也是蒙特卡罗方法被称为随机抽样的原因。最简单、最基本、最重要的一个概率分布是(0,1)上的均匀分布(或称矩形分布)。随机数就是具有这种均匀分布的随机变量。随机数序列就是具有这种分布的总体的一个简单子样,也就是一个具有这种分布的相互独立的随机变数序列。产生随机数的问题,就是从这个分布的抽样问题。在计算机上,可以用物理方法产生随机数,但价格昂贵,不能重复,使用不便。另一种方法是用数学递推公式产生。这样产生的序列,与真正的随机数序列不同,所以称为伪随机数,或伪随机数序列。不过,经过多种统计检验表明,它与真正的随机数,或随机数序列具有相近的性质,因此可把它作为真正的随机数来使用。由已知分布随机抽样有各种方法,与从(0,1)上均匀分布抽样不同,这些方法都是借助于随机序列来实现的,也就是说,都是以产生随机数为前提的。由此可见,随机数是我们实现蒙特卡罗模拟的基本工具。
(3)建立各种估计量
一般说来,构造了概率模型并能从中抽样后,即实现模拟实验后,我们就要确定一个随机变量,作为所要求的问题的解,我们称它为无偏估计。建立各种估计量,相当于对模拟实验的结果进行考察和登记,从中得到问题的解。
2 马尔科夫链
马尔科夫链是关于时序的概率模型,在马尔科夫链中第i时刻的状态只由第i-1时刻的状态决定。任一马尔科夫链都具有收敛性质,及当马尔科夫链从初始状态开始进行状态转移,当转移次数足够大时,各个状态的分布会趋于稳定。即π(i)p(j|i)=π(j)p(i|j),其中π(i)和π(j)是第i时刻和第j时刻的初始状态概率。
这里我们可以利用马尔科夫链的收敛性质,对于给定的概率分布P(x),我们构造一个转移矩阵为P的马尔科夫链,使得该马尔科夫链的平稳分布恰好是P(x)。MCMC采样方法有很多种,这里我们介绍Metropolis–Hastings算法。
Metropolis–Hastings算法可以根据某分布的概率密度生成其样本分布,Metropolis–Hastings算法首先给出一种样本的概率分布,通过状态转移,产生下一状态下的样本分布,利用马尔科夫链的稳定性,最终产生分布趋于该概率分布的样本。
Metropolis–Hastings算法如下:
1 当前状态i
2 从提议分布q(j|i)中产生新的状态j(如果是简单的分布,如高斯分布,可以通过将均匀分布的值通过高斯分布的反函数映射得到服从高斯分布的值。或者使用其他采样方法采样得到,如重采样与拒绝采样。)
3 计算接受概率:
α(j|i)=min{π(j)q(i|j)/π(i)q(j|i),1}
4 从[0,1]区间中抽样出一个数据点(均匀分布)u∼U[0,1]
5 将随机生成的数和接受率对比,如果u<α,状态就从i跳转到j,否则继续保留在状态i。
Metropolis–Hastings算法相关推荐
- MCMC中的Metropolis–Hastings算法与吉布斯采样
Metropolis–Hastings算法是一种具体的MCMC方法,而吉布斯采样(Gibbs Sampling)是Metropolis–Hastings算法的一种特殊形式.二者在机器学习中具有重要作用 ...
- R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样
创建测试数据 第一步,我们创建一些测试数据,用来拟合我们的模型.我们假设预测变量和因变量之间存在线性关系,所以我们用线性模型并添加一些噪音. trueA <- 5trueB <- 0tru ...
- mh采样算法推导_科学网—MCMC中的Metropolis Hastings抽样法 - 张金龙的博文
Metropolis Hastings抽样法示例 jinlongzhang01@gmail.com Metropolis Hasting(下面简称MH)是蒙特卡罗马尔科夫链中一种重要的抽样方法.本文简 ...
- Metropolis Hastings MCMC when the proposal and target have differing support
参考: Metropolis Hastings MCMC when the proposal and target have differing support Examples of errors ...
- python实现Metropolis采样算法实例
马尔可夫链蒙特卡罗(Markov Chain Monte Carlo ,MCMC )方法主要算法有:Metropolis-Hastings (MH)算法.Metropolis采样算法,以及吉布斯采样方 ...
- Metropolis 采样算法
前言 马尔科夫链 概念描述 转移概率矩阵 平稳分布 为何要用马尔科夫链 Metropolis 采样算法简介 Metropolis 采样算法思路 Metropolis 采样算法步骤 Metropolis ...
- Metropolis Hasting算法
Metropolis Hasting Algorithm: MH算法也是一种基于模拟的MCMC技术,一个很重要的应用是从给定的概率分布中抽样.主要原理是构造了一个精妙的Markov链,使得该链的稳态是 ...
- 如何实现马尔可夫链蒙特卡罗MCMC模型、Metropolis算法?
原文链接:http://tecdat.cn/?p=2687 什么是MCMC,什么时候使用它? MCMC只是一个从分布抽样的算法. 这只是众多算法之一.这个术语代表"马尔可夫链蒙特卡洛&quo ...
- 论文:并行化 Metropolis-Hastings 算法的一般结构
0摘要 马尔可夫链蒙特卡罗方法 (MCMC) 是解决许多现代统计和计算问题的重要工具:然而,一个主要的限制是这些算法固有的顺序性质.在本文中,我们提出了 Metropolis-Hastings 算法的 ...
最新文章
- LPC43xx OTP
- python timer使用-关于定时器的两种使用方法
- nvidia docker容器不支持中文的解决办法_用docker搭建深度学习实验环境
- python杂记-RSA加解密实现(4)-加解密消息及文件
- 构建二叉堆时间复杂度的证明
- arraylist切割_jdk8 stream list分割 切割 分批次处理工具类
- Jquery中如何获取元素的文本,值,属性和内容
- 【萌味】小夕说,不了解动态空间增长的程序喵都是假喵(中)
- 6常见的HTML和CSS面试问答
- Linux(一)之Ubuntu上安装nginx、nginx-rtmp-modeule、libx264、FFmpeg(巨详细)
- python 绘制一维散点图
- java上传加密_Java实现文件的加密与解密
- 发个贴,舒缓下自己焦虑的心情
- 心跳检测,用oob实现
- 计算机应用技术题,计算机应用技术复习题.doc
- 深度学习—利用TensorFlow2实现狗狗品种品种(resnet50实现)
- cesium不支持4490的问题解决方案(超详细)
- React----JSX语法
- 怎么更改坐标轴标题access_excel2013设置图表坐标轴刻度的教程
- 微信支付多用户并发使用mweb_url