接受拒绝采样(Acceptance-Rejection Sampling)

我们所说的抽样,其实是指从一个概率分布中生成观察值(observations)的方法。而这个分布通常是由其概率密度函数(PDF)来表示的。而且, 即使在已知PDF的情况下,让计算机自动生成观测值也不是一件容易的事情。从本质上来说,计算机只能实现对均匀分布(Uniform distribution)的采样。 那如何实现计算机很好的采样数据样本呢?今天我们一起来看看实现方法。

在采样问题上我们可能会面对这些问题:

  • 计算机只能实现对均匀分布的采样,但我们仍然可以在此基础上对更为复杂的分布进行采样,那具体该如何操作呢?
  • 随机分布的某些数字特征可能需要通过积分的形式来求解,但是某些积分可能没有(或者很难求得)解析解,彼时我们该如何处理呢?
  • 在贝叶斯推断中,后验概率的分布是正⽐于先验和似然函数之积的,但是先验和似然函数的乘积形式可能相对复杂,我们又该如何对这种形式复杂的分布进行采样呢?

针对这些问题衍生出一系列求解的方法。

一、接受拒绝采样(Acceptance-Rejection Sampling)

在数学中,拒绝抽样是用来从分布产生观测值的基本技术。它也被称为接受拒绝方法或“接受 - 拒绝算法”,是一种蒙特卡罗方法,这种方法与Metropolis-Hastings算法也有一定关系。

1. 简单认识

下图是一个随机变量的密度函数曲线,试问如何获得这个随机变量的样本呢?
在这里插入图片描述
利用这个曲线的形状来抽取样本,用一个矩形将这个密度曲线套起来,把密度曲线框在一个矩形里,如下:
在这里插入图片描述
然后,向这个矩形里随机投点。随机投点意味着在矩形这块区域内,这些点是满足均匀分布的。投了大概10000个点,如下面这个样子:
在这里插入图片描述
显然,有的点落在了密度曲线下侧,有的点落在了密度曲线的上侧。上侧的点用绿色来表示,下侧的点用蓝色来表示,如下图:
在这里插入图片描述
只保留密度曲线下侧的点,即蓝色的点:
在这里插入图片描述
到这里,提一个问题,在密度曲线以下的这块区域里,这些点满足什么分布?均匀分布!这是拒绝采样最关键的部分,搞个矩形、向矩形里投点等等,所做的一切都是为了获得一个密度曲线所围成区域的均匀分布。只要能获得这样一个在密度曲线下满足均匀分布的样本,我们就可以获得与该密度曲线相匹配的随机变量的采样样本。方法是,只需把每个蓝点的横坐标提取出来,这些横坐标所构成的样本就是我们的目标样本。下图左侧,是按照以上方法获得的一个样本的直方图以及核密度估计,下图右侧,是开始的密度曲线。
在这里插入图片描述
可见,采样样本的核密度估计与目标密度曲线基本一致,可以肯定这个样本就是目标样本。

最开始时候用到了一个矩形,这个矩形就是一个满足均匀分布的建议分布,建议分布只是获得目标密度函数曲线下均匀分布样本的一个辅助工具。采用均匀分布作为建议分布有时效率很低,为什么这么说?从上例就可以看出,均匀分布的好多点(那些绿点)都被剔除了,造成了一种浪费。可以选择一些其他曲线来把密度曲线框起来,效率会提高一点,如下图:
在这里插入图片描述
数曲线为h(x), 对应于下图中的蓝线,建议分布密度曲线为g(x),我们把g(x)乘上一个常数因子c,然后用cg(x)这条曲线将目标密度曲线框起来。

我们假定满足g(x)的随机变量易于采样,那么拒绝采样的步骤如下:

  • 从g(x)采到一个样本数据,记为x⋆x^{\star}x,我们把它作为一个建议
  • 要不要接受这个建议,作为满足h(x)分布的一个样本数据呢?我们定义一个接受概率:

也就是说,我们以α\alphaα的概率接受x⋆x^{\star}x作为h(x)分布的一个样本数据。实际操作中,我们是取一个U(0,1)U(0, 1)U(0,1)的随机数μ\muμ,如果μ<α\mu<\alphaμ<α,就接受x⋆x^{\star}x作为h(x)的一个样本数据,否则,把它舍弃掉,回到1步继续循环。最终可以获得一个样本。

  • 文章开头是一下子抽取10000个点,到后来怎么成了一个个抽了呢?其实它们是对应的,把蓝点去掉的过程就相当于你做是否拒绝判断的过程。
  • 如果有密度曲线下的均匀分布样本,就可以得到与密度曲线相匹配的分布的一个样本。
  • 如果建议分布的形状和目标分布越接近,采样的效率就越高。

2. Acceptance-Rejection Sampling过程

在这里插入图片描述

3. Acceptance-Rejection Sampling的直观解释

在这里插入图片描述

4. Acceptance-Rejection Sampling有效性证明(待)

在这里插入图片描述
在这里插入图片描述

5.python实现

在这里插入图片描述
2. 生成代码如下:

import random
import math
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np%matplotlib inline
sns.set_style('darkgrid')
plt.rcParams['figure.figsize'] = (12, 8)def AceeptReject(split_val):global cglobal powerwhile True:x = random.uniform(0, 1)y = random.uniform(0, 1)if y*c <= math.pow(x - split_val, power):return xpower = 4
t = 0.4  
sum_ = (math.pow(1-t, power + 1) - math.pow(-t, power + 1)) / (power + 1)  #求积分
x = np.linspace(0, 1, 100)
#常数值c
c = 0.6**4/sum_
cc = [c for xi in x]
plt.plot(x, cc, '--',label='c*f(x)')
#目标概率密度函数的值f(x)
y = [math.pow(xi - t, power)/sum_ for xi in x]
plt.plot(x, y,label='f(x)')
#采样10000个点
samples = []
for  i in range(10000):samples.append(AceeptReject(t))
plt.hist(samples, bins=50, normed=True,label='sampling')
plt.legend()
plt.show()

在这里插入图片描述

5. 小结

在这里插入图片描述

要想将蒙特卡罗方法作为一个通用的采样模拟求和的方法,还的需马尔科夫链的帮忙。

https://gaolei786.github.io/statistics/reject.html
https://zhuanlan.zhihu.com/p/75264565

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345619.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gradle文件不识别_识别Gradle约定

gradle文件不识别通过约定进行配置具有许多优点&#xff0c;尤其是在简洁方面&#xff0c;因为开发人员不需要显式配置通过约定隐式配置的内容。 但是&#xff0c;在利用约定进行配置时&#xff0c;需要注意这些约定。 这些约定可能已记录在案&#xff0c;但是当我可以编程方式…

Telesat、OneWeb及SpaceX三个全球宽带低轨卫星星座系统的技术对比

编者按&#xff1a;本文来自微信公众号“卫星与网络”&#xff08;ID&#xff1a;satnetdy&#xff09;&#xff0c;作者Inigo del Portilloa,*, Bruce G. Cameronb, Edward F. Crawleyc&#xff0c;编译 刘帅军、胡月梅&#xff08;中科院软件所&#xff09;&#xff0c;36氪经…

腾讯人均每月薪酬成本超8万元,员工总数首次超10万

11月10日&#xff0c;腾讯在23岁“生日”即将到来之际发布2021年第三季度业绩报告。财报显示&#xff0c;第三季度腾讯总收入为人民币1424亿元&#xff08;220亿美元 &#xff09;&#xff0c;同比增长13%&#xff1b;净利润(Non-IFRS&#xff09;317.5亿元&#xff0c;同比减少…

低轨卫星通信系统发展综述

最近几年低轨移动通信领域风起云涌&#xff0c;Iridium、OneWeb、Boeing、SpaceX 这些商业航天的 独角兽 都先后实施或宣布自己在这一领域雄心勃勃的计划。 通信、导航和遥感是卫星应用领域的三驾马车&#xff0c;简称 通导遥。鉴于任务特性&#xff0c;通信卫星和导航卫星通常…

创建您的第一个servlet

在本教程中&#xff0c;我们将学习如何使用Servlet创建非常基本的Web应用程序。 Servlet是一类&#xff0c;扩展了服务器拦截和响应传入请求的功能。 Servlet是一个Web组件&#xff0c;可在服务器上进行编写&#xff0c;构建和部署&#xff0c;以创建动态Web页面。 首先&…

StarLink星座最新动态及星间组网动态路由探讨

StarLink星座最新动态及星间组网动态路由探讨 2020-06-24 11:50 StarLink星座最新动态及星间组网动态路由探讨 作者 | 刘帅军、徐帆江、刘立祥、范媛媛、王大鹏 &#xff08;中国科学院软件研究所&#xff0c;天基综合信息系统重点实验室&#xff09; 一 概述 自2020年6月开…

累计分布函数CDF、互补累计分布函数CCDF、期望Expection

1 CDF 累积分布函数(Cumulative Distribution Function&#xff0c;CDF)&#xff0c;又叫分布函数&#xff0c;是概率密度函数的积分&#xff0c;能完整描述一个实随机变量X的概率分布。一般以大写CDF标记,&#xff0c;与概率密度函数probability density function&#xff08…

markov chain, MRP MDP

在强化学习中&#xff0c;马尔科夫决策过程&#xff08;Markov decision process, MDP&#xff09;是对完全可观测的环境进行描述的&#xff0c;也就是说观测到的状态内容完整地决定了决策的需要的特征。几乎所有的强化学习问题都可以转化为MDP。本讲是理解强化学习问题的理论基…

(网络)流和会话

流:指具有相同五元组(源IP,源端口,目的IP,目的端口,协议)的所有包 会话:指由双向流组成的所有包(源和目的互换)

Filtration, σ-algebras

1. Filtration filtration在钱敏平老师和龚光鲁老师的《随机过程论》中直接称其为非降的KaTeX parse error: Undefined control sequence: \sigmma at position 1: \̲s̲i̲g̲m̲m̲a̲代数族。如图。 一般叫σ\sigmaσ-代数流或σ\sigmaσ-域流 在鞅论中的花体FtF_tFt​&…

gradle 命令行_Gradle命令行便利

gradle 命令行在我的《用Gradle构建Java的gradle tasks 》一文中&#xff0c;我简要提到了使用Gradle的“ gradle tasks ”命令来查看特定Gradle构建的可用任务。 在这篇文章中&#xff0c;我将对这一简短提及进行更多的扩展&#xff0c;并查看一些相关的Gradle命令行便利。 Gr…

怎样更好地理解并记忆泰勒展开式

本段的核心思想是仿造。当我们想要仿造一个东西的时候&#xff0c;无形之中都会按照上文提到的思路&#xff0c;即先保证大体上相似&#xff0c;再保证局部相似&#xff0c;再保证细节相似&#xff0c;再保证更细微的地方相似……不断地细化下去&#xff0c;无穷次细化以后&…

新的DMN编辑器预览

Workbench 7.13.0.Final于10月16日星期二发布&#xff0c;此版本带来了许多有趣的功能和重要的修复程序。 亮点之一是作为技术预览功能的新DMN编辑器&#xff0c;该功能仍在开发中&#xff0c;但您可以开始使用。 在本文中&#xff0c;您将学习如何启用DMN编辑器预览&#xff…

指数矩阵(exponential matrix)

类似于指数ex……e^x……ex……的本质是一种近似&#xff0c;eAt……e^{At}……eAt……是同样原理。 http://www.mashangxue123.com/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0/1756604500.html

Boole‘s,Doob‘s inequality,中心极限定理Central Limit Theorem,Kolmogorov extension theorem, Lebesgue‘s domin

1. Boole’s inequality In probability theory, Boole’s inequality, also known as the union bound, says that for any finite or countable set of events, the probability that at least one of the events happens is no greater than the sum of the probabilities …

秩为 1 的矩阵的一些性质

前言 从上面的分析和例题看到&#xff0c;对于秩为1的n阶矩阵&#xff0c;零是其n重或n-1重特征值&#xff0c;如果是n-1重&#xff0c;则非零特征值是矩阵的主对角线元素之和;另外还看到&#xff0c;秩为1的矩阵可以分解为一个非零列向量与另一个非零列向量的转置的乘积&#…

probability space 概率空间,Filtration,σ-algebras

1. probability space 概率空间 1.1 概率基础 1.2 概率空间 2. Filtration filtration在钱敏平老师和龚光鲁老师的《随机过程论》中直接称其为非降的KaTeX parse error: Undefined control sequence: \sigmma at position 1: \̲s̲i̲g̲m̲m̲a̲代数族。如图。 一般叫σ\…

概率论中PDF、PMF和CDF的区别与联系

在概率论中&#xff0c;经常出现PDF、PMF和CDF&#xff0c;那么这三者有什么区别与联系呢&#xff1f; 1. 概念解释 PDF&#xff1a;概率密度函数&#xff08;probability density function&#xff09;, 在数学中&#xff0c;连续型随机变量的概率密度函数&#xff08;在不至…

随机游走 Random Walk

随机游走&#xff08;英语&#xff1a;Random Walk&#xff0c;缩写为 RW&#xff09;&#xff0c;是一种数学统计模型&#xff0c;它是一连串的轨迹所组成&#xff0c;其中每一次都是随机的。[1][2]它能用来表示不规则的变动形式&#xff0c;如同一个人酒后乱步&#xff0c;所…