(自分用メモ)ベイズ統計モデリング入門中
説明変数x、目的変数yとして、3つのパラメータ(a,b,s)を持つ以下のようなモデルを作ってみる (簡単のため全て正規分布にしている)。
y~Normal(ax+b, s)
a(prior)~Normal(Hma, Hsa)
b(prior)~Normal(Hmb, Hsb)
s(prior)~Normal(Hms, Hss)
※Hma〜Hssはハイパーパラメータで、人手で恣意的に決めていい。
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
以下、p(Y|M,S)を正規分布の確率密度の値とする。
y~Normal(M,S)のモデルにおいて、y=Yとなる確率またはlikelihoodは、p(Y|M,S)である。
(確率の計算と尤度の計算に何の違いがあるのかわからん)。
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
サンプルが3つ得られたとする。
(X1,Y1),(X2,Y2),(X3,Y3)
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
パラメータが特定の値 (a,b,s)=(A,B,S) をとるとき、posteriorを求めたい。
ベイズ統計で一般的な以下の関係を使う。
posterior ∝ prior * likelihood
priorとlikelihoodをそれぞれ求めれば、posterior(の相対比率)が求められる。
prior
モデルのところに記述した(a,b,s)の各パラメータのpriorを使う。
aのpriorであるNormal(Hma, Hsa)からa=Aとなる確率を求めると、p(A|Hma, Hsa)になる。
b,sでも同様にB,Sとなる確率を求めていき、それらの確率の積をとる。
prior(A,B,S) = p(A|Hma, Hsa) * p(B|Hmb, Hsb) * p(S|Hms, Hss)
likelihood
(a,b,s)=(A,B,S)のとき、モデルは下記のものになる。
y~Normal(Ax+B, S)
まず1つのサンプル(X1,Y1)について考える。
単純にモデルの変数を置き換えると以下のようになる。
Y1~Normal(AX1+B, S)
すなわち「Y1は『平均がAX1+B, 標準偏差がSの正規分布』から生成された」ことを意味する。
この1サンプルでのlikelihoodは、
p(Y1|AX1+B, S)
となる。X1,Y1,A,B,Sはすでに分かっている値なので、1つのスカラー値を導出可能である。
3つのサンプルでのlikelihoodは、それぞれのサンプルのlikelihooodの積をとる。
likelihood(A,B,S,X,Y) = p(Y1|AX1+B,S)*p(Y2|AX2+B,S)*p(Y3|AX3+B,S)
ここで、サンプルごとに正規分布の平均が違うことに注意する。
すなわち、Y1,Y2,Y3はそれぞれ別の正規分布から生成されている。
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
というわけでposteriorに戻ってくると、さっき求めたpriorとlikelihoodを使って以下のようになる。
posterior ∝ prior * likelihood
posterior ∝ {p(A|Hma, Hsa) * p(B|Hmb, Hsb) * p(S|Hms, Hss)} * {p(Y1|AX1+B, S) * p(Y2|AX2+B, S) * p(Y3|AX3+B, S)}
この式を見ると、サンプルの数が増えるごとにlikelihoodの影響力が強くなっていくことが分かる。
なお、posteriorの比例係数(ベイズの法則での分母)はモデルの形式とハイパーパラメータのみによって決まり、A,B,Sに依存しない値である。
- MAP推定をする場合、posteriorの大小比較ができればいいだけなので、分母は気にしなくていい。
- サンプリングをする場合、posteriorの比がとれればいいだけなので、分母は気にしなくていい。