ベイズで分かる相性診断 | 統計アラカルト [実践] | 逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓rpnの実践ウェブ   
rpn hacks! アールピーエヌ・ハックスサイトマップ

rpn | 実践 | 統計アラカルト | 統計に関する話題をrpnで探求!統計的に検証してみよう。

HOME > 実践 > 統計アラカルト > ベイズで分かる相性診断

hatena twitter facebook rss ソーシャルブックマーク

ベイズで分かる相性診断

 気になるあの子を食事に誘おう。うまく誘えたら映画見て、食事して、楽しい時間を過ごして…。妄想は大きく膨らむばかり。

そして、彼女と二人きりになれるチャンスを見計らい、勇気を振り絞って誘ってはみたものの…。彼女の雰囲気は微妙な感じ。結局、やんわりと断られたけど、これってまだ脈があると思っていいものなのか…。彼女から好かれている確率っていくらなんだ…。

        *


 こんな曖昧な確率が求められるなら面白いですよね。いくつかの前提条件が必要ですが、ベイズの定理を使えば可能かもしれません。

ベイズの定理とは

 ベイズの定理とは、イギリスの牧師でもあり数学者でもあったトーマス・ベイズ(1702~1761)が発表した理論です(当時、日本はまだ江戸時代)。しかし、その後250年もの間、顧みられることなく統計学の表舞台からは消えていました。

画期的な発明や発見が社会に認知されるまでに時間がかかるのはどの学問領域でも同じです。例えば、プラシーボ効果がオカルトでなく実際に起こる現象であることを医学界が認めたのも発見から実に200年後。今ではプラシーボの影響力を考慮した二重盲目試験が当たり前です。

近代の統計学はカール・ピアソン(1857~1936)の時代に大きく花開いたのですが、彼の息子であるエゴン・ピアソン(1895~1980)とイェジ・ネイマン(1894~1981)によって磐石なものとなります。彼らの名前を取ったネイマン・ピアソン理論(頻度論に基づく)と言われる統計学こそ、現在、高校や大学で学ぶ統計学です。

ベイズの定理はピアソンらが活躍する100年も前に発表されており、かのラプラス(1749~1827)も利用していますが、統計学の歴史上、無視されてきました。原因の1つは事前確率の存在です。

「確率=特定の事象÷起こりうる全ての事象」と定義したのがラプラスです。

事前確率はベイズ統計の特徴でもある曖昧さを許容する重要な要素なのですが、同時に恣意性の高いものです(要はいい加減に決められる)。ネイマン・ピアソン流の統計学では客観的に曖昧なく集計されたデータを用意することが前提ですから、ベイズ統計を認めるわけにはいかなかったのです。

カール・ピアソンと確執のあったフィッシャー(1890~1962)もベイズ統計には否定的でした。

以下の年表で、ベイズの時代とピアソンの時代に横たわる100年の壁が実感できます。

                                    | --> 明治以降
  1700------1750------1800------1850-------1900-------1950-----2000
  |<- ベイズ  ->|                   |<- K.ピアソン  ->|
             |<- ラプラス ->|               | <-- ネイマン・ピアソン --> |
                                        | <-- フィッシャー --> |


ベイズ統計を使う統計学者をベイジアンと言います。一方、ネイマン・ピアソン派の統計学者は頻度論者(またはガウシアン)と言われます。両派には未だに深い溝があるといいます。
        *


 ベイズの定理は以下の数式で表わされます。

           P(B|A)・P(A)
  P(A|B) = -----------
              P(B)


P(A)はAという事象が起こる確率で、P(B)はBという事象が起こる確率です。

PはProbability:確率の略。

ちょっと変わった記号のP(A|B)はBの元でAが起こる確率で、条件付き確率と言われます。集合関係を図式化したベン図で考えるとベイズの定理のイメージがつかめます。

  +--------------+
  |     +--B--+  |
  |     |     |  |
  |  +-----+  |  |
  |  |  |x|  |  |
  |  |  +--|--+  |
  |  |     |     |
  |  +--A--+     |
  +--------------+


AとBが重なった領域(x)はA∩Bで表されるので、その確率はP(A∩B)です。そして、P(A|B)はBの元でAが起こる確率、P(B|A)はAの元でBが起こる確率です。図にすると次のようになります。

     P(A|B)           P(B|A)
     +--B--+          +--B--+
     |:::::|          |     |
  +-----+::|       +-----+  |
  |  |x|::|       |::|x|  |
  |  +--|--+       |::+--|--+
  |     |          |:::::|
  +--A--+          +--A--+


P(A∩B)の領域(x)が同じことが分かりますね。さて、これらの事実からベイズの定理を導くには乗法定理の助けが必要です。

  P(A∩B) = P(B|A)・P(A) ...... (1)


つまり、AとBが同時に起こる確率は、Aの元でBが起こる確率にAが起こる確率を掛けた値に等しいという定理です。同時に、上の図から次式も成り立ちます。

  P(A∩B) = P(A|B)・P(B) ...... (2)


(1)と(2)は等しいので次の数式に変形できます。

  P(A|B)・P(B) = P(B|A)・P(A)


そして、P(B)で両辺を割るとベイズの定理が導かれます。

           P(B|A)・P(A)
  P(A|B) = -----------
              P(B)       ※P(B)≠0


この数式があれば、以下の図の右と左を自由に行き来することができるわけです。

     P(A|B)                    P(B|A)
     +--B--+                   +--B--+
     |:::::|                   |     |
  +-----+::|  ベイズの定理  +-----+  |
  |  |x|::|       ⇔       |::|x|  |
  |  +--|--+                |::+--|--+
  |     |                   |:::::|
  +--A--+                   +--A--+


最後にベイズの定理の汎用性を高めるために、複数の仮説に対応したベイズの展開公式にします。通常、H(hypothesis:仮説)、D(Data:データ)の文字を使うので、以下のようになります。

              P(D|Hi)・P(Hi)
  P(Hi|D) = -----------------   ...... (3)
             n
            ∑{P(D|Hj)・P(Hj)}   ※iは1~nのいずれか
            j=1


ちなみにP(Hi|D)を事後確率、P(Hi)を事前確率、P(D|Hi)を条件付き確率(尤度)といいます。

ベイズに関するこれらの基礎知識があれば冒頭の疑問に答えることができす。

好かれているか嫌われているかを判断するには

 そもそも彼女に好かれているのか、それとも嫌われているのか。どうやったら知ることができるでしょう。「僕のこと好きですか」なんて聞く人は余程の自信家かナルシスト以外にいませんし、「僕のこと嫌いですか」も自虐的です。やはり、物事は間接的に進めるほうがよいようです。

そこで、食事に誘うことになるのですが、男性にとって女性の返事の解釈は困難です。彼女からの返事が「うん。行こう」なら、大いに脈ありと考えてもいいのですが、次のような返事だったら…。

  • 「ごめん。誘ってくれて嬉しいけど、今度またね」
  • 「ありがとう。でも、ちょうど今日は都合が悪くて…」
  • 「うーん。○○ちゃんと一緒ならいいよ」
  • 「仕事の準備があって…。残念だけど…」

直接の断りではないもののどう解釈していいのやら悩んでしまいます。しかし、このような返事は女性特有の言い回しで、彼女は迷惑がっている可能性が大。つまり、上記の返答は全てお付き合いNGです。

ここに面白い調査結果があります。交際する気のない人からの食事の誘いに対して、OKを出す女性は40%で、60%の女性は断わるそうです。交際する気のある人からの誘いに関してはデータがありませんが、本当に都合の悪い場合を除いてはOKするでしょうから、OKが90%でNGが10%としておきましょう。

まとめると次の表になります。

  食事に誘われたら… | 交際する気  |
     (男性→女性)    | ある | ない |
  -------------------+------+-------
  行く(好かれている) |  90% |  40% |
  -------------------+------+-------
  断る(嫌われている) |  10% |  60% |
  -------------------+------+-------


ちなみに女性が男性を食事に誘った場合が次の表です。節操がないというか男の性(さが)というか70%が好きでもないのに食事に出かけます。

  食事に誘われたら… | 交際する気  |
     (女性→男性)    | ある | ない |
  -------------------+------+-------
  行く(好かれている) |  90% |  70% |
  -------------------+------+-------
  断る(嫌われている) |  10% |  30% |
  -------------------+------+-------


ベイズで計算

 ベイズ理論で計算するには(3)式を参考にして、仮説を2つ用意します。

  H1 = 好かれている(食事に行く)
  H2 = 嫌われている(食事を断る)


冒頭の例では男性から女性に食事を誘っていますから、上の(男性→女性)の表を使って、それぞれの尤度を転記すると次のようになります。

  P(OK|H1) = 0.9  P(NG|H1) = 0.1  P(OK|H2) = 0.4  P(NG|H2) = 0.6


次に用意する事前確率ですが、共通の友達経由で探りを入れない限り、実際に好かれているか嫌われているかは分かりません。そこで、ベイズ理論の特徴の1つである「理由不十分の原則」を用います。つまり、好かれている確率と嫌われている確率はフィフティー・フィフティーの50%とします。

以上の条件が決まれば、食事に誘ってOKが出たときに好かれている確率を計算できます。

                              P(食事OK|好き)・P(好き)
  P(好き|食事OK) = -----------------------------------------------
                   P(食事OK|好き)・P(好き) + P(食事OK|嫌い)・P(嫌い)

                         0.9 * 0.5
                 = ---------------------
                   0.9 * 0.5 + 0.4 * 0.5


rpn式で計算すると次のようになります。

  >rpn 0.9 0.5 * 0.9 0.5 * 0.4 0.5 * + /
  0.692308


好かれている確率は69%ですね。食事に付き合ってくれたけど、実は嫌われている確率が31%残っています。

P(好き|食事OK)の分母は好き嫌いに関わらず食事がOKとなる確率で、計算すると65%になることが分かります。

ちなみに、食事に誘ってNGだったとき、嫌われている確率は以下のとおりです。rpn式での計算も併記しておきます。

                              P(食事NG|嫌い)・P(嫌い)
  P(嫌い|食事NG) = -----------------------------------------------
                   P(食事NG|好き)・P(好き) + P(食事NG|嫌い)・P(嫌い)

                         0.6 * 0.5
                 = ---------------------
                   0.1 * 0.5 + 0.6 * 0.5

  >rpn 0.6 0.5 * 0.1 0.5 * 0.6 0.5 * + /
  0.857143


嫌われている確率はなんと86%です。食事はNGだったんだけど、実は好きという希望の確率はたったの14%です。

rpnプログラムでベイズの定理

 このようにベイズの定理で計算するときは、(3)の式にそれぞれの数値を当てはめれば答えが出てきます。しかし、仮説の数が増えると転記ミスの可能性が出てきます。そこで、尤度と事前確率を設定するだけで計算してくれるrpnプログラムを用意しました。

プログラム名はbayseです。P(好き|食事OK)を求めるには、上の(男性→女性)の表の1行目の左から右、2行目の左から右に90%、40%、10%、60%のように数字を抜き出し、次に事前確率を50%、50%で指定します。rpn式にすると次のようになります。

  >rpn 0.9 0.4 0.1 0.6 0.5 0.5 -c bayse
       --------------- -------
            尤度       事前確率


実際に計算させてみると手計算した値と同じことが分かりますね。

  >rpn 0.9 0.4 0.1 0.6 0.5 0.5 -c bayse
  0.692308 0.307692


最初の数値が食事OKのときの好かれている確率で、後の数値が嫌われている確率を示しています。今後はこのプログラムを使って計算していくことにしましょう。

次は…

 ベイズの定理を使って、好き・嫌いという曖昧な情報と曖昧な事前確率からその度合いを導いてみました。結果は食事に誘えるか否かで大きく確率が異なりました。一回の誘いで全てが決まってしまいます。

ただ、食事の誘いは一度きりとは限りません。何回でも誘ってその結果で判断しても良さそうです。しかし、恋愛が統計学と違うのは何度も試すことができないことです。推測統計学では30個程度のデータ数が望まれますが、30回も食事に誘ったらストーカー扱いでしょう。

実際はもっと少なく3回~4回程度が限度でしょう。仮に好き嫌いが半々だったとしても、5回連続で断られたら0.5の5乗で3%程度しか好かれていないことになります。

つまり、食事に数回誘ったときの結果から、相手のその気具合を察することができなければいけません。果たしてそんなことができるのでしょうか。

続き(part2)はこちらLinkIcon

警告rpnプログラムを実行するには、rpn試用版かrpn標準版が必要です(バージョンの違いはこちら)。

統計アラカルト

統計的に検証してみよう

※実践コーナーのTOP

紹介 rpnの利用シーンはこちら…

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ
物語データを見抜くojt物語もどうぞ

実践他の分野への挑戦は実践TOP

応用rpnアプリケーションは応用TOP

part2

統計的に検証してみよう

※実践コーナーのTOP

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ
物語データを見抜くojt物語もどうぞ

実践他の分野への挑戦は実践TOP

応用rpnアプリケーションは応用TOP

書籍紹介

記事に関連した書籍

本ウェブサイトで扱った話題に関連した書物で、スタッフが実際に読了したものを紹介。

書籍数学の書籍
数の世界は思ったよりもエキサイティング

書籍投資の書籍
失敗しない投資には広範囲で実践的な知識が必要

警告バックスラッシュはエンマークに読み替えて下さい(IE)。
バックスラッシュとエンマーク

警告文字で作られた図表や式が崩れることがあります。ブラウザによっては固定幅フォントをMSゴシックにするときれいに表示されます。それでも崩れる場合は図表や式をメモ帳にコピー後、閲覧下さい。

警告rpn試用版と標準版(2kリビジョン)はダブルクォートで囲って下さい。

rpn 1 2 + ⇒ rpn "1 2 +"
rpn 1 -c foo ⇒ rpn "1" -c "foo"

ダブルクォートは省略できることが多いのですが、慣れない間は囲んだほうが無難です。なお、本ウェブサイトの記事ではrpn標準版(98リビジョン)を使用しているため囲っていません。詳しくは技術サポートの「rpn TIPS参照ください。

注意rpnの障害情報はこちら

警告rpn試用版の場合、複雑なプログラムや処理時間のかかるプログラムの一部には動作しないものがあるかもしれません。あくまで無料提供であることを勘案・了承ください。rpn標準版は、すべてのプログラムが動作します。