it's an endless world.

グロースをデザインするひと

5分でわかるベイズのお話 【Goodpatch Advent Calendar 2015 23日目】

f:id:headless_pasta:20151221210601p:plain

この記事はグッドパッチのエンジニア陣がお届けするGoodpatch Advent Calendar 2015の23日目の記事です。

昨日はmariokadaの「はじめてのプログラミング / PebbleのWatchfaceを作ってみた」というお話でした。マジで初めてのプログラミングでよくがんばった!
qiita.com

今日はチラッとベイズの話をしようかと。

ベイズって何?

Webで仕事している人たちはこのような言葉を聞いたことがあるかと思います。
これらはいわゆる「ベイズの定理」をベースにしているのでそう呼ばれています。
で、その「ベイズ」が何かというと人名です。

f:id:headless_pasta:20151221211135p:plain

この人。トーマス・ベイズ (Thomas Bayes)さん。
1700年代初頭のイギリスの牧師さんらしいです。

正直に言うと、私の中で「ベイズ」という言葉が盛り上がってきてたのがここ数年くらいだったのでベイズさんは最近の新進気鋭の統計学者さんか何かと思っていました。
思っていましたが、1700年代初頭のイギリスの牧師さんです。これは知ったときはけっこうびっくりしました。

なんでこの「ベイズの定理」がここ300年くらいずっと、あんまり評価されてなかったかについては後で説明します。

ベイズの定理の解説

ここで、問題です。

あなたは既婚者(♀)です。出張から帰ってきたら
タンスの中に見慣れぬ女性もののパンツが…。
さて、旦那さんが浮気をしている確率は?

f:id:headless_pasta:20151221221447p:plain


問題というか、大問題ですね。
ふざけた問題ですが、これもベイズの定理の範疇です。

そして私の名誉のために言っておくと、この問題は別に私が考えたわけでなくこちらの本からの引用になります。

シグナル&ノイズ 天才データアナリストの「予測学」

シグナル&ノイズ 天才データアナリストの「予測学」

ベイズの定理の紹介

問題を解く前に、ベイズの定理を端的に紹介しておきます。

D=Data(データ)、H=Hypothesis(仮定)と置くと、
DのもとでHである確率 = HのもとでDである確率 × Hである確率 / Dである確率
といえる

なぜこれが成り立つのか、けっこう簡単に説明できます。

トランプで考える

ジョーカーを除く52枚のトランプから1枚のカードを引いて、それがハートのエースである確率は1/52です。
1枚引いたカードがハートであり、それがエースである確率は1/4 × 1/13 = 1/52です。
1枚引いたカードがエースであり、それがハートである確率は1/13 × 1/4= 1/52です。

何が言いたいかと言うとまずはこれ。

ハートを引いた時にエースである確率 × ハートを引く確率
= エースを引いた時にハートである確率 × エースを引く確率

これは男性の中でメガネである確率とメガネの中で男性の確率も同じものになるのと一緒ですね。

その上で、
エースである確率をH、ハートである確率をDに置き換えると

DのもとでHである確率 × Dである確率 = HのもとでDである確率 × Hである確率

が言え、左辺の「Dである確率」を右辺に移行すると、最初に出てきた

DのもとでHである確率 = HのもとでDである確率 × Hである確率 / Dである確率

となります。

証明完了。

(大)問題にもどります

あなたは既婚者(♀)です。出張から帰ってきたら
タンスの中に見慣れぬ女性もののパンツが…。
さて、旦那さんが浮気をしている確率は?

ベイズの定理を踏まえ

データ = D = パンツを見つけた
仮定 = H = 浮気をしている

と置きましょう。

Hである確率

つまり、浮気をしている確率。

よくわかりませんが、世間一般的には4%の夫婦は浮気をしているらしいです。
じゃあ【4%】。

HのもとでDである確率

つまり、浮気していたとしてパンツが存在する確率

本当に浮気してるとしてもっと上手く隠しそうな…。
じゃあ【60%】。

Dである確率

つまり、パンツが存在する確率

考えるべきは「浮気をしている確率とその上でパンツがある確率」と「浮気をしていない確率とその上でパンツがある確率」。

前者は既に出ている4%と60%を掛けあわせて2.4%。

後者は……。ありうるのか!?

まぁ、男にはいろいろありますし、テキトーに5%くらいとしておきましょう。
(100%-4%) × 5%で4.8%ですね。

この2.4%と4.8%を足すと【7.2%】になります。

これらを公式に当てはめると

DのもとでHである確率 = HのもとでDである確率 × Hである確率 / Dである確率
パンツを見つけた時に浮気をしている確率 = 60% ×4% / 7.2% = 33.3%

ベイズの定理に当てはめると、33.3%の確率で浮気していることになります。

なんかめちゃくちゃ恣意的ですね。それがベイズの定理です。

ちょっとだけ専門用語

  • Hである確率 => 事前確率
  • HのもとでDである確率 => 尤度
  • DのもとでにHである確率 => 事後確率

活用事例

さて、パンツの例だけではしっくりこない方もいると思うので他の例も見てみましょう。

モンティ・ホール問題

最近アニメでやってた終物語老倉育さんの話でもあったあれです。
f:id:headless_pasta:20151221220847p:plain
知らん人はググッてくだされ。

A/B/Cの3つの扉がありAを選んで司会者がCを開けた時の

【Cが開けられてAに賞金がある確率】
Aに賞金があってCが開けられる確率×Aに賞金がある確率 / Cが開けられた確率

【Cが開けられてBに賞金がある確率】
Bに賞金があってCが開けられる確率×Bに賞金がある確率 / Cが開けられた確率

それぞれを考える場合、今回は比較したいだけなので分母の「Cが開けられた確率 」は除きます。

【Cが開けられてAに賞金がある確率】
Aに賞金があってCが開けられる確率×Aに賞金がある確率
= 1/2×1/3 = 1/6

【Cが開けられてBに賞金がある確率】
Bに賞金があってCが開けられる確率×Bに賞金がある確率
= 1×1/3 = 2/6

となって、二倍の差が出ます。

9.11事件

あの日、テロリストが飛行機をハイジャックしてワールドトレードセンター(WTC)に突っ込みました。
最初の1機目が突っ込んだのを見てみんなテロの可能性を認識し、2機目が突っ込んだのを見てみんなテロであることをほぼ確信したかと思います。

これをベイズの定理に照らし合わせて見ていきましょう。

まず、

D = データ = WTCに飛行機が突っ込む
H = 仮定 = それはテロリストの意図した攻撃である

とおきましょう。

そのうえで、テロリストがそれを意図していた時にWTCに突っ込む確率は【100%】、
テロ攻撃である確率を仮に【0.005%】、
テロじゃなくWTCに飛行機が突っ込む確率は過去のデータから【0.008%】とします。

これを計算すると、WTCに飛行機が突っ込んだ時にテロリストの攻撃である確率は【38%】になります。

ベイズ更新

上記の【38%】は1機目が突っ込んだときの確率です。
では、2機目を計算します。

その場合に重要になるのが「ベイズ更新」という概念です。

最初の計算では、テロ攻撃である確率を仮に【0.005%】と置きました。
1機目の結果として、いまはここの値が【38%】まで跳ね上がっています。

なので、最初の計算での【0.005%】を【38%】と入れ替えてもう一度計算すると、結果は【99.99%】まで跳ね上がります。

なんとなく、人間の感覚に近いように感じませんか?

えらい恣意的じゃね?

恣意的です。
特に、9.11のところで言ったこれ。

テロ攻撃である確率を仮に【0.005%

しかしベイズの定理を利用する中では、これは「理由不十分の法則」という言葉で認められているものでもあります。

その理由は、既に説明した「ベイズ更新」。
とても恣意的に見える事前確率ですが、たとえその値が直感的なものでも試行を繰り返すことで徐々に正しい結果に近づいていきます

これが人間の物事の捉え方にとても近しいと言われています。

ナイーブベイズ分類器

実は、これはGmailなどのスパムフィルターにも使われている技術です。

  1. 「出会い」や「寂しい」といったメールに含まれている単語それぞれに、その単語が含まれていた時にそのメールがスパムメールである確率を出す
  2. それが一定以上の確率であればスパム認定
  3. ユーザの「このメールはスパムだ」「このメールはスパムではない」ボタンを押した時のアクションを見てベイズ更新
  4. さらに精度が高いフィルターに

この仕組みを「ナイーブベイズ分類器」といいます。ここでの「ナイーブ」の意味は「単純」ぐらいの意味です。特に日本語的なナイーブなものではないです。

ちなみに、けっこう前にネット上で「主人がオオアリクイに殺されて1年が過ぎました。」というスパムメールが話題になりましたが、これはナイーブベイズ分類器に対抗するために考えられたものだと思われます。

antibayesian.hateblo.jp

まとめ

これまで、統計学の主流からは忌避されつづけていたベイズの定理が認められたのは、

  • ウェブ技術によって様々なアクションを取得してのベイズ更新が容易になった
  • 既存の頻度論的統計学ではできない最適な行動を確率論的に決定することが重要視されてきている

の2点にあるかと思います。

昨今、その発展が目覚ましい機械学習の分野においてこの「ベイズの定理」は多く利用されている基本概念です。
機械学習は来年以降もさらに発展していくはずですし、この機会にその考え方の基本だけでも理解できればと思いこの記事を書きました。

明日はブラジル出身のフルスタックエンジニア、luizの記事になります。
luizの採用面接のときに「マジでフルスタックですねー」と言ったら「ブラジルのエンジニアはみんなフルスタックだよ」と返されたのを私は忘れることはないでしょう。
qiita.com

おまけ

本日は実は、ほかのアドベントカレンダーにも記事を投稿していたりします。
興味がある方がいましたら、こちらも合わせてどうぞー。
migi.hatenablog.com
migi.hatenablog.com

ちなみに、なんでこんな一気にアドベントカレンダーの記事を上げているかというと、今日が私の誕生日だからです。
ということでこちらも貼っておきますね。
http://www.amazon.co.jp/registry/wishlist/3I7LF4VEPKBA2/?sort=prioritywww.amazon.co.jp

追記 2016/12/21

翌年のアドベントカレンダーで、ナイーブベイズを実装した話を書きました。

migi.hatenablog.com