「ベイズの定理」の導出とその適用例をわかりやすく解説【初心者向け】

2023年10月13日

ベイズの定理は色々なところで適用されています。

よく知られるところでは、スパムメールの判定への適用が知られていますが、その他にも様々な分野の機械学習に使われています。

一方、色々な側面を持つため理解が難しく、物流業界への適用は進んでいません。

しかし、ビッグデータを使いあぐねている物流業界が、ベイズ統計ある側面に注目すれば、その活用は飛躍的に進んでいくと思っています。

今回はまず、基本となるベイズの定理を紹介します。

 

【ゆっくり解説】Youtubeはじめました!

ベイズの定理の導出

ベイズ統計の基礎となる「ベイズの定理」は、驚くほど簡単に導くことができます。

 

サイコロを振って奇数の目が出る事象(出来事)をX、偶数の目が出る事象をYとします。

すると、奇数であり偶数でもあるという目は存在しませんので、XとYは重なりません。

 

次に、サイコロの目が奇数である事象をX、サイコロの目が4以上である事象をYとします。

すると、5は奇数でもあり4以上でもあるので、交わる部分がありますね。

この図において、XとYが交わる部分をX∩Yと書きます。

 

前回の記事

「条件付き確率」の使い方を具体例を使ってわかりやすく解説【初心者向け】

で条件付き確率の公式を次のように解説しました。

 

この式を変形すると

P(X∩Y) = P(Y|X) P(X) ・・・ 式1

と書けます。

これは言葉で言うと、

X∩Yが起こる確率は、Xが起こる確率に、Xが起こった前提でYが起こる確率を掛けたものである

という当たり前のことです。

つまり、下の図において、X∩Yの確率を左側から説明しています。

 

ということは、右側からもX∩Yの確率を説明できます。

X∩Yが起こる確率は、Yが起こる確率に、Yが起こった前提でXが起こる確率を掛けたものである

式で書くと

P(X∩Y) = P(X|Y) P(Y) ・・・ 式2

です。

 

式1と式2を併せると、

P(Y|X) P(X) = P(X|Y) P(Y)

となります。

そして、両辺をP(X)で割ると、

となり、これがベイズの定理になります。

 

そして、P(Y)を事前確率P(Y|X)を事後確率P(X|Y)を尤度(ゆうど)と呼びます。

 

スパムメールへの適用例

この式を見ただけでは、

何を意味するのか?

何の役に立つのか?

分かりませんよね。

 

ザックリ言うとこの式は、昔のデータから分かっていた確率(事前確率)を、今得られたデータ(尤度)によって、新しい確率(事後確率)に更新するための計算式です。

 

例えば、世界中でやり取りされているメールのうち70%が迷惑メール、30%が通常のメールとします。

今、あなたはメールを受信しました。

そのメールの題名を見る前は、迷惑メールである確率は70%ですね。

しかし、そのメールの題名を見たら「無料」という文字が見えました。

この時点で、迷惑メールである確率は87.5%に上がりました。

 

これをベイズの定理で言うと、

事前確率:70%

尤度:題名に「無料」が含まれていた

事後確率:87.5%

ということになります。

 

でも

「事前確率と事後確率については分かった。

でも、尤度って、どうやって式で表すんだ?」

と思いますよね。

 

更に詳しく見ていきましょう。

事前確率は次の図のように書くことができます。

 

実は、尤度を決めるには、ここでもう1つデータが必要です。

迷惑メールと通常メールの中に「無料」という文字が含まれる割合です。

過去に振り分けた迷惑メールと通常メールを調べたところ、迷惑メールの題名に「無料」が含まれていたのは60%、通常メールでも20%あることが分かりました。

 

すると、次のことが分かりますね。

これから、次のことが分かります。

題名に「無料」が含まれる迷惑メール:全体の42%

題名に「無料」が含まれる通常メール:全体の6%

題名に「無料」が含まれるメール全体:全体の48%

 

つまり、題名に「無料」が含まれる場合に、それが迷惑メールである確率は、

42÷48 = 87.5%

になります。

 

これを、ベイズの定理の公式に当てはめると次のようになります。

 

それぞれの要素を言葉で書くと、次のようになります。

P(Y):何も情報がない場合の迷惑メールの確率(事前確率)

P(X|Y):迷惑メールに「無料」が含まれる確率(尤度)

P(X):「無料」が含まれるメールの確率

P(Y|X):「無料」が含まれる場合に迷惑メールである確率(事後確率)

 

この例では迷惑メールか通常メールかの二者択一でしたが、3つ以上のカテゴリーに分ける場合にもこのやり方は使えます。

詳しくはこちらをご覧下さい。

ナイーブベイズのテキスト分類を具体例を挙げながら図でわかりやすく解説

 

PCR検査への適用例

次はPCR検査への応用例です。

どんな検査でもそうですが、本当は陰性なのに検査では陽性と判定される偽陽性と、本当は陽性なのに検査では陰性と判断される偽陰性が一定割合あります。

一般的なPCR検査では偽陽性率1%偽陰性率30%と言われているそうです。

 

新型コロナ感染症患者における有病率等を踏まえた病原体検査結果の解釈

 

コロナへの罹患率は地域によっても違いますし、その地域全員を検査するのは困難なので、真の罹患率は分かりませんが、ここでは仮に0.5%と仮定します。

この時、PCR検査で陽性と判定されたとして、その人が本当に陽性である確率は何%かを、ベイズの定理を使って考察してみます。

 

今までの前提を図で表現すると、次のようになります。

 

PCR検査陽性である事象をX、コロナに罹患している事象をYとします。

 

PCR検査を受ける前は何も情報がありませんので、その人がコロナである確率は全体の罹患率である0.5%です。

これが事前確率になります。

P(Y) = 0.005

 

次に、罹患している場合、PCR検査で陽性になる確率は70%ですので、Xである条件(コロナに罹患)の下でYになる(PCR陽性)条件付き確率は70%です。

P(X|Y) = 0.7

これが尤度になります。

 

次にコロナに罹患しているしていないに拘わらず、PCRで陽性になる確率は、

罹患していない人が陽性になる確率+罹患している人が陽性になる確率

= 0.005×0.7+0.995×0.01

= 1.34%

です。

つまり、

P(X) = 0.0134

です。

 

これをベイズの定理の公式に代入すると、

となり、PCRで陽性と判断された時に、本当にコロナである条件付き確率は26%ということになります。

 

意外と低いですね。

PCRで陽性と判断されても、本当は陰性である確率が75%もあるということです。

ベイズの定理を使うことによって、直観を裏切る結果が出るいい例です。

 

でも、だからと言って、あまり楽観視するのも禁物です。

この例では罹患率を0.5%と仮定していました。

この前提が変わると、結果も大きく変わって異なってきます。

例えば罹患率を3%と仮定すると、PCRで陽性と判定されれば、70%の確率でコロナです。

 

まとめ

ベイズの定理の使い方を、図を使いながら2つの例で説明しました。

更に一般化すると、次のようになります。

 

過去のデータから仮説Y1である確率はP(Y1)、仮説Y2である確率はP(Y2)でした。

例えば、仮説Y1は遅れる確率、仮説Y2は遅れない確率です。

そこに、新たなデータXを入手しました。

これは日々のビジネスでよくあることです。

例えば、90%の確率でスケジュール通り納品されると思っていたところ、台風が来ると分かり、確率が低下する場合などです。

下の図を見て下さい。

その場合、P(Y1)とP(Y2)だった事前確率が、データXの世界に移動することによって、P’(Y1)とP’(Y2)の事後確率に変わります。

これを式で表したものが、ベイズの定理が意味するところです。

 

Udemyの関連講座

実戦力主義。の統計学 Excel統計学で見えなかったものが見えてくる。

Excelというツールが与えられたとき、統計学は「最強」を超えた学問になった。興味深いデータで楽しく学んでみませんか?統計学が身近なツールであることを実感していただけます。

 

NumPyro で学ぶ ベイズ統計モデリング 【基礎編】

Google Colaboratory で実践する統計モデリング

 

【PythonとStanで学ぶ】仕組みが分かるベイズ統計学入門

確率の基礎から出発し、ベイズ統計学の基礎およびMCMCの原理を学びます。概念の理解とPythonでのプログラミングへの実装を合わせる事で、動かしながら原理を理解できます

 

はじめてのベイズ統計【PyMC3+Colab】-確率・統計の基礎からベイズ推定のPython実装まで-

機械学習と親和性の高い、ベイズ統計の初心者向けコースです。確率・統計の基礎から初めて、ベイズ推定によるA/Bテスト、線形回帰などを学びます。Google Colaboratory環境でライブラリPyMC3を使い、ベイズ推定を実装します。