重要性抽样有什么好处?

机器算法验证 可能性 采样 蒙特卡洛
2022-04-09 03:10:04

这是重要性抽样的一个很好的例子:

%% true probability distribution
true_func = @(x) betapdf(x,1+1,1+10);

%% Do importance sampling
N = 10^6;
% uniform proposal distribution
x_samples = rand(N,1);
proposal = 1/N;
% evaluate for each sample
target = true_func(x_samples);
% calculate importance weight
w = target ./ proposal;
w = w ./ sum(w);
% resample, with replacement, according to importance weight
samples = randsample(x_samples,N,true,w);

%% plot
subplot(1,2,1)
x = linspace(0,1,1000);
plot(x, true_func(x) )
axis square

subplot(1,2,2)
hist(samples,1000)
title('importance sampling')
axis square

结果: 在此处输入图像描述

我不明白。如果我已经知道目标 pdf 的样子,那么我可以简单地这样做:

plot(true_func(linspace(0,1,N)));

我不需要进行重要性抽样,我只是在选择的线性空间中评估目标 pdf。

3个回答

重要性重采样不适用于绘制 PDF。用于对该 PDF 进行采样。有时,即使您知道目标 PDF 的公式,也很难从中取样。例如,一种典型的方法是逆变换方法,您需要能够解析计算 CDF 的逆。不能这样做的典型示例是正态分布,其中使用Box-Müller等另一种方法对其进行采样。

重要性抽样是一种蒙特卡洛积分方法,可用于估计随机变量函数的期望值该方法在 PDF 已知但感兴趣的预期值未知(并且无法从 PDF 分析计算)的情况下很有用。在这些情况下,只要生成分布合理,该方法的计算效率就很高。在您的问题中,您实际上还没有完成重要性抽样,因为您没有给出随机变量与您正在使用的分布的任何函数的估计值。

同样重要的是要记住,出于教学目的,在已知感兴趣的期望值(来自分析计算)的分布上使用重要性抽样来确认估计确实收敛到期望值是有用的.

该代码实际上是通过采样重要性重采样 (Rubin 1987) 来生成样本,即通过从原始 iid 样本(y1,,yn)U(0,1)

x_samples = rand(N,1);

根据分布 其中是重要性权重,目标均匀密度(应该是而不是.

P(X=yi)=ωi/j=1nωj
ωjωj=f(yj)/g(yj)ftrue_func = @(x) betapdf(x,1+1,1+10);g11/N

虽然这会产生收敛(在n) 积分的近似值取决于f并从模拟f它不是一个精确的独立同分布模拟f对于给定的f,由于(a)归一化引起的偏差w = w ./ sum(w);和(b)重采样值之间的依赖性。