當前位置:
首頁 > 最新 > 數學家破解婚戀網站配對程序 90天找到靈魂伴侶

數學家破解婚戀網站配對程序 90天找到靈魂伴侶

找個合適或者善良的另一半比什麼都強,誰說搞技術的情商低?他們可以靠高超的技能來彌補,照樣能找到優秀的靈魂伴侶!

凌晨三點,在加州大學洛杉磯分校(UCLA)數學系大樓五樓的一個擁擠小隔間里,只有一隻燈泡和一台計算機的屏幕發出光亮。克里斯·麥金利(Chris McKinlay)正在為他的博士論文《大規模數據處理和並行數值方法》跑程序。計算機發出嘎嚓聲,他點擊打開第二個窗口,檢查了一下他在交友網站 OkCupid 的收件箱。

約有 4000 萬美國人使用 Match.com、J-Date 和 e-Harmony 等交友網站尋找浪漫戀情,35 歲的麥金利就是其中之一。他身材瘦高,頭髮凌亂,自從九個月前跟前女友分手之後,他就一直都在尋找新戀情,但迄今為止都是徒勞無果。

男主角麥金利

OkCupid 號稱可以用演算法找到跟你匹配的約會對象,麥金利已經向數十位匹配度不低的女性發送了私信,但大多石沉大海。只有 6 個人跟他見過面。

OkCupid 的運作方式

2012 年 6 月的那個清晨,當麥金利的編譯器在一個窗口中顯示機器代碼,他的交友賬號在另一個窗口中默默發獃時,他突然意識到自己做錯了一件事:他之前就像其他普通用戶一樣使用網上交友服務。這時他覺得,自己應該像一個真正的數學專家那樣去尋找約會對象。

OkCupid 是哈佛大學數學專業的學生在 2004 年創建的,它最初吸引用戶的地方是可以使用演算法來匹配會員。會員需要做大量的多項選擇題,這些問題涵蓋了包括政治、宗教、家庭、愛、性、智能手機在內的方方面面。比如:

「以下哪項最有可能吸引你去看一部電影?」

「宗教或神對你的生命有多重要?」

問題總共有數千個之多。平均而言,一個用戶會挑選其中 350 個問題來回答。此外用戶還可以指定只接受潛在伴侶的何種回答,並用打分的方式說明這個問題對自己有多麼重要:0 代表「不重要」,5 代表「必不可少」。

然後 OkCupid 的匹配引擎就會使用這些數據來計算兩個人的匹配度。百分比越接近 100% 就越匹配。100% 表示你們是靈魂伴侶。

麥金利的問題

麥金利跟洛杉磯女性的匹配度簡直糟糕透頂。因為 OkCupid 演算法所使用的問卷問題,僅僅是雙方都選擇回答了的問題,而麥金利在選擇回答哪些問題時比較隨性。事實證明,他選擇回答的這些問題很多人都不會選。

洛杉磯大約擁有 200 萬女性,其中約有 8 萬人使用 OkCupid 交友服務。但是查看一下麥金利的匹配列表,只有不到 100 名女性跟他的匹配度達到 90 % 以上。在交友網站上,匹配度就相當於可見度,麥金利的可見度如此之低,跟鬼魂也差不多少。

麥金利意識到,他必須增加跟他匹配度在 90 % 以上的女性人數。如果可以用統計抽樣來確定哪些問題對他喜歡的那類女性來說很重要,他就可以修改自己的個人賬戶資料,老老實實地回答這些問題,不再去操心其他問題了。這樣一來,可能適合他的每個同城女性都會出現在匹配列表裡,而不適合他的女性一個都不會出現。

從中文繫到數學系

對於一名數學專家來說,麥金利的經歷有些不同尋常。他在波士頓市郊長大,2001 年從明德學院畢業,獲得了中文學位。當年八月,他在紐約做兼職,幫助世貿中心北樓第 91 層的一家公司把中文翻譯成英文。五周後 9.11 事件發生了,第一架飛機在上午 8:46 撞上世貿中心北樓。幸而麥金利那個時候不當班,正在家睡覺。

「自那之後,我問自己,我真正想做的事情是什麼。」他說。一位朋友將他招進了著名的「麻省理工 21 點小組」的一個分組,在接下來的幾年中,他在紐約和拉斯維加斯之間飛來飛去,靠算牌賺到了 6 萬美元的年收入。

「麻省理工 21 點小組」由麻省理工學院和哈佛學生於 1979 年組建,曾多次打敗拉斯維加斯和大西洋城的眾多賭場。Blackjack 又稱 21 點,是各地賭場最熱門的牌桌項目之一。這在很大程度是因為 21 點並不完全是碰運氣,而要求玩家擁有對數字的敏銳反應、嫻熟的算牌技術和沉著冷靜的心理。

這段經歷激發了他對應用數學的興趣,他開始攻讀數學碩士學位,然後又繼續讀博。「數學系的學生在很多情況下都可以用到自己的專業,」麥金利說。「比如玩一些新遊戲,『三張牌牌九』之類的,然後回家寫一些代碼,找出一個策略來打敗它。」現在,他要為了愛情做同樣的事情。

用假賬戶搜集數據

首先,麥金利需要數據。就在那天凌晨,他的論文任務繼續在另一個窗口裡跑的同時,他設置了 12 個 OkCupid 假賬戶,並編寫了一個 Python 腳本來管理它們。這個腳本會搜索麥金利的目標人群(25 至 45 歲之間的異性戀和雙性戀女性),訪問她們的網頁,並在她們的個人資料里搜集所有可用信息:種族、身高、是否吸煙、星座,所有一切。

為了獲取問卷數據,他必須做更多的偵查活動。在 OkCupid 上,只有當你自己回答過某個問題時,你才可以看到別人對這個問題的回答。於是麥金利編寫了 bot 機器人來隨機回答每一個問題(假賬戶的目的不是用來吸引約會對象,所以它們是怎麼回答問題的並不重要),然後把目標人群的回答搜集到自己資料庫中。

麥金利滿意地看著機器人忙忙碌碌。但是,在搜集了約 1000 份個人資料之後,他遇到了第一個障礙。OkCupid 採用了一個系統來防止這種數據收集活動:它可以輕而易舉地發現這種連續、快速的活動。麥金利的機器人一個接一個地被禁了。

Chris McKinlay 用 Python 腳本分析 OkCupid 的調查問題,並且把女性分成七大類,比如:「Diverse」and「Mindful,」,每類都各具特點。

克服第一個障礙

他必須訓練這些機器人,讓它們的活動顯得有人味。

麥金利找到了他的朋友山姆·托里西(Sam Torrisi)。托里西是個神經學家,最近跟麥金利進行了「技能交換」:他教麥金利音樂理論,麥金利教他高等數學。

托里西也是 OkCupid 的用戶,他同意讓麥金利在自己的計算機上安裝間諜軟體,跟蹤自己使用這個網站的方式。有了這種數據,麥金利就可以模仿托里西的點擊和打字速度給機器人編程了。

麥金利從家裡搬來了第二台計算機,把它接到數學系的寬頻上,讓機器人每天 24 小時不間斷地運行。三周後他就從全美各地 2 萬名女性用戶那裡搜集了 600 萬條問題和回答。

麥金利現在一頭扎進了這些數據,完全把博士論文當成了副業。本來他就已經常常在小隔間里過夜,現在他幾乎不回公寓了,完全搬進了這個小隔間。到了睡覺的時候,只要在辦公桌上鋪上薄薄的床墊,就可以躺上去了。

女性用戶的七種類型

麥金利的計劃要想奏效,就必須找出問卷數據中的規律——根據數據的相似性,把女性分為大致幾個類型。

貝爾實驗室(Bell Labs)有個名叫 K-Modes 的演算法,最早是在 1998 年投入使用,用來分析病變的大豆作物,它可以把具有相似性的數據凝結在一起。麥金利對它做了一些微調,以便調整結果的粘度。然後他用這個修改後的演算法來處理搜集到的問卷數據。

他調整刻度盤,發現了一個點,可以根據 2 萬名女性的問題和答案,把她們分成七個在統計學上具有明顯區別的類型。「當時我欣喜若狂。」他說。

他給機器人重新分派了任務,以便搜集另一個樣本: 5000 名在過去一個月內登陸過 OkCupid 的洛杉磯和舊金山女性。然後他再用修改過的 K-Modes 演算法處理她們的問卷數據。結果這些女性用戶也以同樣的方式被劃分成七個類型,證實他的統計抽樣方法確實有效。

目標鎖定兩種類型

在這一步,麥金利的任務是選擇最適合自己的類型。他從每個類型中抽取了一些個人資料來查看。有一個類型太年輕,有兩個類型太年長,還有一個屬於基督教徒類型。

有一個類型讓他很感興趣:她們大多二十多歲,看上去特立獨行,參與音樂和藝術活動。麥金利希望在這個類型中大海撈針,找到他的真愛。

實際上,還有一個類型看起來也很酷——年齡稍大的女性,是創造性工作專業人士,比如編輯、設計師。他決定兩個類型都試試。於是他創建了兩份個人資料,分別為兩個類型做了優化。

他對這兩個類型女用戶的文字信息進行了挖掘,以便了解她們對什麼東西感興趣。他發現教學是一個熱門話題,於是他寫了一篇自我介紹,強調自己是一名數學老師。

精準營銷

但是,最重要的是問卷問題。他挑選出在這兩種類型中最流行的 500 個問題,誠實地填寫了答案——他不想把自己未來的關係建立在計算機生成的謊言上,但是他會讓計算機算出應該如何給每個問題的重要性打分。他使用一種名為「自適應提升」(adaptive boosting)的機器學習演算法來計算最佳分數。

就這樣,他創建了兩份個人資料。一份上傳了他攀岩的照片,另一份上傳了他在一次演出中彈吉他的照片。

「不管未來的計劃如何,眼下更吸引你的是什麼?是性還是愛情?」這是 500 個流行問題中的一個。回答當然應該是「愛情」。但他按照「自適應提升」的結果,對於較為年輕的 A 組,給該問題打分為「非常重要」,而對於年齡稍大的 B 組,他則給該問題打了 5 分,即「必不可少」。

當回答完最後一個問題並給它打分之後,麥金利在 OkCupid 上進行了搜索,按照跟自己的匹配度來排列洛杉磯女性用戶。第一頁的女性跟他的匹配度高達 99%。他繼續向下滾動頁面,直到一萬名洛杉磯女性之後,他仍然跟她們有 90% 以上的匹配度。

私信滾滾而來

要引起這些女性的注意,麥金利還需要做另一件事。在 OkCupid 上,每當有人瀏覽你的個人資料時,你就會收到提醒。所以麥金利寫了一個新程序,專門去查看跟他的匹配率最高的女性用戶的頁面。

這個程序按照年齡順序進行瀏覽:周一瀏覽 1000 名 41 歲女性的頁面,周二瀏覽 1000 名 40 歲女性的頁面,以此類推,一直到兩個星期後,瀏覽 1000 名 27 歲女性的頁面。在這些用戶中,有大約 400 名女性也反過來查看了麥金利的個人資料。結果私信滾滾而來。

「我到現在為止還沒有遇到過算牌很厲害的人,我覺得你的個人資料很有意思。」一位女性用戶寫道。「我想跟你打個招呼。」

「嗨,你的個人資料確實打動了我,我想跟你打個招呼。」另一位寫道。「我認為我們之間有相當多的共同點,也許不是數學,但肯定有很多其他方面!」

「你真的能翻譯中文嗎?」還有一位問道。「我參加過一個中文培訓班,但效果並不好。」

前三次約會

到了現在,需要用到數學的部分已經完成,只剩下一件事要做了:麥金利必須離開他的小隔間,去跟她們約會。

6 月 30 日,麥金利在加州大學洛杉磯分校的健身房洗了澡,開著他的破舊日產車,去赴第一個約會。希拉(Sheila)是一位網頁設計師,來自 A 組,即較年輕的藝術類型。他們在迴音公園的咖啡館共進午餐。「這真是可怕,」麥金利說。「直到那一刻之前,這件事幾乎都是一個學術活動。」

這次約會結束時,狀況已經很明顯:雙個人不來電。第二天,麥金利繼續趕赴第二個約會,這次是一個富有魅力的博客編輯,來自 B 組。

麥金利本打算跟她沿著迴音公園的湖浪漫地散散步,但卻發現挖泥船正在湖裡疏浚。她愛讀普魯斯特的作品,對自己的生活感到憂傷。「這個比較負能量。」他說。

第三個約會對象也來自 B 組,名叫艾莉森(Alison)。他們在韓國城的一間酒吧見了面。她是一個學編劇的學生,肩膀上有斐波那契螺旋的紋身。麥金利喝韓國啤酒喝醉了,第二天在小隔間醒來的時候,經歷了痛苦的宿醉。他在 OkCupid 上給艾莉森發了一條私信,但她沒有回。

成為約會遊戲中的強者

被拒絕的感覺不好受,但麥金利仍然每天都能收到 20 條私信。有了計算機演算法的支持,他在約會遊戲中佔據了主動地位。

還記得當初,麥金利主動給別人發私信的時候,每發 3 到 5 條私信才會獲得一個約會機會。但現在,別人發給他的私信,只要他看不順眼,就一概無視。他只回應那些具有幽默感,或個人簡介很有意思的女性。而且,他只需要簡單地答覆「你看起來真的很酷。想見面嗎?」基本上就能搞定一個約會。

在去赴第 20 個約會時,他注意到了新的規律:比較年輕的 A 組女性總是有兩個或兩個以上的紋身,並且住在洛杉磯的東部。在 B 組,養有中型犬的女性人數格外多。

最初幾次約會時,他還精心做了準備。但是,隨著次數的增加,他把約會形式改成了休閑式的午餐小聚或是喝咖啡,而且常常一天趕赴兩場約會。

提高約會效率

麥金利還為這場馬拉松式的戀情搜尋行動制定了一套個人規則,比如不要喝酒;時間到了就結束約會,不要拖拖拉拉;不要去聽音樂會或看電影。「把注意完全放在對方身上。」他說。「否則效率很低。」

在第一個月,他同時約會 A 組和 B 組女性。一個月後,他不想再約會有紋身、住在洛杉磯東部的女性了,因為不想花太多時間在路上。於是他刪除了面向 A 組的個人資料。

這下子他的效率提高了,但結果還是一樣。夏季即將結束,他赴約的次數超過了 55 次。每一次約會都被他盡職盡責地記錄在了一個實驗室筆記本上。只有三個人進行了第二次約會,只有一個人進行了第三次約會。

大多數不成功的交友者都會覺得自尊心受損。對於麥金利來說,情況更是雪上加霜。他對自己的計算思路產生了些許懷疑。

真愛現身

這時,他收到了王婷(Christine Tien Wang,音譯)的私信。她 28 歲,是一名藝術系學生,支持廢除監獄的活動,希望尋找一位 6 英尺(1.82 米)高,藍眼睛,住在加州大學洛杉磯分校附近的男伴。她在這所學校攻讀美術碩士學位。他們的匹配度是 91%。

兩人在學校里的雕塑園見了面,然後從那裡步行到了校園裡的一間壽司店。他一開始就感覺跟王婷很投緣,兩人談論了書籍、藝術和音樂。

王婷承認,在給麥金利發私信之前,她對自己的個人資料進行了調整,而這時,麥金利就把自己用程序和演算法尋找女伴的過程原原本本告訴了王婷。

「我覺得這有點黑暗,有點玩世不恭。」她說,「我喜歡。」

這就是麥金利跟 88 號女士的第一次約會。很快他們又進行了第二次約會,第三次約會。兩個星期後,他們各自暫停了 OkCupid 上的帳號。

「我覺得,跟 OkCupid 上其他所有用戶做的事情相比,我只不過多用了一點演算法,活動規模更大一點,還使用了一些機器學習技術。」麥金利說。每個人都試圖創建最佳版本的個人資料——他只不過是擁有一些數據來幫助他做到了這一點。

後續發展和反思

麥金利和王婷的第一次約會已經過去一年多了。現在麥金利已經拿到了數學博士學位,是一名數學老師,目前在讀音樂研究生。王婷則獲得了卡達為期一年的藝術獎學金。她時不時回到加州探望麥金利。他們一直在 Skype 上保持聯繫。

在王婷看來,麥金利用 OkCupid 找女友的故事很有趣。但是,對於他們的戀情來說,數學知識和編碼技能起到的僅僅是序幕作用。在戀愛關係中,關鍵的是兩人見面之後發生的事。

「真人比個人資料複雜得多。」她說。「所以我們見面的方式可能比較膚淺,但之後發生的一切都不膚淺。那是辛苦培養得來的。」

「並不是說我們匹配度高,就會有良好的關係。」麥金利同意這個看法。「那只是一種讓我們走到同一個房間的方式。我可以利用 OkCupid 來找到合適的人。」

王婷說:「你沒有找到我。是我找到你了。」麥金利思考了一下,然後承認她說得對。

在一次 Skype 通話中,麥金利掏出一隻鑽石戒指,把它放在網路攝像頭前。她答應了他的求婚。

他們不確定會在何時結婚。要找出最佳的結婚日還需要做一些研究。

(投票後即可查看結果)

看完此文,有什麼想法或觀點呢?歡迎在留言區留言評論。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序人生 的精彩文章:

當程序員找BUG的時候
這些程序員最怕的事,你怕么?
我寫程序的時候最想給你看……
編程就像兩性關係
程序員開的公司只招妹子

TAG:程序人生 |