#埃尔法哥哥#蒙特卡罗方法概述( 二 )
其他一些常见的连续分布 , 比如 t分布,F分布,Beta分布,Gamma分布 等 , 都可以通过类似的方式从 uniform(0,1) 得到的采样样本转化得到 。 在python的 numpy,scikit-learn 等类库中 , 都有生成这些常用分布样本的函数可以使用 。
不过很多时候 , 我们的x的概率分布不是常见的分布 , 这意味着我们没法方便的得到这些非常见的概率分布的样本集 。 那这个问题怎么解决呢?
接受-拒绝采样
对于概率分布不是常见的分布 , 一个可行的办法是采用接受-拒绝采样来得到该分布的样本 。 既然 p(x)p(x) 太复杂在程序中没法直接采样 , 那么我设定一个程序可采样的分布 q(xq(x) 比如高斯分布 , 然后按照一定的方法拒绝某些样本 , 以达到接近 p(x)p(x) 分布的目的 , 其中q(x)q(x)叫做 proposal distribution。
具体采用过程如下 , 设定一个方便采样的常用概率分布函数 q(x) , 以及一个常量 k , 使得 p(x) 总在 kq(x) 的下方 。
本文插图
首先 , 采样得到 q(x) 的一个样本$z 0$ , 采样方法如上 , 使用 uniform(0,1) 转换得到 。 然后 , 从均匀分布(0,kq(z0))(0,kq(z0))中采样得到一个值uu 。 如果uu落在了上图中的灰色区域 , 则拒绝这次抽样 , 否则接受这个样本z0z0 。 重复以上过程得到 n 个接受的样本 $z_0,z_1,…z {n?1}$,则最后的蒙特卡罗方法求解结果为:
整个过程中 , 我们通过一系列的接受拒绝决策来达到用q(x)模拟p(x)概率分布的目的 。
小结
使用接受-拒绝采样 , 我们可以解决一些概率分布不是常见的分布的时候 , 得到其采样集并用蒙特卡罗方法求和的目的 。 但是接受-拒绝采样也只能部分满足我们的需求 , 在很多时候我们还是很难得到我们的概率分布的样本集 。 比如:
对于一些二维分布p(x,y)p(x,y) , 有时候我们只能得到条件分布p(x|y)p(x|y)和p(y|x)p(y|x),却很难得到二维分布p(x,y)p(x,y)一般形式 , 这时我们无法用接受-拒绝采样得到其样本集 。
对于一些高维的复杂非常见分布p(x1,x2,…,xn)p(x1,x2,…,xn) , 我们要找到一个合适的q(x)和q(x)和k$非常困难 。
从上面可以看出 , 要想将蒙特卡罗方法作为一个通用的采样模拟求和的方法 , 必须解决如何方便得到各种复杂概率分布的对应的采样样本集的问题 。
此时就需要使用一些更加复杂的随机模拟的方法来生成样本 。 比如马尔科夫链蒙特卡罗方法 , 了解这个算法我们首先要对马尔科夫链的平稳分布的性质有基本的认识 。
推荐阅读
- 「」儿童节就送阿尔法蛋学习手表,安全贴心又能学习
- -悟空哥哥-618年中大促力来袭,iQOO Neo3应该是你不容错过的5G手机
- 埃尔法哥哥面对用户需求与AI技术之间的不平衡,AI产品经理该如何做?
- 埃尔法哥哥谁说机器学习难?它在这朵云上就没有门槛
- 埃尔法哥哥Python基础语法之“数据应用”
- 埃尔法哥哥Bionumerics软件的多位点VNTR分析
- 埃尔法哥哥一个例子就能读懂大数据,原来数据分析能在这些行业里使用
- 埃尔法哥哥C++程序员的职业生涯规划
- 埃尔法哥哥MAML-Tracker:用目标检测思路做目标跟踪?小样本即可得高准确率丨CVPR 2020
- 埃尔法哥哥数据规范之代码表