例題から理解するベイズ統計


趣旨

ベイズ統計学にちょっと興味の湧いた僕氏、なかなか理解できず半年ほど放置。

春休みに入って少し勉強したので、アウトプットがてら書いてみたところ、僕的に一番しっくり来る例を思いついたのでメモ書き程度に書いておきます。

n番煎じ

あ、死ぬほど基礎的な内容です。
高度な内容を期待して開いた方、ごめんなさい。

問題

2つのサイコロを用意した。
サイコロはA、Bのいずれかであるが、A、Bは外観や重量では区別できない。

ただし、A、Bのいずれも出目の偏りがある。
それぞれのサイコロの各目が出る確率は以下の通りであることが分かっている。

出目 A B
1 0.3 0.1
2 0.25 0.1
3 0.2 0.1
4 0.15 0.2
5 0.05 0.25
6 0.05 0.25

今、2つのサイコロから1つを手に取った。
このサイコロがAなのかBなのか知りたい。

問0

手に取ったサイコロがAである確率を求めよ。

問1

今、手に取ったサイコロを1回振ったとき、その出目が1であった。
この時、手に取ったサイコロがAである確率を求めよ。

問2

「問0の確率」と「問1の確率」を比較して、手に取ったサイコロがAである確率は、サイコロを振ることにより何倍になったか計算せよ。

問3

問1からさらにもう一度振ると、その出目が3であった。
この時、手に取ったサイコロがAである確率を求めよ。

解説

我流・ベイズ統計 超絶概論

極端な言い方ですが、ベイズ統計のやろうとしていることは、条件付確率を逆にする試みといえます。この記事ではベイズの公式を深掘りすることはあえてしないですが、「一瞬だけ」ベイズの定理を見ると分かりやすいと思います。

P(A|B) = \frac{P(B|A) \times P(A)}{P(B)}

さて、本説例では、サイコロが所与であるときの各目が出る確率を前提として示して、その上でサイコロの出目からサイコロの種類を推論しようとしています。これを事象X、事象Yを定義してもう少し数学的に書き換えてみましょう。

事象X: 選択したサイコロがAである確率
事象Y: サイコロを振ると1の目が出る確率

ここで、最初の表でいう「Aのサイコロを1回振って1が出る確率」は、$P(Y|X)$と書けます。この条件付確率は、「Aのサイコロを選んだから、1の目は0.3で出る」という因果関係に基づいたものといえます。このようなP(結果|原因)の形をした条件付確率は、サイコロが何らかの形でA, Bを区別できる場合は有効でしょう。ここではP(結果|原因)型と名付けます。ベイズ統計学上の、いわゆる尤度でもあります。

一方、問題で求めようとしている確率は、「ある出目のときに、それがAである確率」であり、$P(X|Y)$と書くことができます。この条件付確率は、出目からサイコロを推論する、つまり結果から原因を探るものなので、P(原因|結果)型と名付けましょう。ベイズ統計学のちゃんとした用語で、事後確率ともいいます。

$P(Y|X)$ から $P(X|Y)$ を推論する

ところで、サイコロを区別できないとすれば、このP(結果|原因)型の条件付確率の価値は低まってしまいます。説例(表)でいう条件付確率は、「サイコロは分かっている。その上で出目の確率はこうだ」ということを暗に前提としています。つまり、条件付確率というのは、ある条件が所与ということが前提ですから、その前提が崩れている今、条件付確率を適切に適用できない可能性が高いです。
今回はサイコロが2つだけなので$\frac{1}{2}$で当てはまるでしょうが、サイコロを10個に増やしたとすると、サイコロを区別できていないときに、この条件付確率をそのままの形で積極的に利用することは難しいでしょう。「ベイズ統計学の考え方を使わないうちは」、せめて、全体の出目の確率の期待値を計算することぐらいしかできません。

このようなことが起きるのは、「サイコロを区別できないから」です。「その原因を直接観察することが不可能だから」と言い換えることもできるでしょう。
ベイズ統計では「検査で陽性(結果)の人が実際に陽性だった(原因)確率」「URLの記載のあるメール(結果)が迷惑メールである(原因)確率」などが例として挙げられることが多いですが、もし「その人が実際に陽性である」ということが分かるのであれば検査など不要だし、もし「そのメールが迷惑メールである」というのが第三者(メールサービスの運営者)が間違いなく判断できるのであれば、時々重要なメールが迷惑メールに分類される事象が起きるはずがありません。私たちが「神の眼」を持っているのであれば、病院の検査などもはや不要のはずです。

さて、原因は直接観察不能ですが、代わりに入手できるのは、サイコロを振って分かる経験的な出目の偏りに関する情報です。究極的には、無限回の試行を繰り返せば、最終的には表に示した確率のどちらかに収束するわけですから、それで判断することもできるでしょう。
いずれにしても、とりあえず分からないからまずサイコロを振って、そのサイコロがAなのかBなのかを推論してみよう、ということですね。これが「P(原因|結果)型」、つまりベイズ統計のやろうとしていることです。

原因がブラックボックスであれ、結果(出目、検査結果、迷惑メールの文面)は一般的には観察可能です。そして観察から得られた結果を、P(原因|結果)の条件付確率の前提として利用し、(乱暴な言い方をすれば)母集団を徐々に狭めていくことで原因を推論していく作業が、ベイズのやろうとしていることでしょう。

ここで、原因が分からないと利用しづらいと先に書いたP(結果|原因)型の条件付確率を、ベイズ統計学では、今度はこれを推論過程のモデル(仮定)として使うことになるわけです。原因⇒結果という一方通行の因果関係というよりは、どちらかといえば原因⇔結果という対応関係に紐解いていくわけですね。
設例の問題でも、原因(サイコロAか否か)を調べるために、「原因⇒結果の関係(サイコロの種類と出目の関係表)」を上手く変形させてから、観察結果(出目が1である)を当てはめていくわけです。

「P(結果|原因) 型」が神の眼の条件付確率だとすれば、 観察可能な事象から原因を推論する「P(原因|結果) 型」の条件付確率は、とても人間的な条件付確率だと思いませんか。

つまづいていたところと説例の工夫

ここは余談なので、流してもらっていいです。


ずーーーっと理解できなかったのが、この事後確率P(原因|結果)が分かったところで何が分かるのかということでした。つまり、自分の中で、「原因は直接観察可能」「原因は既知」という神の眼を暗に仮定してしまったためにベイズ統計の必要性が理解できず、半年間ベイズから離れてしまったわけです。

そこで、説例では「サイコロを外観等では区別できない」とあえて明記することで、原因(サイコロがAかBか)を推論する必要性を強調しました。

解答

問0

サイコロを投げる前の期待を計算する問題です。
このような、情報獲得前の確率を「事前確率」といいます。
計算自体は、ただただ中学生レベルの確率の問題です。

適当に選んだらAである確率
⇨ 2つの中から一方を無作為に選ぶ確率
⇨ $0.5$

問1

いわゆる「事後確率」を求める問題です。
公式を使えば一瞬ですが、直感的に分かり易いようにするために、あえてベイズの定理を避けて、弁図的な解き方で書きます。

「いずれかのサイコロを振って1が出る確率の期待値」
⇨ A, Bのいずれかのサイコロを選ぶ確率はそれぞれ0.5
⇨ $0.5 \times 0.3 + 0.5 \times 0.1 = 0.2$

「Aを選び、かつ、出目が1である確率」
⇨ 「Aを降ったときに、1が出る確率」に「サイコロからAを選ぶ確率」を掛ければよい
⇨ $0.3 \times 0.5 = 0.15$

「出目が1であるとき、Aである確率」
⇨ 「Aを選び、かつ、出目が1である確率」を「いずれかのサイコロを振って1が出る確率の期待値」で除すればよい
⇨ $0.15 \div 0.2 = 0.75 $

問2

事前確率と事後確率の比較問題です。
「振ったら1が出た」という情報から、予想確率がどの程度変化したかを評価します。

事前確率
⇨「サイコロを振る前の、サイコロを適当に1つ選んだときAである確率」
⇨ $0.5$

事後確率
⇨「サイコロを振って1が出た後の、サイコロを適当に1つ選んだときAである確率」
⇨ $0.75$

よって、$0.75 \div 0.5 = 1.25倍$ になった(25%改善した)。

問3

さらに情報が加わったときにどのように変化するかを見てみる問題です。
問1の計算結果から「逐次合理性」を利用したスマートな解法もありますが、ここも泥臭く弁図っぽく解いてみます。計算の流れは問1と全く同じです。

そのサイコロがAである時、「1回目が1」かつ「2回目が3」である確率
⇨ $0.3 \times 0.2 = 0.06$

そのサイコロがBである時、「1回目が1」かつ「2回目が3」である確率
⇨ $0.1 \times 0.1 = 0.01$

出目が「1回目が1」かつ「2回目が3」であるとき、そのサイコロがAである確率(事後確率)
⇨ $\begin{align} \frac{0.06}{(0.06 + 0.01)} &= \frac{6}{7}\\ &≒ 0.857 \end{align}$

おわりに

ということで、ざっくりとしたポイントは、「ベイズ統計の考え方を用いると、結果から原因を推論するという帰納的なアプローチが可能になる」ということです。
そのうえで、何かをベイズ推定に当てはめるとき、以下のことを気にかけると分かりやすくなると思いました。

  • どちらが原因でどちらが結果か、ハッキリさせておく(因果関係は、モデル設定 [設例でいう確率表] で暗に仮定している。)
  • 原因をより広く仮定しておく(サイコロAだけでなくサイコロBの存在まで意識する)
  • 観察された結果の原因は「わからない」と仮定しておく(それをベイズを使って推論するわけだから。)



おしまい。

参考書籍など