当前位置:网站首页>拒绝采样小记
拒绝采样小记
2022-07-31 05:16:00 【Young_win】
section 1
拒绝采样最关键的部分,搞个矩形、向矩形里投点等等,所做的一切都是为了获得一个密度曲线所围成区域的均匀分布。只要能获得这样一个在密度曲线下满足均匀分布的样本,我们就可以获得与该密度曲线相匹配的随机变量的采样样本。方法是,只需把每个蓝点的横坐标提取出来,这些横坐标所构成的样本就是我们的目标样本。

step1:用一个矩形将这个密度曲线套起来,把密度曲线 框在一个矩形里。
step2:向矩形里随机投点10000次(虚值)。随机投点意味着在矩形这块区域内,这些点是满足均匀分布的。
step3:有的点落在了密度曲线下侧,有的点落在了密度曲线的上侧。只保留密度曲线下侧的点。
step4:把每个蓝点的横坐标提取出来,这些横坐标所构成的样本就是我们的目标样本。
section2
上述用了一个矩形,该矩形就是一个满足均匀分布的建议分布,建议分布只是获得目标密度函数曲线下均匀分布样本的一个辅助工具。采用均匀分布作为建议分布有时效率很低,为什么这么说?从上例就可以看出,均匀分布的好多点(那些绿点)都被剔除了,造成了一种浪费。可以选择一些其他曲线来把密度曲线框起来,效率会提高一点。
这里目标密度函数曲线为 h ( x ) h(x) h(x),对应于下图中的蓝线;建议分布密度曲线为 g ( x ) g(x) g(x),我们把 g ( x ) g(x) g(x)乘上一个常数因子 c c c,然后 用 c g ( x ) cg(x) cg(x)这条曲线 将目标密度曲线框起来。
假定满足 g ( x ) g(x) g(x)的随机变量易于采样,拒绝采样的步骤如下:
- 从 g ( x ) g(x) g(x)采到一个样本数据,记 x ⋆ x^{\star} x⋆,把它作为一个建议
- 要不要接受这个建议 作为满足 h ( x ) h(x) h(x)分布的一个样本数据呢?我们定义一个接受概率: α = h ( x ⋆ ) c g ( x ⋆ ) \displaystyle\alpha = \frac{h(x^{\star})}{c g(x^{\star})} α=cg(x⋆)h(x⋆)
也就是说,我们以 α \alpha α的概率 接受 x ⋆ x^{\star} x⋆ 作为 h ( x ) h(x) h(x)分布的一个样本数据。
实际操作中,取一个 U ( 0 , 1 ) U(0, 1) U(0,1)的随机数 μ \mu μ,如果 μ < α \mu<\alpha μ<α,就接受 x ⋆ x^{\star} x⋆作为 h ( x ) h(x) h(x)的一个样本数据;否则,把它舍弃掉,回到1.步继续循环。最终可以获得一个样本。
- 文章开头是一下子抽取10000个点,到后来怎么成了一个个抽了呢?其实它们是对应的,把蓝点去掉的过程 就相当于做是否拒绝判断的过程。
- 如果有密度曲线下的均匀分布样本,就可以得到与密度曲线相匹配的分布的一个样本。
- 如果建议分布的形状和目标分布越接近,采样的效率就越高。
参考文献:https://gaolei786.github.io/statistics/reject.html
边栏推荐
- 著名网站msdn.itellyou.cn原理分析
- sql 添加 default 约束
- Understanding of objects and functions in js
- this points to the problem
- 多元线性回归方程原理及其推导
- jenkins +miniprogram-ci upload WeChat applet with one click
- 纯shell实现文本替换
- 我的训练函数模板(动态修改学习率、参数初始化、优化器选择)
- SSH automatic reconnection script
- [swagger close] The production environment closes the swagger method
猜你喜欢

pytorch模型微调finetuning训练image_dog(kaggle)

机器学习和深度学习概述

flutter arr dependencies

深度学习知识点杂谈

WeChat applet source code acquisition and decompilation method

为什么bash中的read要配合while才能读取/dev/stdin的内容

CMOS管原理,及其在推挽电路中的应用

VS connects to MYSQL through ODBC (2)

JS写一段代码,判断一个字符串中出现次数最多的字符串,并统计出现的次数JS

VS connects to MYSQL through ODBC (1)
随机推荐
VTK:Could not locate vtkTextRenderer object.
cv2.imread()
Android software security and reverse analysis reading notes
quick-3.5 lua调用c++
quick-3.6源码修改纪录
360 加固 file path not exists.
After unicloud is released, the applet prompts that the connection to the local debugging service failed. Please check whether the client and the host are under the same local area network.
Pytorch实现ResNet
用pytorch里的children方法自定义网络
动态规划(一)| 斐波那契数列和归递
VS通过ODBC连接MYSQL(二)
网页截图与反向代理
纯shell实现文本替换
Nmap的下载与安装
Powershell中UTF-8环境中文乱码解决办法
小米手机短信定位服务激活失败
The server time zone value ‘й‘ is unrecognized or represents more than one time zone
自定dialog 布局没有居中解决方案
Understanding of js arrays
quick-3.5 无法正常显示有混合纹理的csb文件