こんにちは クリスチャン・ラダーです
私たちが始めた OkCupidは
現在アメリカで 最大手の出会いサイトです
他のスタッフの 多くと同様
私も数学専攻で
私たちは恋愛への
分析的アプローチで 知られています
私たちは マッチング・アルゴリズムと 呼んでいますが
これは ２人の人が
デートすべきかの判断を 助けるものです
これが私たちの事業の 中心にあるものです
アルゴリズムというと 何かかっこよくて
みんな何かすごいもののように 口にしますが
実際のところは
段階を追って問題を 機械で解く手順ということで
別にすごいものとは 限りません
このビデオでは
私たちのアルゴリズムが
どのようにできているのかを 説明します
アルゴリズムは なぜ重要なのか？
そもそもこのビデオは なぜ存在するのか？
注意して欲しいのは 私が
「段階を追って解く」 と言ったことです
コンピュータが 段階を追った処理に向いているのは
知っていると思います
アルゴリズムがなければ
コンピュータは高価な 漬け物石に過ぎません
コンピュータは 身の回りの至る所にあり
それはすなわちアルゴリズムが どこにでもあるということです
OKCupidの 背後にある数学は
ごく簡単なものです
足し算
掛け算
それにルートを 少し使うくらいです
このアルゴリズムの設計で 難しいのは
人が惹かれ合うという
不可解な現象を
要素に分解し 機械で 扱えるようにすることです
人のマッチングをする上で まず必要なのは
アルゴリズムが使うための データです
人からデータを手早く得る 最良の方法は
単に聞いてみることです
それで OkCupidでは ユーザーに質問することにしました
「いつか子供が欲しいですか？」
「歯磨きを日に何度しますか？」
「怖い映画は好きですか？」
それに「神を信じますか」のような 大きな質問もあります
多くの質問は
２人が同じような 答えをする時
相性が良いと 考えられます
例えば ２人がどちらも 怖い映画が好きな場合
１人は好きで もう１人は嫌い
という場合よりも
おそらく相性が 良いでしょう
しかし もし質問が
「場の中心になるのが好きですか？」 ならどうでしょう？
付き合っている２人が どちらも中心にいたいタイプだと
大きな問題がありそうです
それで私たちは
それぞれの質問に対して
もう少しデータを 取ることにしました
自分自身についての 答えだけでなく
相手に望む答えも 聞くことにしたんです
これはうまくいきましたが
さらにもう１つの要素が 必要でした
ある種の質問は 他の質問よりも 多くのことを教えてくれるからです
たとえば政治的な質問である
「本を燃やすのと国旗を燃やすのとでは どちらがより悪いか？」のような質問は
映画の好みなどより 重要な意味を持つかもしれません
あらゆる質問を 同様に扱うのは問題があるので
もう１つデータを 付け加えました
OkCupidが聞く質問ではすべて
自分にとっての重要性を
「どちらでもよい」から「必須」まで
指定することができます
これで各質問について
アルゴリズムに使えるものが ３つあることになります
１ 自分の答え
２ 付き合う相手に望む答え
３ その質問の重要度です
これらの情報を元に
OKCupidは２人の 相性の良さを判断でき
アルゴリズムが データから答えを算出します
具体的な例で
あなたと 別の誰かBさんの 相性が良いかを
どのように判断するのか 見てみましょう
相性度は
２人とも答えた 質問を元に求めます
この共通の質問の集まりを Sと呼ぶことにしましょう
話を簡単にするため
Sはたった２つの 質問からなることにして
それを元に相性度を 計算してみます
その２つの質問の １つは
たとえば「散らかし屋さんですか？」で
答えの選択肢は
「散らかし屋」
「ふつう」
「きれい好き」 だったとします
あなたは「きれい好き」で
相手にも「きれい好き」 であることを望み
この問題はとても重要 だったとしましょう
あなたは超きれい好きで
自分だけでなく
相手にも きれい好きなことを
強く求めています
Bさんは少し違います
彼自身は「きれい好き」ですが
相手は「ふつう」でかまわず
彼にとって この問題は あまり重要ではありません
２番目の質問に 移りましょう
前に質問例として挙げた
「場の中心になるのが好きですか？」で
選択肢は「はい」か「いいえ」です
あなたの答えは「いいえ」で
相手にも「いいえ」であることを望み
この問題はあまり 重要でなかったとします
Bさんの方は 自分が「はい」で
相手には「いいえ」を望み —
なにしろ自分が中心でいたいので —
そして この問題は彼にとって まあまあ重要だったとします
それでは計算してみましょう
まずはじめに
コンピュータを使うので
「まあまあ重要」とか 「とても重要」のような概念に
数値を割り当てる 必要があります
コンピュータはすべて 数字で計算するからです
OkCupidではこんな重み付けを することにしました
「どうでもよい」は 0点
「あまり重要でない」は 1点
「まあまあ重要」は 10点
「とても重要」は 50点
「必須」は 250点です
つぎにアルゴリズムは 簡単な計算を２つします
１つはBさんが あなたにとって どれくらい満足のいく人かで
これはBさんが取り得る点数のうちの 何点を取ったかということです
最初の質問
散らかし屋かどうかは
あなたにとって とても重要で
Bさんは正しく答えたので 50点になります
２番目の質問は あまり重要でなかったので
１点分の価値しかなく
Bさんは間違った 答えをしました
だからBさんの点数は 50/51となり
98%の満足度です
これはかなり良い点数です
次にアルゴリズムが見るのは
あなたが どれくらいBさんを 満足させるかということです
Bさんは散らかし屋の 質問には１点
場の中心の質問には 10点を設定しました
満点は 1 + 10 = 11 点で
あなたは２番目の質問で 希望に合っていたので
10点を取りました
あなたの点数は10/11で
Bさんにとっての 満足度は91%です
悪くありません
最後のステップとして この２つのパーセントの数字から
２人の相性度を計算します
アルゴリズムは ２つの値を掛け合わせて
n 乗根を求めます
ここで n は質問の個数です
今の場合 質問の数は
２つだけだったので
相性度は 98% × 91% の 2 乗根で —
94% となります
94% があなたと Bさんの相性度です
あなた方が付き合った時に
予想される幸福度を
得られているデータを元に 数学的に求めた値です
なぜこのアルゴリズムでは
２つの点数の平均を取らずに
掛け算して累乗根を 求めているのか？
一般にこのような式は 幾何平均と呼ばれ
広い幅のある
異なる性質の値を 組み合わせる
優れた方法なんです
つまり恋愛の相性には ぴったりということです
広い範囲の
たくさんの異なる データがあります
映画だとか
政治
宗教
その他あらゆることです
直感的にも これは 意味のあることです
互いに50%の満足度の２人は
0%と100%の２人よりも
相性が良いと言えるでしょう
恋愛は相互的である 必要があるからです
誤差に対応するために 若干の補正をすれば完了です
たとえば今の場合だと
質問の数が少なすぎる
という問題がありました
OkCupidが ２人を引き合わせる場合
今説明したような 手順を辿ります
まずみんなの答えを データとして集め
本人の選択と 相手への希望を
単純な数学的方法で 付き合わせていくんです
この 現実の世界の現象を
マイクロチップが理解できる形に 変える能力は
今の時代
最も重要なスキルだと思います
人に対して文章を使って 物語るように
コンピュータに対しては アルゴリズムを使って物語るのです
言語を学べば
物語を語れるようになります
このビデオが その役に立てば幸いです