ベイズ確率 | 確率・統計
ベイズの定理
ベイズの定理は、事前確率 $P(B)$ と尤度 $P(A\vert{}B)$ から、データ $A$ を観測した後の事後確率 $P(B\vert{}A)$ を求める式です。同時確率の対称性 $P(A,B) = P(B,A)$ から導かれ、既知の $P(A\vert{}B)$ を使って未知の $P(B\vert{}A)$ を計算できます。
\[P(B\vert{}A) = \frac{P(A\vert{}B)\,P(B)}{P(A)}\]- $P(B)$:事前確率(データを見る前の信念)
- $P(B\vert{}A)$:事後確率(データAを見た後の信念)
- $P(A\vert{}B)$:尤度(Bが真だとしたときにAが起きる確率)
- $P(A)$:正規化定数(確率の合計を1にそろえるための値)
導出方法
一般に $P(A\vert{}B) と P(B\vert{}A)$ 等しくありません($P(A\vert{}B) \neq P(B\vert{}A)$)。
一方、確率の乗法定理および同時確率は対称性($P(A,B) = P(B,A)$)が成り立つため以下の式は等しくなります。
尤度と事後確率
数学的にはどちらも条件付き確率 $P(\cdot\vert\cdot)$ という形をしています。何を変数とみなすかが違います。
- 事後確率 $P(B\vert A)$:$A$(観測データ)を固定して、$B$(知りたいパラメータや仮説)を変数として見ている
- 尤度 $P(A\vert B)$:$B$(パラメータや仮説)を固定して、$A$(データ)を変数として見ている、というのが本来の確率としての読み方だが…
実際には 尤度 は、$P(A\vert B)$ を、$B$ を変数、$A$ を固定値として $B$ の関数として扱ったものです。これを尤度関数(likelihood function)と呼び以下のように記載されます。
尤度関数とパラメータ推定
$P(A\vert B)$ という式を、$B$ を変数、$A$(観測データ)を固定値とみなして $B$ の関数として扱ったものを尤度関数(likelihood function)と呼びます。
\[L(B\vert A) = P(A\vert B)\]ここで $A$ を観測値、$B$ をパラメータ $\theta$ と考えれば最尤推定法(MLE)の尤度関数です。
\[L(\theta\vert A) = P(A\vert\theta)\]- $A$:実際に観測されたデータ(固定値)
- $\theta$:知りたいパラメータ(変数として動かす対象)
- $L(\theta\vert A)$:$\theta$ を動かしたときに、観測データ $A$ がどれだけ起こりやすいかを表す関数
最尤推定法は、観測データ $A$ を固定した上で、尤度 $L(\theta\vert A)$ を最大にするような $\theta$ を探す方法です。
\[\hat{\theta}_{\text{MLE}} = \arg\max_{\theta} L(\theta\vert A) = \arg\max_{\theta} P(A\vert\theta)\]つまり、「$\theta$ を変数として動かして、どの $\theta$ が観測データ $A$ を一番よく説明するか」を求めるのが最尤推定の考え方であり、この $L(\theta\vert A)$ がベイズの定理の分子にある尤度 $P(A\vert B)$ と全く同じ量になっています。
何が固定されていて、何が違うのか
| 尤度 $P(A\vert\theta)$ の分布族 | $\theta$ 自体の分布 | |
|---|---|---|
| 最尤推定(MLE) | 固定(例:ベルヌーイ分布) | 考えない($\theta$ は単なる未知の定数として扱う) |
| ベイズ推定 | 固定(例:ベルヌーイ分布)ここは同じ | $P(\theta)$ という事前分布を新たに仮定する(例:ベータ分布) |
つまり、ベイズ推定で変わるのは「データの分布族を自由に選べるようになる」ことではなく、「$\theta$ そのものを固定された未知定数として扱うのではなく、確率変数とみなして分布を与える」という点です。
具体例(ベルヌーイ分布の場合)
- 尤度:$P(A\vert\theta) = \theta^{x}(1-\theta)^{1-x}$ ← これはMLEでもベイズでも同じ、ベルヌーイ分布に固定
- 事前分布:$P(\theta)$ には、$\theta \in [0,1]$ という制約に適した分布族(典型的にはベータ分布 $\text{Beta}(\alpha,\beta)$)を新たに選んで与える
- 事後分布:$P(\theta\vert A) \propto P(A\vert\theta)\,P(\theta)$ を計算する(ベルヌーイの尤度とベータの事前分布を組み合わせると、事後分布もベータ分布になるという性質があり、これを共役事前分布と呼びます)
なぜ誤解が生じやすいか
「事後分布 $P(\theta\vert A)$」という言葉から、「$\theta$ の分布をデータに合わせて自由に選べる/変えられる」というイメージが浮かびやすいのだと思います。しかし実際にやっていることは、
- 尤度の分布族:データがどう生成されるかのモデル → 固定(MLEと同じ)
- 事前分布の分布族:$\theta$ についての事前の信念をどう表現するか → 新たに追加で選ぶ必要がある(これは分析者が明示的に決める必要があり、自動的に決まるものではありません)
という二段構えの仮定になっている、というのが正確な理解です。
まとめ
ベイズ推定が最尤推定と違う点は「分布族の制約から解放される」ことではなく、「パラメータ $\theta$ を確率変数として扱い、その不確実性を事前分布・事後分布という形で表現する」ことです。そのために逆に、尤度の分布族に加えて事前分布の分布族という追加の仮定が必要になります。
正規化定数:
\[P(A) = P(A\vert B)\,P(B) + P(A\vert \lnot B)\,P(\lnot B)\]具体例:病気検査とベイズの定理
同時確率の表
| 陽性 | 陰性 | 周辺確率 | |
|---|---|---|---|
| 病気 | 0.009 | 0.001 | 0.01 |
| 健康 | 0.099 | 0.891 | 0.99 |
| 周辺確率 | 0.108 | 0.892 | 1.00 |
状況設定
1000 人が住んでいます。
- 10 人が実際に病気にかかっている(事前、既知の情報)
検査を受けると:
- 病気の人:検査精度 90% → 10 人中 9 人が陽性
- 健康な人:偽陽性率 10% → 990 人中 99 人が陽性
図で考える
1000人
/ \
病気(10人) 健康(990人)
/ \ / \
陽性(9人) 陰性(1人) 陽性(99人) 陰性(891人)
検査で陽性の場合に病気である確率
陽性と判定された人の合計は:
- 9 人(病気で陽性) + 99 人(健康なのに陽性) = 108 人
そのうち本当に病気なのは 9 人なので:
\[P(病気\vert{}陽性) = \frac{9}{108} \approx 8.3\%\]同時確率で書くと、$P(病気, 陽性) = 9/1000 = 0.009$、$P(陽性) = 108/1000 = 0.108$ なので、
\[P(病気\vert{}陽性) = \frac{P(病気, 陽性)}{P(陽性)} = \frac{0.009}{0.108} \approx 8.3\%\]なぜ直感に反するのか
検査で陽性 = 病気と考えがちだが、実際は 91.7% が偽陽性です。
理由は、そもそも病気の人が少ない(1000 人中 10 人だけ)ので、検査の精度が高くても健康な 990 人という母数の大きさから出る偽陽性の絶対数が、病気の人からの正しい陽性数を上回ってしまうのです。
ベイズの定理の記号と対応させる
\[P(B\vert{}A) = \frac{P(A\vert{}B)\,P(B)}{P(A)}\]- $P(B)$:事前確率(データを見る前の信念) → $P(病気) = 10/1000 = 1\%$
- $P(B\vert{}A)$:事後確率(データAを見た後の信念) → $P(病気\vert{}陽性) \approx 8.3\%$
- $P(A\vert{}B)$:尤度(Bが真だとしたときにAが起きる確率) → $P(陽性\vert{}病気) = 9/10 = 90\%$
- $P(A)$:正規化定数(確率の合計を1にそろえるための値) → $P(陽性) = 108/1000 = 10.8\%$
これらを式に当てはめると:
\[P(病気\vert{}陽性) = \frac{P(陽性\vert{}病気) \times P(病気)}{P(陽性)} = \frac{0.90 \times 0.01}{0.108} \approx 8.3\%\]| 記号 | 意味 | 値 |
|---|---|---|
| $P(病気)$ | 事前確率(検査前の有病率) | $10/1000 = 1\%$ |
| $P(陽性\vert{}病気)$ | 尤度(病気なら陽性になる確率) | $9/10 = 90\%$ |
| $P(陽性)$ | 陽性になる全体の確率(正規化定数) | $108/1000 = 10.8\%$ |
| $P(病気\vert{}陽性)$ | 事後確率(陽性判定後に本当に病気である確率) | $9/108 \approx 8.3\%$ |
ベイズの定理は事前確率(そもそもの発生頻度)を無視してはいけないということです。検査の精度だけを見て判断すると、この町のケースのように大きく間違えてしまいます。
具体例:コイン投げ
コインの「表が出る確率」を推定したいとします。
- 事前分布を設定する(例:「表が出る確率は0.5付近だろう」という信念)
- コインを実際に投げてデータ(表・裏の結果)を観測する
- 観測結果を使って事前分布を事後分布に更新する
- さらにコインを投げるたびに、直前の事後分布を新しい事前分布として使い、また更新する
データが増えるほど事前分布の影響は薄れ、実際のデータに基づいた分布へと収束していきます。
ポイント
ベイズ推定の本質は、一発で答えを出すのではなく、証拠(データ)が積み重なるごとに信念(確率分布)を少しずつ更新していくという考え方にあります。
ナイーブベイズ
ベイズの定理を分類問題に応用したものがナイーブベイズ分類器です。
基本アイデア
特徴量 $x_{1}, x_{2},\dots, x_{n}$ が与えられたとき、クラス $C$ である確率を最大化します。
\[P(C\vert{}x_{1},\dots,x_{n}) \propto P(C) \times P(x_{1},\dots,x_{n}\vert{}C)\]ナイーブ(単純)と呼ばれる理由は、特徴量同士が互いに独立だと仮定するからです。
\[P(x_{1},\dots,x_{n}\vert{}C) \approx P(x_{1}\vert{}C) \times P(x_{2}\vert{}C) \times \ldots \times P(x_{n}\vert{}C)\]これは現実には成り立たないことが多い(例:文章中の単語は文脈的に関連し合う)ですが、それでも実用上驚くほどよく機能します。
具体例(スパムメール判定)
- クラス:「スパム」か「非スパム」
- 特徴量:メールに含まれる各単語の有無
学習段階で「スパムメールに”当選”という単語が出る確率」「非スパムメールに出る確率」などを訓練データから計算しておき、新しいメールが来たら各単語の出現確率を掛け合わせて、どちらのクラスの確率が高いかを判定します。
メリット・デメリット
- メリット - 計算が非常に高速(学習も予測も軽い) - 少ないデータでもそこそこ機能する - テキスト分類(スパム判定、感情分析)で特に強い
- デメリット - 独立性の仮定が非現実的(単語同士の相関を無視) - 確率の絶対値自体はあまり信頼できない(順位・大小関係は割と正確) - 訓練データにない単語が出ると確率が0になる問題(→ラプラススムージングで対処)