今回は最近のAIなどの技術で使われるベイズ推定を実装とともにご紹介する。
目的
使用したもの
実験の流れ
・同時確率(同時分布)
・Marginalizaion(周辺化)
・条件付き確率
・ベイズの定理
※この記事では上の2つの実験のみ
ではLet' 実験!
同時確率(Joint Probability)
同時確率は以下の数式で表現します。確率変数x,yがある時、
これは、xとyが同時に何回も起こったとします。それが他の組み合わせと比べて確率が高い、低いという様に使用します。
以下にx=1, y=2とx=3, y=1の時の同時確率を実装します!
今回使用する確率変数は学校まで行くのに、どんな人が(Y)、どの交通方法(X)を使用しているのかを確率で表現しています。
Y: 男性、女性、教員
X: 自転車、徒歩、電車、車
if __name__ == "__main__" :
argvs = sys.argv
P = [[0.15, 0.1, 0.1, 0.01], [0.1, 0.2, 0.05, 0.04], [0.05, 0, 0.1, 0.1]]
Y = ["男子", "女子", "教員"]
X = [" ", "自転車", "徒歩", "電車", "車"]
for str in X:
print str,
print "\n",
for i, y in enumerate(P):
print Y[i],
for x in y:
print x,
print "\n",
print "\n",
print "同時確率(同時分布)"
print "P(Y=2, X=0) = ", P[2][0]
print "P(Y=1, X=3) = ", P[1][3]
出力結果
自転車 徒歩 電車 車
男子 0.15 0.1 0.1 0.01
女子 0.1 0.2 0.05 0.04
教員 0.05 0 0.1 0.1
同時確率(同時分布)
P(Y=2, X=0) = 0.05
P(Y=1, X=3) = 0.04
同時確率は表を読み取るだけです!
1つ目の
P(Y=2, X=0)はP(Y=教員, X=自転車)=0,05となっています。
同時確率は確率変数xとyが同時に起こる確率です!
Marginalizaion(周辺化)
次はベイズの定理で重要となる周辺化を説明します!
まず定義式は、以下の様になります。
・
x, yの同時分布をyについて積分するとxの確率分布Pr(x)が求まります!
・
x, yの同時分布をxについて積分するとxの確率分布Pr(y)が求まります!
以下の画像で説明すると、x=横の一列は固定して、縦に積分を行なっていくと、Pr(x)が求まります。
また、y=縦の一列を固定して、横に積分を行なっていくとPr(y)が求まります。
では同時分布と同じ確率変数を用いて実験を行なっていきます。
ソースコードは上の続きです。
print "=================="*3
print "Marginalizaion(周辺化)"
Pr = [0 for i in range(len(P[0]))]
print Pr
for i, y in enumerate(P):
for j, x in enumerate(y):
Pr[j] += x
print "Pr(x) = ", Pr
print ""
Pr = [0 for i in range(len(P))]
print Pr
for i, y in enumerate(P):
for j, x in enumerate(y):
Pr[i] += x
print "Pr(x) = ", Pr
出力結果
自転車 徒歩 電車 車
男子 0.15 0.1 0.1 0.01
女子 0.1 0.2 0.05 0.04
教員 0.05 0 0.1 0.1
======================================================
Marginalizaion(周辺化)
[0, 0, 0, 0]
Pr(x) = [0.3, 0.30000000000000004, 0.25, 0.15000000000000002]
[0, 0, 0]
Pr(x) = [0.36, 0.39, 0.25]
周辺化は片方の変数を固定して積分を行う!
今回は長くなりましたので、ここまでとします。
続きはPythonで具体的に説明・導出するベイズ推定!〜その2〜で
・条件付き確率
・ベイズの定理
を説明します!
ありがとうございました!