条件付き確率・ベイズの定理
条件付き確率(conditional probability)
2つの事象
このとき、
を、条件
事象の独立性(independency)
条件付確率がもとの確率と一致する、すなわち、
のとき、言い変えると、
のとき、事象A, Bは独立であるという。
全確率の公式(law of total probability)
事象の列
つまり、
このとき、任意の事象
証明
ゆえに、
Bayesの定理
状況設定は上と同じとする。
すなわち、
このとき、確率0でない任意の事象
証明
右辺の分母は、全確率の公式で示したように、
これは両辺とも、
Bayesの定理の意味
Bayesの定理自体は、条件付き確率の定義をちょっと変形しただけで、定理と言っていいのかよくわからないくらい簡単なものであるが、重要なのはその意味である。
Bayesの定理は、
つまり、はじめは、何の前提もなかったため
その変換は、分母のややこしい式(規格化定数)を除けば、尤度
スローガン的に書けば、
ということである。
Bayesの定理の例
沈没船がある海域に沈んでおり、沈没船を探索したい。
海域は4つの海域A, B, C, Dに分けられており、我々はそれを順次探索していく。
探索が始まる前、我々は何の知識もないので、沈没船がどこに沈んでいるかは同様に確からしい、とする。
つまり、沈没船が海域Xに沈んでいる確率を
さて、探索を開始するが、探索機の性能は、もし実際に沈没している場所を探索していたとしたら3回に2回程度で成功する程度のもの(大変素晴らしい性能)とする。
まず、Aの海域を探索する。
残念ながら見つからない。この事象を
- 沈没船が海域Aに沈んでおらず(B, C, Dのいずれかに沈んでおり)、それゆえ見つからなかった
- 沈没船は海域Aに沈んでいたが、探索機が外した
Bayesの定理によって、
と計算される。
の変化分は、それを打ち消すように
となる。
これが事象
次に、海域Aを探すよりも別の海域を探すのが良いだろうから、海域Bを探す。
残念ながら、やはり見つからない。
この事象を
確率分布の変化分を今度は事前確率にしたがって重みを付けて分配する。すなわち、
となる。
さらに、海域Cを探す。見つからない。 確率分布の変化は、
さらに、海域Dを探す。見つからない。 確率分布の変化は、
計算を少し端折ったので、コードにも落としておく。
#! /usr/bin/env python
x = 1 / 4
a = [x, x, x, x]
p = 1 / 3
print(f"a: {a[0]:.3f}, b: {a[1]:.3f}, c: {a[2]:.3f}, d: {a[3]:.3f}")
for i in range(4):
b = 1 - a[i]
k = 1 / (1 - (1 - p) * a[i])
s = k * p * a[i]
t = a[i] - s
a[i] = s
for j in range(4):
if j == i:
continue
w = a[j] / b
a[j] += w * t
print(f"a: {a[0]:.3f}, b: {a[1]:.3f}, c: {a[2]:.3f}, d: {a[3]:.3f}")
これを実行すると次のようになり、手計算と一致する。
a: 0.250, b: 0.250, c: 0.250, d: 0.250
a: 0.100, b: 0.300, c: 0.300, d: 0.300
a: 0.125, b: 0.125, c: 0.375, d: 0.375
a: 0.167, b: 0.167, c: 0.167, d: 0.500
a: 0.250, b: 0.250, c: 0.250, d: 0.250
今、A, B, C, Dの海域をすべて探索し、そのいずれでも発見に至らなかった。
最後に得られる確率分布が、最初の確率分布に戻っているのは、「振り出しに戻った」という感覚に一致する。