機械学習の基礎 〜ベイズの定理〜
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. 魔法🪄が当たる場合
勇者の魔法🪄が当たる確率、
$$\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🐶