ベイズ推論入門:事前確率と尤度から事後確率を求める

こんにちは。ゆうせいです。

ある結果が起きたとき、

「その原因は何だったのだろう?」

と考えることがあります。

例えば、生徒が学校に遅刻したとします。

遅刻の原因として、次の3つを考えてみましょう。

  • 寝坊
  • 電車の遅延
  • 自転車のパンク

実際に「遅刻した」という事実が分かったとき、どの原因だった可能性が最も高いのでしょうか。

このように、観測された結果をもとに原因の可能性を更新する考え方がベイズ推論です。


1.事前確率とは

まず、「遅刻した」という結果を見る前に、それぞれの原因がどのくらい起こりそうかを考えます。

今回は、遅刻の原因が次の3種類のいずれかであると仮定します。

  • 寝坊:0.6
  • 電車の遅延:0.3
  • 自転車のパンク:0.1

合計すると、

0.6 + 0.3 + 0.1 = 1

となります。

このような、新しい情報を得る前に考えている確率を「事前確率」といいます。

例えば、寝坊を A とすると、

P(A)=0.6

です。


2.尤度とは

次に、それぞれの原因が発生した場合に、「遅刻する」という結果がどのくらい起こりやすいかを考えます。

今回は次のように仮定します。

  • 寝坊した場合に遅刻する確率:0.9
  • 電車が遅延した場合に遅刻する確率:0.8
  • 自転車がパンクした場合に遅刻する確率:1.0

寝坊を A、遅刻を B とすると、

P(B|A)=0.9

です。

これは、

「寝坊した場合、90%の確率で遅刻する」

という意味です。

このような、ある原因を仮定したときに、観測した結果がどのくらい起こりやすいかを「尤度」といいます。


3.事前確率と尤度を掛ける

それでは、

事前確率 × 尤度

を計算してみましょう。

寝坊の場合

0.6 × 0.9 = 0.54

電車の遅延の場合

0.3 × 0.8 = 0.24

自転車のパンクの場合

0.1 × 1.0 = 0.10

したがって、

  • 寝坊:0.54
  • 電車の遅延:0.24
  • 自転車のパンク:0.10

となります。

合計すると、

0.54 + 0.24 + 0.10 = 0.88

です。

ここで、

「確率なのに合計が1にならない」

と思うかもしれません。

しかし、この段階では合計が1にならなくても問題ありません。


4.0.54は何を意味しているのか

寝坊の場合の0.54は、

P(A) × P(B|A)

です。

これは、

P(A∩B)=0.54

を意味します。

つまり、

寝坊し、かつ遅刻する確率

です。

まだ、

遅刻した人の原因が寝坊だった確率

ではありません。

この違いが、ベイズ推論を理解するうえで重要です。


5.0.88は何を意味しているのか

先ほど、

0.54 + 0.24 + 0.10 = 0.88

となりました。

今回、

「遅刻の原因は、この3つのいずれかである」

と仮定しています。

したがって、0.88は遅刻する確率全体を表します。

遅刻を B とすると、

P(B)=0.88

です。


6.遅刻したことが分かったら

ここで、実際にその人が遅刻したことが分かったとします。

今知りたいのは、

「遅刻した人の中で、寝坊した人はどのくらいいるのか」

です。

遅刻したケース全体は0.88です。

そのうち、寝坊かつ遅刻したケースは0.54です。

したがって、

P(A\mid B)=\frac{0.54}{0.88}\approx0.614

となります。

つまり、

遅刻したことが分かったとき、その原因が寝坊である確率は約61.4%

です。


7.他の原因も計算する

電車の遅延については、

\frac{0.24}{0.88}\approx0.273

となります。

したがって、約27.3%です。

自転車のパンクについては、

\frac{0.10}{0.88}\approx0.114

となります。

したがって、約11.4%です。

結果をまとめると、

  • 寝坊:約61.4%
  • 電車の遅延:約27.3%
  • 自転車のパンク:約11.4%

となります。

四捨五入の影響はありますが、合計はほぼ100%になります。


8.なぜ0.88で割るのか

ここがベイズ推論の重要なポイントです。

最初は、すべてのケースを対象に考えていました。

しかし、

「遅刻した」

という新しい情報を得た瞬間、考える対象は「遅刻したケースだけ」に絞られます。

遅刻したケース全体が0.88なので、それを新しく100%として考え直します。

寝坊の場合は、

\frac{0.54}{0.88}

とすることで、

「遅刻したケースの中で、寝坊が占める割合」

を求めています。

このように、全体で割って確率の合計を1にする操作を正規化といいます。


9.ベイズの定理

ここまで行った計算を一般的な式にしたものが「ベイズの定理」です。

原因を A、観測した結果を B とすると、

P(A\mid B)=\frac{P(B\mid A)P(A)}{P(B)}

となります。

今回の例では、

  • A:寝坊
  • B:遅刻

です。

数値を代入すると、

P(A\mid B)=\frac{0.9\times0.6}{0.88}

となり、

P(A|B)≈0.614

です。


10.事前確率と事後確率

寝坊の事前確率は、

P(A)=0.6

つまり60%でした。

しかし、

「実際に遅刻した」

という情報を得た後では、

P(A|B)≈0.614

つまり約61.4%になります。

このように、

新しい情報を得ることで、それまで持っていた確率を更新する

のがベイズ推論です。

更新後の確率を「事後確率」といいます。


11.順位だけなら正規化しなくてもよい

正規化する前の値は、

  • 寝坊:0.54
  • 電車の遅延:0.24
  • 自転車のパンク:0.10

でした。

したがって、

0.54 > 0.24 > 0.10

です。

この段階でも、

「寝坊が最も可能性が高い」

ことは分かります。

正規化するときには、すべて同じ0.88で割るので、大小関係は変わりません。

そのため、

最も可能性の高い候補だけを知りたい場合には、正規化を省略できる

ことがあります。

一方、

「それぞれ何%なのか」

まで知りたい場合には、正規化して事後確率を求める必要があります。


12.ベイズ推論の流れ

ベイズ推論の流れを整理すると、次のようになります。

事前確率

↓

尤度

↓

事前確率 × 尤度

↓

正規化

↓

事後確率

事後確率は、ベイズの定理を使って求めます。

P(A\mid B)=\frac{P(B\mid A)P(A)}{P(B)}

重要なのは、

「事前確率 × 尤度」の段階では、合計が1にならなくてもよい

という点です。


演習問題

ここからは、別の例を使って理解を確認してみましょう。

ある工場では、製品を機械Aと機械Bで製造しています。

  • 機械Aが製造する割合:70%
  • 機械Bが製造する割合:30%
  • 機械Aの不良率:2%
  • 機械Bの不良率:5%

問題1

機械Bで製造した場合、不良品になる確率は5%です。

この5%は、ベイズ推論では何に相当するでしょうか。

  1. 事前確率
  2. 尤度
  3. 事後確率
  4. 正規化

答え

2.尤度

機械Bを B、不良品を D とすると、

P(D|B)=0.05

です。

これは、

「機械Bで製造された場合に、不良品が発生する確率」

を表しているため、尤度に相当します。


問題2

機械Aが製造する割合は70%、機械Aの不良率は2%です。

機械Aで製造され、かつ不良品になる確率はいくつでしょうか。

答え

1.4%です。

0.7 × 0.02 = 0.014

したがって、

P(A∩D)=0.014

です。


問題3

機械Bが製造する割合は30%、機械Bの不良率は5%です。

機械Bで製造され、かつ不良品になる確率はいくつでしょうか。

答え

1.5%です。

0.3 × 0.05 = 0.015

したがって、

P(B∩D)=0.015

です。


問題4

機械Aで製造され、かつ不良品になる確率は1.4%です。

機械Bで製造され、かつ不良品になる確率は1.5%です。

不良品が発生する確率全体はいくつでしょうか。

答え

2.9%です。

0.014 + 0.015 = 0.029

したがって、

P(D)=0.029

です。


問題5

不良品が1個見つかりました。

その不良品が機械Bで製造された確率はいくつでしょうか。

答え

約51.7%です。

ベイズの定理を使います。

P(B\mid D)=\frac{P(D\mid B)P(B)}{P(D)}

数値を代入すると、

P(B\mid D)=\frac{0.05\times0.3}{0.029}

さらに、

P(B\mid D)=\frac{0.015}{0.029}\approx0.517

となります。

したがって、約51.7%です。

機械Bは全製品の30%しか製造していません。

しかし、

「不良品だった」

という情報を得ることで、機械Bで作られた可能性は約51.7%まで上昇します。


問題6

なぜ、機械Bは全体の30%しか製造していないのに、不良品が見つかると機械Bで作られた確率が約51.7%になるのでしょうか。

答え

機械Bの方が不良品を発生させやすいからです。

機械Aの不良率は2%ですが、機械Bの不良率は5%です。

そのため、

「不良品だった」という情報は、機械Bだった可能性を高める情報

になります。

これが、観測した情報によって確率を更新するベイズ推論の考え方です。


問題7

次の値が得られたとします。

  • 病気である:0.08
  • 病気でない:0.12

この2つの合計はいくつでしょうか。

答え

0.20です。

0.08 + 0.12 = 0.20

この段階では合計が1になっていませんが、問題ありません。

まだ正規化する前だからです。


問題8

「病気である」が0.08、「病気でない」が0.12だった場合、病気である事後確率はいくつでしょうか。

答え

40%です。

まず、全体を求めます。

0.08 + 0.12 = 0.20

次に、病気である場合の値を全体で割ります。

\frac{0.08}{0.20}=0.4

したがって、40%です。


問題9

病気である事後確率が40%の場合、病気でない事後確率はいくつでしょうか。

答え

60%です。

1 - 0.4 = 0.6

したがって60%です。

確認すると、

0.4 + 0.6 = 1

となります。

正規化後の事後確率の合計は1になります。


問題10

事前確率 × 尤度を計算したところ、次の値になりました。

  • A:0.40
  • B:0.30
  • C:0.10

最も可能性が高いのはどれでしょうか。

答え

Aです。

0.40 > 0.30 > 0.10

なので、Aが最も可能性が高いと判断できます。


問題11

問題10のように、「最も可能性が高いもの」だけを知りたい場合、必ず正規化する必要があるでしょうか。

答え

必ずしも必要ありません。

まず合計を求めると、

0.40 + 0.30 + 0.10 = 0.80

です。

正規化すると、

Aは、

\frac{0.40}{0.80}=0.50

Bは、

\frac{0.30}{0.80}=0.375

Cは、

\frac{0.10}{0.80}=0.125

となります。

正規化する前も後も、

A > B > C

という順位は変わりません。

したがって、最大の候補だけを知りたい場合には、正規化を省略できます。


問題12

「事前確率 × 尤度」を計算したところ、値の合計が1になりませんでした。

これは計算ミスでしょうか。

答え

必ずしも計算ミスではありません。

事前確率 × 尤度の段階では、合計が1になる必要はありません。

観測結果全体の確率で割って正規化することで、事後確率を求めます。

一般的には、

P(A\mid B)=\frac{P(B\mid A)P(A)}{P(B)}

と表します。

正規化した後の事後確率の合計は1になります。


まとめ

ベイズ推論では、まず、

新しい情報を得る前の確率

である事前確率と、

ある原因を仮定したときに観測結果が起こる可能性

である尤度を組み合わせます。

次に、

事前確率 × 尤度

を計算します。

この段階では、値の合計が1になる必要はありません。

その後、観測結果全体の確率で割って正規化します。

ベイズの定理は、

P(A\mid B)=\frac{P(B\mid A)P(A)}{P(B)}

です。

重要なのは、

「新しい情報が得られたら、それまで持っていた確率を更新する」

という考え方です。

ベイズ推論は、迷惑メール判定、医療診断、故障原因の推定、機械学習など、さまざまな分野で利用されています。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
海外放浪の末、2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。