ベイズ確率
ベイズの定理
一般に条件付き確率 $P(A\vert{}B)$ と $P(B\vert{}A)$ は成り立ちません。
一方、確率の乗法定理および同時確率は対称性($P(A,B) = P(B,A)$)が成り立つため以下の式は等しくなります。
これを $P(B\vert{}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 A)$:事後確率(データAを見た後の信念) -
$P(A B)$:尤度(Bが真だとしたときにAが起きる確率) - $P(A)$:正規化定数
具体例
確率の掛け算より、「人数で考える」と直感的にわかりやすくなります。
状況設定
ある町に 1000人 が住んでいます。
- そのうち 10人 が実際に病気にかかっている
- 残りの 990人 は健康
検査を受けると:
- 病気の人:検査結果はほぼ正確 → 10人中 9人が陽性(1人は見逃し=偽陰性)
- 健康な人:まれに間違って陽性になる → 990人中 99人が陽性(偽陽性率10%)
図で考える
1000人
/ \
病気(10人) 健康(990人)
/ \ / \
陽性(9人) 陰性(1人) 陽性(99人) 陰性(891人)
質問:検査で「陽性」と言われたら、本当に病気である確率は?
陽性と判定された人の合計は:
9人(病気で陽性) + 99人(健康なのに陽性) = 108人
そのうち本当に病気なのは 9人 だけなので:
| P(病気 | 陽性) = 9 / 108 ≈ 8.3% |
なぜ直感に反するのか
多くの人は「検査で陽性 = ほぼ病気」と思いがちですが、実際は 91.7%が誤診(偽陽性) です。
理由はシンプルで、そもそも病気の人が少ない(1000人中10人だけ)ので、たとえ検査の精度が高くても、健康な990人という「母数の大きさ」から出る偽陽性の絶対数が、病気の人からの正しい陽性数を上回ってしまうのです。
これをベイズの定理の式に当てはめると
| P(病気 | 陽性) = [ P(陽性 | 病気) × P(病気) ] / P(陽性) |
| 記号 | 意味 | 値 |
|---|---|---|
| P(病気) | 事前確率(検査前の有病率) | 10/1000 = 1% |
| P(陽性|病気) | 尤度(病気なら陽性になる確率) | 9/10 = 90% |
| P(陽性) | 陽性になる全体の確率 | 108/1000 = 10.8% |
| P(病気 | 陽性) = (0.90 × 0.01) / 0.108 ≈ 8.3% |
人数で考えた答え(9/108)とぴったり一致します。
ポイント:ベイズの定理の本質は「事前確率(そもそもの発生頻度)を無視してはいけない」ということです。検査の精度だけを見て判断すると、この町のケースのように大きく間違えてしまいます。
ベイズ推定
ベイズ推定は、ベイズの定理を使ってパラメータや仮説についての信念を、データを見るたびに更新していく枠組みです。
| P(θ | D) ∝ P(D | θ) × P(θ) |
- θ:知りたいパラメータ(例:コインの表が出る確率)
- D:観測データ
- P(θ):事前分布(データを見る前の信念)
-
P(D θ):尤度(θのもとでデータDが観測される確率) -
P(θ D):事後分布(データを見た後の信念)
頻度論との違い
| 頻度論 | ベイズ推定 | |
|---|---|---|
| パラメータθ | 固定された未知の値 | 確率分布を持つ(不確実性そのものをモデル化) |
| 事前知識 | 使わない | 事前分布として明示的に組み込む |
| 結果 | 点推定・信頼区間 | 事後分布(確率分布そのもの) |
具体例:コイン投げ
コインの「表が出る確率」を推定したいとします。
- 事前分布を設定する(例:「表が出る確率は0.5付近だろう」という信念)
- コインを実際に投げてデータ(表・裏の結果)を観測する
- 観測結果を使って事前分布を事後分布に更新する
- さらにコインを投げるたびに、直前の事後分布を新しい事前分布として使い、また更新する
データが増えるほど事前分布の影響は薄れ、実際のデータに基づいた分布へと収束していきます。
ポイント
ベイズ推定の本質は、一発で答えを出すのではなく、証拠(データ)が積み重なるごとに信念(確率分布)を少しずつ更新していくという考え方にあります。占い師のように断定するのではなく、地道に確信を強めたり弱めたりしていくプロセスです。
ナイーブベイズ
ベイズの定理を分類問題に応用したものが「ナイーブベイズ分類器」です。
基本アイデア
特徴量 x1, x2, …, xn が与えられたとき、クラス C である確率を最大化します。
| P(C | x1,…,xn) ∝ P(C) × P(x1,…,xn | C) |
ここで「ナイーブ(単純)」と呼ばれる理由は、特徴量同士が互いに独立だと仮定するからです:
| P(x1,…,xn | C) ≈ P(x1 | C) × P(x2 | C) × … × P(xn | C) |
これは現実には成り立たないことが多い(例:文章中の単語は文脈的に関連し合う)ですが、それでも実用上驚くほどよく機能します。
典型的な用途:スパムメール判定
- クラス:「スパム」か「非スパム」
- 特徴量:メールに含まれる各単語の有無
学習段階で「スパムメールに”当選”という単語が出る確率」「非スパムメールに出る確率」などを訓練データから計算しておき、新しいメールが来たら各単語の出現確率を掛け合わせて、どちらのクラスの確率が高いかを判定します。
メリット・デメリット
メリット
- 計算が非常に高速(学習も予測も軽い)
- 少ないデータでもそこそこ機能する
- テキスト分類(スパム判定、感情分析)で特に強い
デメリット
- 独立性の仮定が非現実的(単語同士の相関を無視)
- 確率の絶対値自体はあまり信頼できない(順位・大小関係は割と正確)
- 訓練データにない単語が出ると確率が0になる問題(→ラプラススムージングで対処)
まとめ
- ベイズの定理:証拠に基づいて信念を更新するための数学的な公式
- ベイズ推定:パラメータの不確実性を確率分布として扱い、データで逐次更新していく統計的枠組み
- ナイーブベイズ:ベイズの定理に「特徴量の独立性」という単純化した仮定を加え、分類問題に応用したアルゴリズム