”ブログを更新してない” == ”実装の練習をしてない”
もっと更新しないといかんですな。
今回はUdemyで配信されてる授業、"ベイズ推定とグラフィカルモデル"からの練習。
周辺化
周辺化(Marginalization)とは、
パラメータごとに積分を行い、パラメータの数を減らす操作のことを言います。
例えば同時分布があったとします。
同時分布とは二つのパラメータに関しての確率分布のことです。
(3,3)はめっちゃ起こりやすい、87%!!
(1,2)はほとんどないよ、4%!!
・・・みたいなもの。
同時分布は確率分布の定義に沿っているので全部の点に関して和をとったら、1になります。
ってことでが連続分布だとして、
が成立。離散だったらに変わるだけですね。
ここで、やにのみ積分をしたらどうなるか。
二次元分布が一次元分布になってパラメータが一個なくなります。
これが周辺化。文字じゃわかりづらいので図を作ります。
可視化で確認
二次元正規分布のヒートマップを作ります。
こちらの記事を参考に、というか丸パクリさせてもらいました。
まあ、ここがメインではありませんので御容赦くだせえ。
ってことで、ヒートマップはこんな感じ。
こいつをx,yに関してそれぞれ周辺化してみます。
#周辺化 Ym = np.sum(Z,axis=0) Xm = np.sum(Z,axis=1) plt.figure(2) plt.plot(x,Ym) plt.savefig("Ym.png") plt.figure(3) plt.plot(Xm,y) plt.savefig("Xm.png")
上のコードを付け加えると周辺化されます。
やっていることはZの二次元配列を行、列ごとに和を取っているだけ。
コードの上では連続も離散も、とにかく和ですからね。sumでいいんです。
出てきた画像がこちら。
綺麗に正規分布が出てきました。
またこの式、
からも分かるように、この正規分布を積分したら1になります。
つまり周辺化により作られたこれらの分布も確率分布の定義に沿っていますね。
以上です。
周辺化は大事な概念なので、簡単だけどしっかり理解しとかないと。
p.s. 定期的に書かないと、記事書くこと自体に時間がかかっちゃうわ。