ベイズ確率 | 確率・統計
記号について:本稿では事象一般を表す記号として $A, B$ を使いますが、パラメータ推定の文脈(後述の「パラメータ推定への応用」以降)では、$B$ の代わりに推定対象のパラメータを表す慣習的な記号 $\theta$ を使います。$\theta$ はベルヌーイ分布なら $p$、カテゴリカル分布なら $\boldsymbol{p}$(ベクトル)というように、扱う分布に応じた具体的な記号に置き換わる総称だと考えてください(ベルヌーイ・二項分布、カテゴリカル分布 を参照)。
ベイズの定理
ベイズの定理は、事前確率 $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)$:事前確率(データを見る前の信念)
- $P(B\vert{}A)$:事後確率(データAを見た後の信念)
- $P(A\vert{}B)$:尤度(Bが真だとしたときにAが起きる確率)
- $P(A)$:正規化定数(確率の合計を1にそろえるための値)
導出方法
一般に $P(A\vert{}B) = P(B\vert{}A)$ は成り立ちません。
一方、確率の乗法定理および同時確率は、対称性($P(A,B) = P(B,A)$)が成り立つため以下の式は等しくなります。
NOTE
$P(A\vert{}B)$ は数式としては $\frac{P(B\vert{}A)P(A)}{P(B)}$ で求められますが、$\frac{P(A \cap B)}{P(B)}$ で求める(与えられる)と考えるのが自然です。
ベイズ推定
ベイズ推定はベイズの定理を「未知の量を推定する」という目的のために繰り返し応用する統計的パラダイムです。
ベイズ推定は観測データ $A$ を通じて仮説・パラメータ $B$ の事前確率 $P(B)$ を尤度 $P(A\vert B)$ を使って更新します。 尤度は $B$ の仮説のもとでデータ $A$ の起こりやすさを表すモデル側の関数で固定されています(例:コインの表が出る確率がθのときにn回中k回表が出る確率など)。
上記が逐次的(sequential) に行われます。
- 最初に事前確率 $P(B)$ を設定
- データ $A_1$ を観測 → 事後確率 $P(B\vert A_1)$ を計算
- この事後確率を次の事前確率として使う 事後確率を次の事前確率として使ってよいか
- 新しいデータ $A_2$ を観測 → $P(B\vert A_1, A_2)$ を計算
- これを繰り返す
ベイズ推定は新しい観測値が来るたびに、直前の事後確率を次の事前確率として使い、信念(確率分布)を逐次更新していきます。
$x,\theta$ 表記での言い換え
上記を、$A,B$ ではなく、これまでの文脈で使ってきた観測値 $x$ と分布のパラメータ $\theta$ で書き直すと、以下のようになります(意味は全く同じで、記号を置き換えただけです)。
$B$ を「パラメータ $\theta$」、$A$ を「観測データ $x$」に対応させると、
\[P(\theta\mid x) = \frac{P(x\mid\theta)\,P(\theta)}{P(x)}\]ここで $P(x\mid\theta)$ は、最尤推定法 のときの尤度 $L(\theta)$ と同じものです。
逐次更新の手順も同様に書き直せます。
- 最初に事前分布 $P(\theta)$ を設定
- データ $x_1$ を観測 → 事後分布 $P(\theta\mid x_1)$ を計算
- この事後分布を次の事前分布として使う
- 新しいデータ $x_2$ を観測 → $P(\theta\mid x_1,x_2)$ を計算
- これを繰り返す
$\theta$ はベルヌーイ分布なら $p$、カテゴリカル分布なら $\boldsymbol{p}$ に対応する総称であることは、本稿冒頭の記号についての注記の通りです。$A,B$ という抽象的な事象の記号よりも、$x$(観測値)・$\theta$(パラメータ)という記号の方が、これまで扱ってきたベルヌーイ分布・カテゴリカル分布の具体例と直接結びつけやすいので、以降の節でも適宜この表記を使います。
$P(A|B)$、$P(B)$、$P(A)$
\[P(B\vert{}A) = \frac{P(A\vert{}B)\,P(B)}{P(A)}\]| 項目 | 既知か | 説明 |
|---|---|---|
| $P(B)$ | 既知(仮定として与える) | 分析者が事前に設定する値。主観的な信念、あるいは過去のデータから決める |
| $P(A\vert B)$ | 既知(モデルとして与える) | 尤度関数。「B が真ならこう観測されるはず」というモデルの仮定から決まる(例:二項分布など) |
| $P(A)$ | 通常は既知ではない → 計算で求める | ほとんどの場合、直接には分からない。周辺化(law of total probability)によって計算する |
$P(A)$ の求め方
$P(A)$ は $B$ が取りうる値の確率をすべて足し合わせます。
\[\begin{aligned} P(A) = \sum_{i} P(A \vert{} B_i)\, P(B_i) \quad \text{離散的確率} \\ P(A) = \int P(A\vert{}B)\, P(B)\, dB \quad \text{連続的確率変数} \end{aligned}\]つまり $P(A)$ は $B$ のすべての可能性について、$尤度 \times 事前確率$ を足し合わせた(積分した)ものであり、$P(A\vert B)$ と $P(B)$ から計算される二次的な量です。直接与えられることは稀です。
実務上のポイント
実際のベイズ推定では、$P(A)$ を明示的に計算しない場合も多いです。なぜなら:
\[P(B\vert{}A) \propto P(A\vert{}B)\, P(B)\]という比例関係だけで事後分布の形が分かるからです。$P(A)$ は「確率の合計を1にする」ための正規化定数に過ぎないので、最後に:
\[P(A) = \sum_i P(A\vert B_i)\,P(B_i)\]で正規化すれば十分、というケースが多いです(特に $B$ が離散的で選択肢が少ない場合)。
まとめ
- 既知として与えるもの:$P(B)$(事前確率)と $P(A\vert B)$(尤度モデル)
- 計算して求めるもの:$P(A)$(周辺尤度・正規化定数)= $\sum_i P(A\vert B_i)P(B_i)$
尤度と事後確率
数学的にはどちらも条件付き確率 $P(\cdot\vert\cdot)$ という形をしています。何を変数とみなすかが違います。
- 事後確率 $P(B\vert A)$:$A$(観測データ)を固定して、$B$(知りたいパラメータや仮説)を変数として見ている
- 尤度 $P(A\vert B)$:本来の確率としては $B$(パラメータや仮説)を固定して $A$(データ)を変数として見る読み方だが、実際に「尤度」と呼ぶときは逆に $A$(観測データ)を固定値、$B$ を変数とみなし、$B$ の関数として扱う
この「$B$ を変数、$A$ を固定値とみなした $P(A\vert 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$ を変数として観測データ $A$ を最もよく説明する $\theta$ を求めるのが最尤推定の考え方です。この $L(\theta\vert A)$ は、ベイズの定理の分子にある尤度 $P(A\vert B)$ と全く同じ量になっています。
何が固定されていて、何が違うのか
| 尤度 $P(A\vert\theta)$ の分布族 | $\theta$ 自体の分布 | |
|---|---|---|
| 最尤推定(MLE) | 固定(例:ベルヌーイ分布) | 考えない($\theta$ は単なる未知の定数として扱う) |
| ベイズ推定 | 固定(例:ベルヌーイ分布) | $P(\theta)$ という事前分布を新たに仮定する(例:ベータ分布) |
つまり、ベイズ推定で変わるのは「データの分布族を自由に選べるようになる」ことではなく、$\theta$ そのものを固定された未知定数として扱うのではなく、確率変数とみなして分布を与えるという点です。
尤度と尤度関数の厳密な区別
一般的な統計学の用語法では、以下のようなニュアンスの違いがあります。
| 用語 | 意味 |
|---|---|
| 尤度(likelihood) | 特定の $B$(あるいは $\theta$)の値における $P(A\vert B)$ という1つの数値 |
| 尤度関数(likelihood function) | $B$ を動かしたときの $P(A\vert B)$ 全体を捉えた関数 $L(B\vert A)$ そのもの |
例えば「$\theta=0.5$ のときの尤度は0.3」という言い方はできますが、「$\theta=0.5$ のときの尤度関数は0.3」とはあまり言いません。尤度関数は $\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)$ を計算する(ベルヌーイの尤度とベータの事前分布を組み合わせると、事後分布もベータ分布になるという性質があり、これを共役事前分布と呼びます)
まとめ
ベイズ推定は パラメータ $\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 人という母数の大きさから出る偽陽性の絶対数が、病気の人からの正しい陽性数を上回ってしまうのです。
ベイズの定理の記号と対応させる
- 事象 A:陽性
- 事象 B:病気
- $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付近だろう」という信念)
- コインを実際に投げてデータ(表・裏の結果)を観測する
- 観測結果を使って事前分布を事後分布に更新する
- さらにコインを投げるたびに、直前の事後分布を新しい事前分布として使い、また更新する
データが増えるほど事前分布の影響は薄れ、実際のデータに基づいた分布へと収束していきます。
ポイント
ベイズ推定の本質は、一発で答えを出すのではなく、証拠(データ)が積み重なるごとに信念(確率分布)を少しずつ更新していくという考え方にあります。
点推定(MLE)と分布推定(ベイズ推定)の違い
同じコイン投げの例で、最尤推定法(MLE)と比較すると、両者が「何を求めているか」の違いがはっきりします。
10回投げて7回表が出たとします。
- MLE:尤度 $L(\theta) = \theta^{7}(1-\theta)^{3}$ を最大化する $\theta$ を 1つだけ 求めます。
結果は単なる1つの数値です。$\theta=0.6$ かもしれない、$\theta=0.8$ かもしれない、という他の可能性についての情報は残りません。
- ベイズ推定:事後分布 $P(\theta\vert{}A) \propto P(A\vert{}\theta)\,P(\theta)$ を計算します。ここで求まるのは、$\theta$ が取りうる値それぞれについて「どれくらいもっともらしいか」を表した 分布全体 です。
| $\theta$ | 0.0 | … | 0.6 | 0.7 | 0.8 | … | 1.0 |
|---|---|---|---|---|---|---|---|
| 事後確率密度 | ほぼ0 | … | やや高い | 一番高い | やや高い | … | ほぼ0 |
$\theta=0.7$ 付近が一番高いものの、$0.6$ や $0.8$ にもそれなりの確率密度が乗っており、「$\theta$ がどの値でどれくらいありうるか」という濃淡(不確実性)の情報が、山型の曲線として丸ごと手に入ります。
なぜこの違いが実務上重要か
「10回中7回表」で得た $\hat\theta_{\text{MLE}}=0.7$ と、「10,000回投げて7,000回表」で得た $\hat\theta_{\text{MLE}}=0.7$ は、MLEでは全く同じ答えです。点推定値としては区別がつきません。
しかしベイズ推定では、後者(データ数が多い)の方が事後分布の山がより鋭く尖り(不確実性が小さい)、前者は山がなだらかに広がります。つまり「$\theta$ がどれくらい確信を持って0.7だと言えるか」という推定の確からしさ(不確実性)そのものが、分布の形として自動的に表現されます。
言い換えると、MLEは「一番ありそうな値は何か」だけに答えるのに対し、ベイズ推定は「$\theta$ が各値である確率(信念)はそれぞれどれくらいか」という問いに、分布全体で答えています(ベータ分布・ディリクレ分布を使った具体的な計算は ベータ分布、ディリクレ分布 を参照)。
なぜ昔はベイズ推定に否定的な見方があったか
ベイズ推定は現在では広く使われていますが、歴史的には以下のような理由で批判・敬遠されてきました。
1. 確率の解釈(頻度主義 vs ベイズ主義)の対立
- 頻度主義(Frequentist)の立場:確率とは「同じ条件で試行を無限に繰り返したときの相対頻度の極限」としてのみ意味を持つ、という考え方。この立場では $\theta$(例:コインの真の表が出る確率)は未知だが固定された定数であり、繰り返し試行できる「ランダムな事象」ではありません。そのため $\theta$ に確率分布 $P(\theta)$ を与えること自体が、確率という言葉の正しい使い方ではない、という批判です。
- ベイズ主義(Bayesian)の立場:確率を「不確実性の度合い・信念の強さ」として捉えるため、$\theta$ に分布を与えることに問題はないと考えます。
つまり対立の核心は「分布を推定するのがけしからん」ということではなく、そもそも $\theta$ に確率分布という概念を割り当てて良いのか、という確率の定義そのものに関する立場の違いです。
2. 事前分布の主観性
事前分布 $P(\theta)$ をどう設定するかは、多くの場合、分析者の主観的な信念に依存します。同じデータを使っても分析者ごとに異なる事前分布を選べば異なる結論が出てしまう、という点が「客観的・再現可能であるべき科学」という価値観と衝突し、非科学的だと批判されました。
3. 計算コストの問題(歴史的・実務的な理由)
理論的な対立に加えて、計算が現実的に不可能だったという事情も大きいです。事後分布の正規化定数
\[P(A) = \int P(A\vert{}\theta)\,P(\theta)\,d\theta\]は、高次元のパラメータでは解析的に解けず、コンピュータの性能も不十分でした。1990年代にMCMC(マルコフ連鎖モンテカルロ法)などのサンプリング手法が実用化されて初めて、複雑なベイズ推定が現実的に計算可能になりました。
現在では、MCMCなどの計算手法の発展や、機械学習分野での実用上の有用性(不確実性の定量化ができる、少ないデータでも事前知識を組み込める等)から、ベイズ的手法は広く受け入れられています。
ナイーブベイズ
ベイズの定理を分類問題に応用したものがナイーブベイズ分類器です。
基本アイデア
特徴量 $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になる問題(→ラプラススムージングで対処)
まとめ
- ベイズの定理:証拠に基づいて信念を更新するための数学的な公式
- ベイズ推定:パラメータの不確実性を確率分布として扱い、データで逐次更新していく統計的枠組み
- ナイーブベイズ:ベイズの定理に「特徴量の独立性」という単純化した仮定を加え、分類問題に応用したアルゴリズム
補足
事後確率を次の事前確率として使ってよいか
結論:条件付き独立性の仮定のもとでは数学的に厳密に正しい(近似ではない)。
導出:連鎖律から
2つのデータ $A_1, A_2$ を観測したときの事後確率をベイズの定理で書く:
\[P(B \vert A_1, A_2) = \frac{P(A_1, A_2 \vert B)\, P(B)}{P(A_1, A_2)}\]同時尤度 $P(A_1, A_2 \vert B)$ を連鎖律で分解:
\[P(A_1, A_2 \vert B) = P(A_2 \vert A_1, B)\, P(A_1 \vert B)\]代入すると:
\[P(B \vert A_1, A_2) = \frac{P(A_2 \vert A_1, B)\, P(A_1 \vert B)\, P(B)}{P(A_1, A_2)}\]ここで $P(B\vert A_1) = \dfrac{P(A_1\vert B)\,P(B)}{P(A_1)}$ を使って書き換えると:
\[P(B \vert A_1, A_2) = \frac{P(A_2 \vert A_1, B)\; P(B \vert A_1)}{P(A_2 \vert A_1)}\]これは $P(B\vert A_1)$ を「事前確率」、$P(A_2\vert A_1, B)$ を「尤度」とみなしたベイズの定理そのもの。
重要な前提:条件付き独立性
$A_2$ が $B$ を条件として $A_1$ と独立なら:
\[P(A_2 \vert A_1, B) = P(A_2 \vert B)\]このとき更新式は:
\[P(B\vert A_1, A_2) \propto P(A_2\vert B)\, P(B\vert A_1)\]→ まさに「$P(B\vert A_1)$ を新しい事前確率として、$A_2$ の尤度で更新する」手続きと一致する。
まとめ
| 問い | 答え |
|---|---|
| $P(B\vert A_1)$ を次の事前として使えるか | 使える(厳密に正当化される) |
| 条件は何か | $A_2$ が $B$ を条件とすれば $A_1$ と独立(= i.i.d. 的な観測) |
| もし独立でなかったら | $P(A_2\vert A_1, B)$ という「$A_1$ も考慮した尤度」を使えば依然として厳密に正しい |
「事後確率を次の事前確率とみなす」のは近似・便宜的な扱いではなく、ベイズの定理を繰り返し適用した結果として数学的に導かれる性質。これがベイズ推定と逐次学習(オンライン学習)が自然に相性が良い理由。