データマイニングで理想の彼女をGetだぜ!

ある国際会議のkeynote Speechの中で紹介されていた話。非常に面白かった。

「いまどきの若い男は、なんでもコンピュータか!」とか思われるかもしれないけど、何をしたのかを読んでみると「これって、単なるナンパの方が楽だったんじゃないか?」と思わされる。

登場人物のスペック

この人の経歴がアメリカ的。

  • 名前:Chris McKinlay (35歳)
  • 経歴
    • 2001年:Middlebury College を卒業。専攻は中国語
    • 同年:世界貿易センターで中国語から英語への翻訳のアルバイト。アルバイトを辞めた5週間後に9・11。
    • 〜2002年:その後、友達に誘われて、an offshoot of MIT’s famed professional blackjack team に加入し、ラスベガスとニューヨークのカジノで稼ぐ。年に6万ドル稼いだとのこと
    • 2003年〜:数学に目覚め、UCLAの大学院へ。記事の当時は博士課程の学生(Ph.D candidate:博士号へ挑戦できる大学院生)
  • McKinlayさんの見栄えはWiredの記事参照

何をしたか

恋人マッチングサービスOKCupidの恋人マッチングアルゴリズムがだめだと思ったので、自分でマッチングアルゴリズムを作成し、自分に合う彼女を探した。

ステップ1: OKCupidに登録されている女性のQ&Aを収集

OKCupidでは、5段階で回答する質問(例:「宗教はあなたにとってどれぐらい重要ですか?」)をたくさん用意しており、その中から利用者が好きな質問を選び、回答する(平均350問)。この回答結果を利用して、登録者に合う恋人候補を提案している。

McKinlayさんはこの質問&回答結果を収集することからスタートした。博士論文執筆の傍ら、12の偽アカウントをOKCupidに作成し、自動プログラムで25歳以上45歳以下の異性愛 or 両性愛の女性の回答を収集した。途中、OKCupidに自動プログラムであることが見破られ、アカウント停止処理をくらったので、同じくOKCupidを使っている友達の承諾の元で、彼のPCに操作記録を自動記録するプログラムを仕込み、彼の操作(どのくらいの速さでキーボードを叩くかやどのくらいの速度でマウスをクリックするか)を真似できるように自動プログラムを改良し、回答の収集を続けた。

6か月後、2万人の女性ユーザから600万の質問に対する回答を収集できた。

ステップ2: データ分析

博士論文そっちのけで、データ分析を行ったとのこと。最終的には家に帰るのを止め、研究室に泊まり込みに。K-Modeアルゴリズムを用いて、質問と回答に基づき女性を統計的に7つのクラスタ(グループ)に分類した。さらに、分類が適切かどうかを確かめるため、追加のデータを自動プログラムを用いてOKCupidから5000人分の女性のデータを追加的に収集し、同じ分類方法で同じ結果がでるかを確認した。

その後、7つのクラスタの内、どれが自分にとって好みのクラスタを考慮し、二つを選択した

  • クラスタA:20代半ばでかつ、見た目がインディーの音楽家か芸術家の女性
  • クラスタB:年上の女性で編集者やデザイナーなどの創造的な職業を持っている女性

ステップ3:適切なプロフィールの作成

上記の2つのクラスタの質問やプロフィールをテキストマイニングし、彼女らが興味をもつ質問を明確にした。ただし、質問を明確にしただけで、各質問への回答は正直に回答した。また、質問間の重要性(どの質問が上述の2つのクラスタに属する女性にとって重要であるか)については、ada-boostというアルゴリズムを使って順位付けした。

ステップ4: 地域による絞込み

OKCupidを使っており、かつ、ロスアンジェルスに住んでいる女性を絞り込んだ。ところが、この絞込みで1万人がヒットし、かつ、相性順でソートしたところ、1万人目の相性は90%以上だった。

ステップ5: ページへの訪問

OKCupidは昔のmixiにあった足跡機能(誰が自分のページを見たのかが通知される)があるので、上述のロスアンジェルス在住の女性のページを訪問するプログラムを書き、1日1歳ずつ、41歳から27歳まで二週間かけて、彼女らのページを訪問した(プログラムに訪問させた)。

その結果、1日に400人ずつMcKinlayさんのページに訪問があり、彼のもとに彼女らからメッセージが届き始めた。

ステップ6:実際にデート

デートしても良いという女性と実際にデートを始めた。総計88人とデートした。途中からは、デート中にお酒を飲まない、トレイル(ハイキング?)に行かない、コンサートや映画にもいかないようにし、デートを効率化した。

88人目のデートで、28歳の Tien Wangさんに出会い、彼女と付き合うようになった(出会って2週間後に二人ともOKCupidのアカウントを削除した)。

感想

2012年6月からプログラムを動かし始め、2013年(?)6月30日にデートを開始し、そこから数か月デートし続けるという、データマイニングで対象を決めてからの負荷がすさまじい。映画化 or ドラマ化したらとても面白そうな話。

追記:これってデータマイニング関係あるのか?

私もこの話聞いてすぐに思いました「88回デートしていればそりゃ恋人できるだろ」と。ぜひ、Wiredの記事を読んで、デート末期のMcKinlayさんの荒み具合をご堪能ください。

At my request, McKinlay has brought his lab notebook. Tien Wang hasn’t seen it before today. It’s page after page of formulas and equations in McKinlay’s tight handwriting, ending in a neatly ordered list of women and dates, a few terse notes about each. Tien Wang leafs through it, laughing at some of the highlights. On August 24, she notices, he took two women to the same beach on the same day. “That’s horrible,” she says.

私(この記事の著者)のリクエストで、McKinlay氏は彼のラボノートを貸してくれた。Tien Wangさんは今日までそのノートを読んだことがなかった。ノートにはびっしりと手書きの数式が残されていた。ノートの終りのほうに女性とデートのリストがあった。それぞれについて簡単な記述もあった。Tien Wangさんはノートをぱらぱらめくり、いくつかのハイライトされている部分で笑った。8月24日、彼は2人の女性と同じベンチビーチで同じ日にあっていた。「うわ、ありえん」彼女はいった。
Wired: How a Math Genius Hacked OkCupid to Find True Loveより)