• Column
  • 学校では学べないデジタル時代のデータ分析法

未解決な事象の分析に威力を発揮するベイズ推定【第7回】

入江 宏志(DACコンサルティング代表)
2018年3月26日

 図1の観測データを、追加した列の属性別にまとめ直すと図2のようになる。

図2:観測データを列の属性別に並べ換え4つの領域に分ける

 図2において求めたい答は、「迷惑メールでURL付き」のデータ数(青の網掛け部分)を、「迷惑メールでURL付き」(同)と「正常メールでURL付き」(緑の網掛け部分)を加えたデータ数で割ったものである。

 実際に数式で問題を解くためには、図を少し変形させたほうが計算が容易になる。ロジカルシンキングの「MECE(Mutually Exclusive Collectively Exhaustive)の考えから具体的には、漏れや重複がないように4つの事象に分ける(図3)。

図3:高度に計算するために4つの領域を変形する

主観的な確率が条件と観測で精度が高まっていく

 それでは、例題を解いてみよう。

Step1:迷惑メールである確率P(A)を主観的に決める

Step2:Aをあぶり出す条件として、メールに「URL付きかどうか」を条件Bとする

Step3:迷惑メールがURL付きの確率であるP(B|A)が観測データから容易に求まる

Step4:当然ながら正常メールにもURL付きは存在する。そのため正常メールの中でURL付きの確率を観測で求め、URL付きである確率P(B)を計算する

 P(B) = 迷惑メールの中でURL付きの確率 × 迷惑メールである事前確率
     + 正常メールの中でURL付きの確率 × 正常メールである事前確率
    ={ P(B|A) × P(A) + P(B|Ā) × P(Ā) }

 なお、Aではない事象を余事象といい「Ā」で表す。

Step5:メールの中で「URL付きの確率」であるP(B)に対し、迷惑メールの中でURL付きの確率であるP(B|A) × P(A)の比を求める

 より具体的になるよう実際に数字を入れてみよう。筆者の経験から、迷惑メールである確率を30%、正常メールである確率を70%と設定する。筆者の元に届いている実際のメールから、迷惑メールの中でURL付きは60%と観測できた。同様に実際の正常メールを観測すると、URL付きは10%だった。

Step1:迷惑メールである事前確率P(A)は、筆者の経験から30%(主観による設定)

Step2:迷惑メールの条件を「URL付きである」とする(分析者が条件を創出)

Step3:迷惑メールの中でURL付きである確率P(B|A)は60%(観測による結果)

Step4:正常メールの中でURL付きである確率P(B)を計算する

 P(B) = { P(B|A) × P(A) + P(B|Ā) × P(Ā) }
     = 60% × 30% + 10% × 70% = 25%

Step5:URL付きで迷惑メールである事後確率P(A|B)を計算する

 P(A|B) = P(B|A) × P(A) / P(B)
     = ( 60% × 30% ) ÷ 25% = 72%

 これにより、送られてきたメールがURL付きならば、72%の確率で迷惑メールだという結果が得られた。迷惑メールであると筆者が設定した事前確率は30%だったが、条件を設定し、実際のメールを観測したことで事後確率は72%になった。つまり2.4倍( = 72% ÷ 30% )に上がっている。

 この「2.4」という数字が、第3回で説明した「尤度」である。言い方を変えれば、条件を入れることで精度が2.4倍に高まったことになる。