読者です 読者をやめる 読者になる 読者になる

究極の出会い系サイトを作る方法: 好みを推測するアプローチ

計算機

前回 合コンアプリ: 安定結婚問題とGale-Shapleyアルゴリズム - 超ウィザード級ハッカーのたのしみ

男女が各々好みの異性の順位を申請して、そこから安定な組み合わせを求めるというのは、現実的ではない。4対4の合コンであっても、順位を入力してもらうのは難しい。また、人数が多くなれば、すべての異性を評価して全員に順位をつけることすら不可能になる。

究極的には、出会い系サイトあるいは結婚相談所に適応可能な手法が欲しいと思っている。Gale-Shapleyアルゴリズムを素直に使って、最適なマッチングを求めるというのは不可能だ。

したがって、別の方法をとる必要があるが、マッチングを最適化するやり方としては、以下の2つのアプローチが考えられる。

  1. 好みを推測するアプローチ
  2. 現実を参考にするアプローチ

である。それぞれ、効用関数法とボナンザメソッドと呼ぶことにする。

好みを推測するアプローチ: 効用関数法

効用関数法とは、異性とマッチングされたときの効用関数を仮定して、効用が大きい順に好みの順位をつけて、そこからGSアルゴリズムを用いてマッチングを行おうという考えだ。

男性が女性と組み合わされたときの効用を計算することを考える。そのためには、男性のデータmから効用関数E(w)を返す関数が必要となる。効用関数へ入力されるのは女性のデータwである。きっと、経済学には、効用関数をつくる関数に名前がついているだろうが、私は知らないので効用関数関数EE(m, w)と呼ぶ。

例えばEE(m, w)のmに<私>を入力すれば、私の効用関数E(w)が得られて、E(<満島ひかり>) = 1000、E(<石原さとみ>) = 900, E(<玉井詩織>) =500、みたいな感じで効用つまり点数が算出される(数字はあくまで例です)。

おそらく、効用関数関数は、一般的なモテ度G(w)と個人の嗜好P(m, w)の2つの項からなるだろう。

EE(m, w) = G(w) + P(m, w)

一般的なモテ度G(w)の関数で使う値は、容姿や気立てとかだろうか?

個人の嗜好P(m, w)の関数で使う値は、例えば男性の側が『らんま1/2』でどのキャラが好きかと女性がどのキャラに近いか;つまり、mがシャンプー好きで、wのギャル度が高ければP(m, w)の値が高いなど。他に、mがガンダム好きで、wがガンダム好きに理解があるとP(m, w)の値が高いといったことが考えられる。

らんまでだれが好きかなんかの情報はアンケートに答えてもらうしかないだろうか?

女性に点数をつけているが、この場合、男性にも点数がつく。また、らんまがどうとかいうレベルの話なので人間に点数をつけることの是非は説かないで欲しい。

おおよそ予想がつくと思うが、こんな関数を作るのはまず不可能だ。また、容姿や気立てなんかを数値化するのも非常に難しい。

そして、別の問題もある。一般的なモテ度G(w)に比べて、個人の嗜好P(m, w)はほとんどの場合無視できるのではないか。満島ひかり石原さとみを比較したときに各人の好みの差は出るかもしれない。

しかし、現実的にこのレベルの超美人を比較するなんてない。普通の集団の場合、大体だれが異性に順位をつけても同じようになる。

全員の好みが同じだった場合は、安定な組み合わせというのは、1番目モテる男と女、2番目にモテる男と女……となる。同じ順位同士が組み合わされるのが最適解となる。

そして、現実はそうなっているのではないだろうか?

それならば、数学的に最適な解を見つけよう試みではなくて、現実はすでに十分最適化されているとみなしてそれに近づけるというアプローチが考えられる。

次回はそれを述べたい。

    • -


究極の出会い系サイトを作る方法: 現実を参考にするアプローチ - 超ウィザード級ハッカーのたのしみ