上一节说了蒙特卡洛方法的一个应用-计算积分(数学期望),本节总结另外一个应用---采样。一般的蒙特卡洛法有直接采样法、接受-拒绝抽样法、重要性抽样法等。接受-拒绝抽样法、重要性抽样法适合于概率密度复杂(如密度函数由多个变量,各变量相互不独立,密度函数形式复杂),不能直接抽样的情况。本节主要介绍接受-拒绝法。
假设有随机变量x,取值,其概率密度函数为p(x)。目标是得到该概率分布的随机样本。假设p(x)不可以直接抽样。接受-拒绝法的基本思路是,找一个可以抽样的分布,称为建议分布(proposal distribution)。假设q(x)是建议分布的概率密度函数,并且有q(x)的c倍一定大于等于p(x)。如图所示,
这样有2点可知,1.q(x)是易采样的;2.对于q(x)采样出来的样本有的概率被留下来作为p(x)的采样结果;3.这样先用q(x)采样,然后再用做一层过滤,就可以得到p(x)的采样的结果。
具体算法:
输入:抽样的目标概率分布的概率密度函数p(x);
输出:概率分布的随机样本。
参数:样本数n
(1)选择概率密度函数为q(x)的概率分布,作为建议分布,使其对任一x满足,其中c>0.
(2) 按照建议分布q(x)随机抽样得到样本
(3)由于以 被保留下来,所以按照均匀分布(0,1)范围内抽取u。如果,则将作为抽样结果;否则回到步骤(2)
(4)直至得到n个随机样本,结束。
总结:蒙特卡洛方法,首先还是对一个特定的已知的分布q(x)做采样,与算积分做累加不同的是,这里采用比较u和比较决定是否留下来。