Last modified: 2024.08.26
重点サンプリング
モンテカルロ積分
確率密度関数
この期待値計算における積分を
によって近似する方法をモンテカルロ積分という.大数の法則により,
重点サンプリング
上記のモンテカルロ積分をコンピュータで計算するには確率分布
重点サンプリングはモンテカルロ積分における確率分布
つまり,『確率変数
式
で近似できる.
代理分布
例:ラプラス分布の平均を計算する
ラプラス分布
を重点サンプリングによるモンテカルロ積分によって計算することを考える.代理分布として標準正規分布:
を用いる.標準正規分布からの乱数はPythonであればNumpyの関数 np.random.randn
を利用すれば容易に生成できる.
Pythonに限らず,MATLABやJulia等の多くの言語でこのような randn
関数はサポートされている.
問題のモンテカルロ積分の計算をPythonで書くと以下のようになる:
import numpy as np
def p(x):
return np.exp(-abs(x)) / 2
def q(x):
return np.exp(-x ** 2 / 2) / np.sqrt(2 * np.pi)
N = 1000
x = np.random.randn(N)
print(np.sum(x * p(x) / q(x)) / N)
参考文献
- 杉山将,『統計的機械学習 : 生成モデルに基づくパターン認識』,オーム社,2009.