機械学習の基礎 〜ベイズの定理 その1〜

機械学習の基礎 〜ベイズの定理〜

2024年も8月になりました。
暑いですね〜💦
この暑い夏、確率論や機械学習を活用し、涼しくさらっと乗り切りたい🌞

こんにちは、データサイエンティストひろきです。
ようやくデータサイエンティストらしく、機械学習をテーマにブログを書くことにします。

今回は条件付き確率について、
その前に普通の確率の話から、ロールプレイングゲームの勇者を例にお話しします。  

普通の確率

勇者が宝箱📦を2つ見つけました。
一方は宝石💎、もう一方にはうんこ💩が入っています。
どちらかの箱📦を選ぶ必要があります。
箱📦の中身が宝石💎である確率は?  

はい、1/2の確率で、宝箱には宝石💎が入っていますね。

$$\begin{align*} P(📦=💎)=\frac{💎}{💎 or 💩}=\frac{1}{2} \
\end{align*}$$

と書くことにします。  

では、うんこ💩を選んでしまう確率は?

$$\begin{align*} P(📦=💩)=\frac{💩}{💎 or 💩}=\frac{1}{2} \
\end{align*}$$

1/2ですね。 つまり、確率P=(probability)というのは、対象となる事象/全体事象です。

$$\begin{align*} 確率P=\frac{対象となる事象}{全体事象} \
\end{align*}$$

条件付き確率

次に、勇者は魔法を使って、箱を開ける前にどちらの箱に宝石💎が入っているかどうかを当てることができるとします。

でも、勇者の魔法は未熟で、確率1/4で判定ミスをします。
さて、今、勇者は魔法🪄をかけました。
そして、勇者は言いました。
「右の箱に宝石💎が入っている‼️」

はい、ここまでが前提条件です。

この時、魔法🪄が外れてうんこ💩を選んでしまう確率は?

つまり、

魔法🪄をかけて、「右の箱に宝石💎が入っている‼️」と勇者が言っている条件の元、 箱📦の中身はうんこ💩である確率を

$$\begin{align*} P(📦=💩|🪄=💎) = \frac{P(📦=💩  and  🪄=💎)}{P(🪄=💎)}\
\end{align*}$$

と表します。
これが求めたい確率です。  

まず、分母の $$\begin{align*} P(🪄=💎)\
\end{align*}$$
を求めます。

魔法🪄が当たる場合と、外れる場合に場合分けして考えます。

  1. 魔法🪄が当たる場合:「右の箱に宝石💎が入っている‼️」と言って、本当に箱📦に宝石💎が入っていた場合
  2. 魔法🪄が外れる場合:「右の箱に宝石💎が入っている‼️」と言って、箱📦にはうんこ💩が入っていた場合

1. 魔法🪄が当たる場合 

勇者の魔法🪄が当たる確率、
$$\begin{align*} P(📦=💎  and  🪄=💎)\
\end{align*}$$
言い換えると、
箱📦の中身が宝石💎で、「右の箱に宝石💎が入っている‼️」と言う確率は3/4です。
そして、 箱📦の中身が宝石💎である確率は1/2です。 それが同時に起こるので、数式で表すと

$$\begin{align*} P(🪄=💎|📦=💎) \times P(📦=💎)\
\end{align*}$$

すなわち、

$$\begin{align*} \frac{3}{4} \times \frac{1}{2} = \frac{3}{8} \
\end{align*}$$

2. 魔法🪄が外れる場合

勇者の魔法🪄が外れる確率、

$$\begin{align*} P(📦=💩  and  🪄=💎)\
\end{align*}$$

言い換えると、
箱📦の中身がうんこ💩で、「右の箱に宝石💎が入っている‼️」と言う確率は1/4です。
そして、 箱📦の中身が宝石💩である確率は1/2です。 それが同時に起こるので、数式で表すと

$$\begin{align*} P(🪄=💎|📦=💩) \times P(📦=💩)\
\end{align*}$$

すなわち、

$$\begin{align*} \frac{1}{4} \times \frac{1}{2} = \frac{1}{8} \
\end{align*}$$

つまり、魔法をかける確率P(🪄=💎)は1と2の合計で、

$$\begin{align*} P(🪄=💎|📦=💎) \times P(📦=💎) + P(🪄=💎|📦=💩) \times P(📦=💩) \
\end{align*}$$

$$\begin{align*} \frac{3}{8} + \frac{1}{8} = \frac{1}{2} \
\end{align*}$$

です。

そして、うんこ💩を選んでしまう確率は、上記2で求めた、1/8です。

これらの関係を図示すると下記となります。

つまり魔法を使ってもうんこ💩を選んでしまう確率は?

$$\begin{align*} P(📦=💩|🪄=💎) \
\end{align*}$$

$$\begin{align*} = \frac{P(📦=💩  and  🪄=💎)}{P(🪄=💎)}\
\end{align*}$$

$$\begin{align*} = \frac{P(🪄=💎|📦=💩) \times P(📦=💩)}{P(🪄=💎|📦=💎) \times P(📦=💎) + P(🪄=💎|📦=💩) \times P(📦=💩)} \
\end{align*}$$

$$\begin{align*} = \frac{1/8}{1/2} = \frac{1}{4} \
\end{align*}$$

つまり魔法を使っても、4回に1回はうんこ💩を選んでしまうわけです。

これはベイズの公式として下記で表すことができます。  

$$\begin{align*} P(📦=💩|🪄=💎) \
\end{align*}$$

$$\begin{align*} = \frac{P(🪄=💎|📦=💩) \times P(📦=💩)}{P(🪄=💎)}\
\end{align*}$$

条件Bの元Aが起こる確率は

$$\begin{align*} P(A|B) &= \frac{P(A \land B)}{P(B)}\\
&= \frac{P(B|A) \cdot P(A)}{P(B)}\\
\end{align*}$$

すなはち、
結果がBだった時の、原因Aが起こる確率P(A|B)を
原因がAだった時に、結果がBになる確率P(B|A)と
原因がAになる確率から求めることです。

つまり、
P(📦=💩|🪄=💎): 🪄による判定結果が💎だった時に、📦の中身が💩だった時の確率 を、
P(🪄=💎|📦=💩)xP(📦=💩):📦の中身が💩だった時の🪄による判定結果が💎となる確率

P(🪄=💎): 🪄による判定結果が💎となる確率
から求めることです。  

これを次のように変形して、

$$\begin{align*} P(A|B) = \frac{P(B|A)}{P(B)}\cdot P(A)  \
\end{align*}$$

$$\begin{align*} P(A|B)&:事後分布 (posterior)\\
P(B|A)/P(B)&:尤度 (likely hood)\\
P(A)&:事前分布 (prior)\\
\end{align*}$$

と呼び、事前分布をlikely hood関数で更新し、事後分布を得ます。
これをベイズ更新と呼びます。

また、一般に次のように添字iとj(この場合、i=1,2, j=1,2)で表わすと、

$$\begin{align*} P(A_i|B_j) = \frac{P(B_j|A_i)}{P(B_j)}\cdot P(A_i)  \
\end{align*}$$

A1を📦=💎,A2を📦=💩, B1を🪄=💎,B2を🪄=💩とし、
これらの関係を図示すると下記となります。

最後にまた、うんこの例に戻ると、

$$\begin{align*} P(📦=💩|🪄=💎) = \frac{P(🪄=💎|📦=💩)}{P(🪄=💎)}\cdot P(📦=💩)  \
\end{align*}$$

見やすくすると、  

$$\begin{align*} P(💩|🪄) = \frac{P(🪄|💩)}{P(🪄)}\cdot P(💩)  \
\end{align*}$$

うんこ💩が入っている確率:P(💩)=1/2を、魔法をかけてP(💩|🪄)=1/4に更新したわけです。

なんだかトイレに行きたくなってきました^^
それでは今日はこの辺で。
Love&Respect❤️
Hiroki🐶