5 個步驟、55 次約會,美國工程師用 Python 成功脫魯!

示意圖,非當事人。

【為什麼我們要挑選這篇文章】要如何在交友網站向女生搭訕,並且交到女朋友?如果你是工程師,會用 Python 的話,拜託不要再打「安安你好」了,因為這簡直糟蹋了你的專業技能。

看美國超狂工程師 McKinlay 如何使用 Python 做數據分析,透過 5 個步驟,55 次約會,找到自己的靈魂伴侶。(責任編輯:郭家宏)

「《科技報橘》徵才中!跟我們一起定位台灣產業創新力 >> 詳細職缺訊息
快將你的履歷自傳寄至 [email protected]

想脫單?那還不容易!

如果身在美國,就像其餘四千萬單身男人一樣,註冊一下 Match.com、J-Date 和 OkCupid 等交友網站,坐等真愛上門不就可以了。

但是相信大多數人和 McKinlay 一樣,儘管向 OkCupid 演算法推薦的女性發送了許多曖昧私訊,但絶大多數都石沉大海了。

轉折出現在 2012 年 6 月的一個早上,這個只進行過 6 次線下約會的男人正在電腦上編譯機器程式碼,另一個窗口顯示著他孤零零的交友大頭貼,他突然頓悟:他一直在使用錯誤的方法尋找愛情。

為了不辜負自己在應用數學領域取得的成績,他決定,在 OkCupid 上爬取每一條相關資訊,利用關鍵的 K-Modes 的改良貝爾實驗室演算法找出數據規律,縮小範圍,然後一擊命中。

換句話說,這是一次數學家獨創的完美約會經驗貼文,還不快來看看!

第一步:分析失敗原因,找到女人真正在意的問題

OkCupid 是哈佛大學的數學系學生,他在 2004 年創立約會網站。最初這個網站吸引人們注意力的,是它基於計算方法的配對模式。會員會回答很多多項選擇問題,這些問題覆蓋面很廣,包括政治、宗教、親情、性、以及智慧手機等。

通常,系統會從上千道問題的題庫裡選出 350 道問題:「以下哪種情形最有可能讓你去看電影?」或是「宗教/上帝在你的生活中有多重要?」

對於每一道問題,用戶會選擇一個答案,以說明自己伴侶的哪一個回答是他可以接受的,並透過給問題評分來表明問題對自己的重要性(5 分制,從無關緊要到必須回答)。OkCupid 的匹配引擎會利用這些數據來計算男女之間的合適程度。越接近 100%,所謂數學意義上的靈魂伴侶就越匹配。

McKinlay 從數學上分析了自己一直以來的失敗原因。

OkCupid 的演算法只會使用雙方都願意回答的問題去計算,而 McKinlay 選擇的問題有些隨機,並不主流。當他查看與自己配對的人時,匹配度超過 90% 的女人不到 100 個。要知道,洛杉磯有兩百萬女性(大約 8 萬女性在使用 OkCupid)。如果把配對程度比作可見度,那 McKinlay 可以說就是個看不見的幽靈。

他意識到他應該去提高配對的人數。如果 McKinlay 透過統計取樣,確定哪些問題是他喜歡類型的女人願意回答的,那麼他便可以誠實地回答這些問題而忽略其他問題,以此來建立一個全新的用戶。利用這個辦法,他可以配對到在洛杉磯的每一個可能與他配對的女人,而不會配對到不合適的人。

第二步:借助 Python,求助好友,收集 2 萬個女性網友數據

Chris McKinlay 利用 Python 腳本瀏覽了上百道 OkCupid 的問卷題目,然後把女性用戶分為七類,每一類都會貼上獨特的標籤,例如「多才多藝的」和「細心體貼的」等等。

即便作為一個數學家,McKinlay 也是個不尋常的人。他小時候在波士頓郊區長大,2001 年他從 Middlebury 學院畢業並獲得漢語言學位。同年 8 月份,他在紐約世貿中心北塔 91 層的一家公司裡找了一份兼職工作,工作內容是將中文翻譯成英文。五週後的一天,世貿大廈倒塌了。(那天,下午兩點前 McKinlay 都沒來公司。當第一架飛機於早上 8 點 46 分撞上大廈的時候,他正在睡覺。)

「自從那件事後,我問自己,我究竟想做什麼」他說。他的一個在哥倫比亞大學的朋友招募他,進入了一個由麻省理工職業 21 點團隊衍生出的一個團隊,這之後的幾年裡,他便往返於紐約和拉斯維加斯,他的工作是數牌,一年能賺 6 萬美金(約新台幣 186 萬元)。

這段經歷點燃了他對應用數學的興趣,最終促使他在這個領域取得了碩士和博士學位。「他們能夠在很多不同的情景下使用數學知識,」他說,「他們會見到一些新的遊戲,比如三張牌的牌九撲克,然後回家寫點程式,接著就能找到策略去打敗它。」

現在,他想用同樣的方式去尋找愛情。首先,他需要數據。就在他用旁邊的窗口進行論文寫作的時候,他建了 12 個假的 OkCupid 帳號並寫好了 Python 腳本去管理這些帳號。這個腳本會搜尋他的目標群體(25 到 45 歲的異性戀或雙性戀的女人),訪問她們的主頁,然後爬取她們帳號上每一條有用的資訊:種族、身高、是否吸煙、星座——「這些我全都要」他說。

為了找到心儀的另一半,他還做了一些額外調查。OkCupid 可以讓用戶看到其他人的回答,但只能看到那些他們自己已經回答過的問題。 於是 McKinlay 設置了自己的機器人程式,以簡單地隨機回答每個問題,他並沒有使用虛擬的個人資料吸引任何女性,因此答案並不重要,主要他要將這些女性的答案收集到了數據庫中。

McKinlay 滿意地看著他程式一路狂奔。 然後,在收集了大約一千個檔案後,他遇到了第一個障礙。OkCupid 有一個短平快的系統來防止這種數據收集,他的程式一個接一個地被禁。

因此他必須把自己的程式訓練的更像真人一些。

他求助他的神經科學家朋友 Sam Torrisi,最近剛教過 McKinlay 音樂理論以換取高級數學課程。Torrisi 也註冊了 OkCupid,他同意在他的電腦上安裝間諜軟體來監控該網站的使用。根據手中的數據,McKinlay 透過程式模擬 Torrisi 的點擊率和打字速度。他從家裡帶來了第二台電腦並將其插入數學系的寬頻線路,以便可以 24 小時不間斷運行。

三週後,他已經收集了來自全國各地 20,000 名女性的 600 萬個問題和答案。

第三步:將 20,000 名女性分為 7 類,找出最適合自己的類型

按照 McKinlay 的工作計劃,他需要從調查數據中找到一個規律,即需要根據相似性粗略地對女性進行分組。這個問題在他編寫一個名為 K-Modes 的改良貝爾實驗室演算法時取得了進展。

K-Modes 演算法 1998 年首次用於分析患病的大豆作物。

他透過演算法發現了一個自然的分割點,根據問題和答案,20,000 名女性被分為成七個統計學組。「我太高興了,」他說,「那是六月令我最興奮的事情了。」

他重新設置條件來收集另一個樣本庫:在過去一個月內登錄 OkCupid 的來自洛杉磯和舊金山的 5,000 名女性。透過 K-Modes 的另一次分組,確認他們以類似的方式聚集並確保統計抽樣有效。

現在只需要決定哪個類群最適合他了,在抽查了每個類群的一些檔案後,發現一個類群太年輕,兩個太老,另一個太「基督」了。於是他徘徊在一個 25 歲左右的女性主導的類群中,工作類型比較獨立,像是音樂家和藝術家。這簡直是黃金單身群!

就像是大海撈針,他找到了他的針,也就在這個類群的某個地方,他找到了真愛。

一個相鄰的類群看起來也引起了 McKinlay 的注意:年齡稍微大一些,從事專業的創造性工作,如編輯和設計師。他決定將兩個類群都設定為自己的目標!於是設置了兩個配置文件,A、B 組各優化一個。

第四步:真誠填寫女性關注的問題,找出靈魂伴侶

他對這兩個類群進行了文本挖掘,以瞭解她們感興趣的內容:教學是一個熱門話題,因此他撰寫了一篇強調了他作為數學教授工作的文章。

更重要的是回答問題,於是他挑選了兩個類群中最受歡迎的 500 個問題,並決定誠實地填寫答案。他不想在電腦生成的謊言的基礎上建立未來的戀愛關係,但是他會使用一種稱為自適應提升的機器學習演算法來得出最佳權重,從而讓電腦確定分配每個問題的重要性。

有了這個後他發表了兩個照片,一個是攀岩的照片,另一個是在音樂演出中彈吉他。

「無論未來的計劃如何,你現在對什麼更感興趣?性還是愛?」這個問題的答案很明顯是愛。但對於年輕的 A 群,他尊重電腦將問題評為「非常重要」的結果。對於 B 群集,它則是「必須回答」的問題。

當回答完最後一個問題時,他按照匹配百分比,對洛杉磯的女性進行了 OkCupid 搜尋。從頭開始:第一頁配對率全是 99% 女性。向下滾動…… 然後…… 向下滾動……,來自洛杉磯各地的 1 萬名女性迎面而來。

離被關注還差一步! OkCupid 會員在有人查看他們的網頁時會收到通知,因此他寫了一個新程式來訪問查看他主頁的女性的主頁,並按年齡循環:週一有 1000 名 41 歲的女性,週二有 1000 名 40 歲的女性。兩週後,輪到了 27 歲的女性。女性會回訪他的個人資料,每天約 400 名左右。然後,私信開始滾滾而來。

「直到現在我還沒有遇到過如此配對的人,而且我發現你的個人資料很有趣,」一位女士寫道,「對於一個擅長數字的粗獷男人…… 我覺得我想認識你。」

「嘿,你的個人資料很棒,我想認識你,」另一位寫道,「我認為我們有很多共同之處,也許不是數學,但肯定還有很多!」

「你真的會翻譯中文嗎?」還有人問道,「我上了一些課,但學的並不好。」

至此,數學部分已經完成。接下來,他需要離開他的小隔間,進入實際演練階段,他要去真正的約會!

第五步:走出房間,來一場真正的約會

6 月 30 日, McKinlay 開著他的 Nissan,穿越城鎮來到加州大學洛杉磯分校的健身房,開始他的實際約會。Sheila 是一位來自「A 類群」的年輕的網頁設計師。他們在 Echo Park 的一家咖啡廳吃了午餐。「太不可思議了,這簡直像一場學術活動一樣。」

與 Sheila 約會結束後,雙方都覺得不來電。第二天,McKinlay 進行了第二次約會,一個來自「B 類群」的部落格編輯。他們計劃在 Echo Park Lake 周圍散步,卻發現正在施工。女方一直在讀普魯斯特並對生活感到失望。「這有點令人沮喪,」他說。

第三天的約會也來自 B 類群。他在韓國城的一家酒吧遇到 Alison。 她是一名實習編劇,肩膀上還紋了斐波那契螺旋。McKinlay 喝了很多韓國啤酒,第二天帶著痛苦的宿醉在他的小隔間醒來。他後來在 OkCupid 上私訊她表示想繼續約會,但她沒回。

雖然他被拒絶了,但每天仍然收到 20 條消息。實際約會顯然與電腦配置文件約會是完全不同的。他開始忽略一些主頁沒有內容的人的消息,只回應那些有幽默感或在首頁展示一些有趣的東西的人。以前他作為主動方,會交換三到五條消息來獲得一個約會日期。現在就只發一個回覆。「你看起來很酷。想見面嗎?」

20 個約會之後,他總結了一些潛在的規律。在較年輕的群體中,女性大多數有兩個或更多的紋身,而且住在洛杉磯的東邊。另一組中,她們瘋狂的喜歡中型犬。

早期的約會他會經過精心策劃。但當工作越來越忙時,就開始在午餐或咖啡時間偶爾參加休閒聚會,而且經常一天之內約兩場。他制定了一套個人規則來完成「馬拉松愛情」搜尋:不再約喝酒,如果不來電就趕快結束不要拖拉,不約音樂會或電影。「約會中你們需要關注的是彼此,而不是別的什麼東西,不然效率會很低。」

經過從他的兩個檔案中同等挑選約會一個月後,他發現他耗費了太多時間在紋身群中接觸東邊的女性。他刪除了他的 A 組簡介。他的效率雖然提高了,但結果還是一樣。隨著夏天即將結束,他已經有過超過 55 次約會,每日都盡職地在實驗筆記本上記錄。只有三個產生了第二次約會,只有一個進行了第三次。

大多數不成功的約會者都面臨著自尊問題。對於 McKinlay 來說其實更糟糕。他不得不檢查他的計算。

後來一個來自 28 歲的藝術家 Christine Tien Wang 發來了消息。McKinlay 之前在加州大學洛杉磯分校附近搜尋到她,6 英呎高藍眼睛的人,正在那裡修她的美術碩士學位。他們有 91% 的適合度。

他在校園的雕塑花園遇見了她。從那裡他們走到一個大學壽司會場,他立刻感覺到了來電了!他們談論了書籍、藝術、音樂,當她承認她在給他發消息之前,對她的個人資料做了一些小改動後,他給她講述了關於他駭進愛情網站的整個經過。

「我認為這樣做有點腹黑和憤世嫉俗,」她說,「但我喜歡。」

這是第一次約會,第二次緊隨其後,然後是第三次約會。兩週後,他們都暫停了他們的 OkCupid 帳戶。

「我認為我所做的,只是每個人在站點上所做事情的一種略微演算法化,大規模且基於機器學習的版本。」McKinlay 說。每個人都試圖建立一個最佳的配置文件,他只是有數據來設計一個。

這是他們第一次約會的一年後,McKinlay 和 Tien Wang 在韋斯特伍德壽司吧檯和一位記者見面,他們的已經正式交往了。McKinlay 獲得了博士學位,他正在教數學,目前正在攻讀音樂研究生學位。Tien Wang 被卡塔爾錄取並獲得為期一年的藝術獎學金。她在加州和 McKinlay 見面。他們一直在 Skype 上保持聯繫。

根據記者的要求,McKinlay 帶來了他的實驗筆記本。Tien Wang 之前沒見過它。這是 McKinlay 緊密筆跡中的公式和方程式的頁面,以一個整齊排列的女性名單和約會清單結尾,其中含有一些簡短的註釋。Tien Wang 掃讀了一遍,覺得一些亮點有點可笑。 她注意到,8 月 24 日,他在同一天帶了兩個女人到同一個海灘。她說:「太可怕了。」

對 Tien Wang 來說,McKinlay 的 OkCupid 駭客歷程是一個有趣的故事。但所有的數學和程式碼只是他們故事的序幕。見面後,戀愛關係才真正被駭客入侵。「人們比他們的個人資料要複雜得多,」她說,「所以我們遇到的方式有點膚淺,但我們之間發生的一切都不是膚淺的,它是透過彼此的努力培養出來的。」

「這不是說,我們配對因此我們關係很好,」McKinlay 表示贊同,「這只是一種將我們放在同一個空間的機制,我能夠使用 OkCupid 找人。」

Tien Wang 對此有點憤怒:「你沒找到我,我找到了你。」她摸著他的手肘說道。McKinlay 停下來思考,然後承認她是對的。

一週之後,Tien Wang 又回到了卡塔爾,這對夫婦每天都會撥打一個 Skype 電話。當 McKinlay 拿出鑽石戒指並將其舉到網路鏡頭前像她求婚時,Tien Wang 說「我願意」。

他們結婚時間並不完全確定,McKinlay 說需要進一步研究以確定最佳婚禮日。

原文報導 傳送門

(本文經合作夥伴 大數據文摘 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈只需五步!哈佛学霸教你用 Python 分析相亲网站数据,在两万异性中找到真爱 〉。首圖來源:Pixabay CC Licensed)

更多關於 Python 的資訊

【內附影片、程式碼】微軟工程大師開課啦!用 44 個短片讓你速成 Python 技能
只會用 Excel 還不夠!七大主題,教你如何用 Python 優化數據分析效能
教你如何用 Python 的平行運算,驗證數學界的百年難題「哥德巴赫猜想」


輕鬆 KO 混合雲搬遷難題!

AWS 年度雲端技術精華統整

馬上報名 11/27《AWS Innovate 2019

破解企業常見的 IT 技術坎

點關鍵字看更多相關文章: