只需五步!哈佛學(xué)霸教你用Python分析相親網(wǎng)站數(shù)據(jù),在兩萬異性中找到真愛
大數(shù)據(jù)文摘出品
來源:Wired
編譯:啤酒泡泡、張大筆茹、張睿毅、牛婉楊
想脫單?那還不容易!
如果身在美國,就像其余四千萬單身男人一樣,注冊一下Match.com, J-Date和OkCupid等相親網(wǎng)站,坐等真愛上門不就可以了。
但是相信大多數(shù)人和McKinlay一樣,盡管向OkCupid算法推薦匹配的女性發(fā)送了許多曖昧私信,但絕大多數(shù)都石沉大海了。
轉(zhuǎn)折出現(xiàn)在2012年6月的一個早上,這個只進(jìn)行過6次線下約會的男人正在電腦上編譯機(jī)器代碼,另一個窗口顯示著他孤零零的交友頭像,他突然頓悟:他一直在使用錯誤的方法尋找愛情。
為了不辜負(fù)自己在應(yīng)用數(shù)學(xué)領(lǐng)域取得的成績,他決定,在OkCupid上爬取每一條相關(guān)信息,利用關(guān)鍵的K-Modes的改良貝爾實(shí)驗(yàn)室算法找出數(shù)據(jù)規(guī)律,縮小范圍,然后一擊命中。
換句話說,這是一次數(shù)學(xué)家獨(dú)創(chuàng)的完美約會經(jīng)驗(yàn)貼,還不快來看看!
第一步:分析失敗原因,知己知彼
OkCupid是哈佛大學(xué)的數(shù)學(xué)系學(xué)生于2004年創(chuàng)立的約會網(wǎng)站,最初這個網(wǎng)站吸引人們注意力的是它基于計算方法的配對模式。會員會回答很多多項(xiàng)選擇問題,這些問題覆蓋面很廣,包括政治、宗教、親情、性、以及智能手機(jī)等。
數(shù)學(xué)家Chris McKinlay
通常,系統(tǒng)會從上千道問題的題庫里選出350道問題—— “以下哪種情形最有可能讓你去看電影?”或是“宗教/上帝在你的生活中有多重要?”
對于每一道問題,用戶會選擇一個答案,以說明自己伴侶的哪一個回答是他可以接受的,并通過給問題評分來表明問題對自己的重要性(5分制,從無關(guān)緊要到必須回答)。OkCupid的匹配引擎會利用這些數(shù)據(jù)來計算男女之間的合適程度。越接近100%,所謂數(shù)學(xué)意義上的靈魂伴侶就越匹配。
McKinlay從數(shù)學(xué)上分析了自己一直以來的失敗原因。
OkCupid的算法只會使用雙方都愿意回答的問題去計算,而McKinlay選擇的問題有些隨機(jī),并不主流。當(dāng)他查看與自己匹配的人時,匹配度超過90%的女人不到100個。要知道,洛杉磯有兩百萬女性(大約八萬女性在使用OkCupid)。如果把匹配度比作可見度,那McKinlay可以說就是個看不見的幽靈。
他意識到他應(yīng)該去提高匹配的人數(shù)。如果McKinlay通過統(tǒng)計取樣確定哪些問題是他喜歡類型的女人愿意回答的,那么他便可以誠實(shí)地回答這些問題而忽略其他問題,以此來創(chuàng)建一個全新的用戶。利用這個辦法,他可以匹配到在洛杉磯的每一個可能與他配對的女人,而不會匹配到不合適的人。
第二步:借助Python,求助好友,瘋狂收集數(shù)據(jù)
Chris McKinlay利用Python腳本瀏覽了上百道OkCupid的問卷題目,然后把女性用戶分為七類,每一類都會貼上獨(dú)特的標(biāo)簽,例如“多才多藝的”和“細(xì)心體貼的”等等。
即便作為一個數(shù)學(xué)家,McKinlay也是個不同尋常的人。他小時候在波士頓郊區(qū)長大,2001年他從Middlebury學(xué)院畢業(yè)并獲得漢語言學(xué)位。同年8月份,他在紐約世貿(mào)中心北塔91層的一家公司里找了一份兼職工作,工作內(nèi)容是將中文翻譯成英文。五周后的一天,世貿(mào)大廈倒塌了。(那天,下午兩點(diǎn)前McKinlay都沒來公司。當(dāng)?shù)谝患茱w機(jī)于早上8點(diǎn)46分撞上大廈的時候,他正在睡覺。)
“自從那件事后,我問自己,我究竟想做什么”他說。他的一個在哥倫比亞大學(xué)的朋友招聘他進(jìn)入了一個由麻省理工職業(yè)21點(diǎn)團(tuán)隊(duì)衍生出的一個團(tuán)隊(duì),這之后的幾年里,他便往返于紐約和拉斯維加斯,他的工作是數(shù)牌,一年能掙六萬美金。
這段經(jīng)歷點(diǎn)燃了他對應(yīng)用數(shù)學(xué)的興趣,最終促使他在這個領(lǐng)域取得了碩士和博士學(xué)位。“他們能夠在很多不同的情景下使用數(shù)學(xué)知識,”他說,“他們會見到一些新的游戲,比如‘三張牌的牌九撲克’,然后回家寫點(diǎn)代碼,接著就能找到策略去打敗它。”
現(xiàn)在,他想用同樣的方式去尋找愛情。首先,他需要數(shù)據(jù)。就在他用旁邊的窗口進(jìn)行論文寫作的時候,他建了12個假的OkCupid賬戶并寫好了Python腳本去管理這些賬戶。這個腳本會搜索他的目標(biāo)群體(25到45歲的異性戀或雙性戀的女人),訪問她們的主頁,然后爬取她們賬戶上每一條有用的信息:種族、身高、是否吸煙、星座—— “這些我全都要”他說。
為了找到心儀的另一半,他還做了一些額外調(diào)查。OkCupid可以讓用戶看到其他人的回答,但只能看到那些他們自己已經(jīng)回答過的問題。 于是McKinlay設(shè)置了自己的機(jī)器人程序,以簡單地隨機(jī)回答每個問題,他并沒有使用虛擬的個人資料吸引任何女性,因此答案并不重要,主要他要將這些女性的答案收集到了數(shù)據(jù)庫中。
McKinlay滿意地看著他程序一路狂奔。 然后,在收集了大約一千個檔案后,他遇到了第一個障礙。OkCupid有一個短平快的系統(tǒng)來防止這種數(shù)據(jù)收集,他的程序一個接一個地被禁。
因此他必須把自己的程序訓(xùn)練的更像真人一些。
他求助他的神經(jīng)科學(xué)家朋友Sam Torrisi,最近剛教過McKinlay音樂理論以換取高級數(shù)學(xué)課程。Torrisi也注冊了OkCupid,他同意在他的計算機(jī)上安裝間諜軟件來監(jiān)控該網(wǎng)站的使用。根據(jù)手中的數(shù)據(jù),McKinlay通過編程模擬Torrisi的點(diǎn)擊率和打字速度。他從家里帶來了第二臺電腦并將其插入數(shù)學(xué)系的寬帶線路,以便可以24小時不間斷運(yùn)行。
三周后,他已經(jīng)收集了來自全國各地20000名女性的600萬個問題和答案。
第三步:將20000名女性分為7類,找出最適合自己的
按照McKinlay的工作計劃,他需要從調(diào)查數(shù)據(jù)中找到一個規(guī)律,即需要根據(jù)相似性粗略地對女性進(jìn)行分組。這個問題在他編寫一個名為K-Modes的改良貝爾實(shí)驗(yàn)室算法時取得了進(jìn)展。
K-Modes算法1998年首次用于分析患病的大豆作物。
他通過算法發(fā)現(xiàn)了一個自然的分割點(diǎn),根據(jù)問題和答案,20,000名女性被分為成七個統(tǒng)計學(xué)組。 “我太高興了,”他說,“那是六月份令我最興奮的事情了。”
他重新設(shè)置條件來收集另一個樣本庫:在過去一個月內(nèi)登錄OkCupid的來自洛杉磯和舊金山的5000名女性。通過K-Modes的另一次分組確認(rèn)他們以類似的方式聚集并確保統(tǒng)計抽樣有效。
現(xiàn)在只需要決定哪個類群最適合他了,在抽查了每個類群的一些檔案后,發(fā)現(xiàn)一個類群太年輕,兩個太老,另一個太“基督”了。于是他徘徊在一個二十五歲左右的女性主導(dǎo)的類群中,工作類型比較獨(dú)立,像是音樂家和藝術(shù)家。這簡直是黃金單身群!
就像是大海撈針,他找到了他的針,也就在這個類群的某個地方,他找到了真愛。
一個相鄰的類群看起來也引起了McKinlay的注意:年齡稍微大一些,從事專業(yè)的創(chuàng)造性工作,如編輯和設(shè)計師。他決定將兩個類群都設(shè)定為自己的目標(biāo)!于是設(shè)置了兩個配置文件,A、B組各優(yōu)化一個。
第四步:真誠填寫相關(guān)問題,找出靈魂伴侶
他對這兩個類群進(jìn)行了文本挖掘以了解她們感興趣的內(nèi)容:教學(xué)是一個熱門話題,因此他撰寫了一篇強(qiáng)調(diào)了他作為數(shù)學(xué)教授工作的文章。
更重要的是回答問題,于是他挑選了兩個類群中最受歡迎的500個問題并決定誠實(shí)地填寫答案,他不想在計算機(jī)生成的謊言的基礎(chǔ)上建立未來的戀愛關(guān)系。但是他會使用一種稱為自適應(yīng)提升的機(jī)器學(xué)習(xí)算法來得出最佳權(quán)重,從而讓計算機(jī)確定分配每個問題的重要性。
有了這個后他發(fā)表了兩個照片,一個是攀巖的照片,另一個是在音樂演出中彈吉他。
“無論未來的計劃如何,你現(xiàn)在對什么更感興趣?性還是愛?” 這個問題的答案很明顯是愛。但對于年輕的A群,他尊重計算機(jī)將問題評為“非常重要” 的結(jié)果。對于B群集,它則是“必須回答”的問題。
當(dāng)回答完最后一個問題時,他按照匹配百分比對洛杉磯的女性進(jìn)行了OkCupid搜索。從頭開始:第一頁匹配率全是99%女性。向下滾動......然后......向下滾動……,來自洛杉磯各地的一萬名女性迎面而來。
離被關(guān)注還差一步! OkCupid會員在有人查看他們的網(wǎng)頁時會收到通知,因此他寫了一個新程序來訪問查看他主頁的女性的主頁,并按年齡循環(huán):周一有1000名41歲的女性,周二有1000名40歲的女性。兩周后,輪到了27歲的女性。女性會回訪他的個人資料,每天約400名左右。然后,私信開始滾滾而來。
“直到現(xiàn)在我還沒有遇到過如此匹配的人,而且我發(fā)現(xiàn)你的個人資料很有趣,”一位女士寫道,“對于一個擅長數(shù)字的粗獷男人......我覺得我想認(rèn)識你。”
“嘿,你的個人資料很棒,我想認(rèn)識你,”另一位寫道,“我認(rèn)為我們有很多共同之處,也許不是數(shù)學(xué),但肯定還有很多!”
“你真的會翻譯中文嗎?” 還有人問道,“我上了一些課,但學(xué)的并不好。”
至此,數(shù)學(xué)部分已經(jīng)完成。接下來,他需要離開他的小隔間,進(jìn)入實(shí)際演練階段,他要去真正的約會!
第五步:走出小隔間,來一場真正的約會
6月30日, McKinlay開著他的尼桑穿越城鎮(zhèn)來到加州大學(xué)洛杉磯分校的健身房,開始他的約會實(shí)踐。Sheila是一位來自“A類群”的年輕的網(wǎng)頁設(shè)計師。他們在Echo Park的一家咖啡館吃了午飯。 “太不可思議了,這簡直像一場學(xué)術(shù)活動一樣。”
與Sheila約會結(jié)束后,雙方都覺得不來電。第二天,McKinlay進(jìn)行了第二次約會,一個來自 “B類群”的博客編輯。他們計劃在Echo Park Lake周圍散步,卻發(fā)現(xiàn)正在施工。女方一直在讀普魯斯特并對生活感到失望。 “這有點(diǎn)令人沮喪,”他說。
第三天的約會也來自“B類群”。他在韓國城的一家酒吧遇到Alison。 她是一名實(shí)習(xí)編劇,肩膀上還紋了斐波那契螺旋。McKinlay喝了很多韓國啤酒,第二天帶著痛苦的宿醉在他的小隔間醒來。他后來在OkCupid上私信她表示想繼續(xù)約會,但她沒回。
雖然他被拒絕了,但每天仍然收到20條消息。實(shí)踐約會顯然與計算機(jī)配置文件約會是完全不同的。他開始忽略一些主頁沒有內(nèi)容的人的消息,只回應(yīng)那些有幽默感或在首頁展示一些有趣的東西的人。以前他作為主動方,會交換三到五條消息來獲得一個約會日期。現(xiàn)在就只發(fā)一個回復(fù)。 “你看起來很酷。想見面么?”
20個約會之后,他總結(jié)了一些潛在的規(guī)律。在較年輕的群體中,女性大多數(shù)有兩個或更多的紋身,而且住在洛杉磯的東邊。另一組中,她們瘋狂的喜歡中型犬。
早期的約會他會經(jīng)過精心策劃。但當(dāng)工作越來越忙時,就開始在午餐或咖啡時間偶爾參加休閑聚會,而且經(jīng)常一天之內(nèi)約兩場。他制定了一套個人規(guī)則來完成“馬拉松愛情”搜索:不再約喝酒,如果不來電就趕快結(jié)束不要拖拉,不約音樂會或電影。 “約會中你們需要關(guān)注的是彼此而不是別的什么東西,不然效率會很低。”
經(jīng)過從他的兩個檔案中同等挑選約會的一個月后,他發(fā)現(xiàn)他耗費(fèi)了太多時間在紋身群中接觸東邊的女性。他刪除了他的A組簡介。他的效率雖然提高了,但結(jié)果是一樣的。隨著夏天即將結(jié)束,他已經(jīng)有過超過55次約會,每日都盡職地在實(shí)驗(yàn)筆記本上記錄。只有三個產(chǎn)生了第二次約會,只有一個進(jìn)行了第三次。
大多數(shù)不成功的約會者都面臨著自尊問題。對于McKinlay來說其實(shí)更糟糕。他不得不檢查他的計算。
后來一個來自28歲的藝術(shù)家Christine Tien Wang發(fā)來了消息。McKinlay之前在加州大學(xué)洛杉磯分校附近搜索到她,6英尺高藍(lán)眼睛的人,正在那里修她的美術(shù)碩士學(xué)位。他們有91%的適合度。
他在校園的雕塑花園遇見了她。從那里他們走到一個大學(xué)壽司會場,他立刻感覺到了來電了!他們談?wù)摿藭⑺囆g(shù)、音樂,當(dāng)她承認(rèn)她在給他發(fā)消息之前對她的個人資料做了一些小改動后,他給她講述了關(guān)于他黑進(jìn)愛情網(wǎng)站的整個經(jīng)過。
“我認(rèn)為這樣做有點(diǎn)腹黑和憤世嫉俗,”她說,“但我喜歡。”
這是第一次約會,第二次緊隨其后,然后是第三次約會。兩周后,他們都暫停了他們的OkCupid帳戶。
我認(rèn)為我所做的只是每個人在站點(diǎn)上所做事情的一種略微算法化,大規(guī)模且基于機(jī)器學(xué)習(xí)的版本。” McKinlay說。每個人都試圖創(chuàng)建一個最佳的配置文件,他只是有數(shù)據(jù)來設(shè)計一個。
這是他們第一次約會的一年后,McKinlay和Tien Wang在韋斯特伍德壽司吧臺和一位記者見面,他們的已經(jīng)正式確定關(guān)系了。McKinlay獲得了博士學(xué)位,他正在教數(shù)學(xué),目前正在攻讀音樂研究生學(xué)位。Tien Wang被卡塔爾錄取并獲得為期一年的藝術(shù)獎學(xué)金。她在加州和McKinlay見面。他們一直在Skype上保持聯(lián)系。
根據(jù)記者的要求,McKinlay帶來了他的實(shí)驗(yàn)筆記本。 Tien Wang之前沒見過它。這是McKinlay緊密筆跡中的公式和方程式的頁面,以一個整齊排列的女性名單和約會清單結(jié)尾,其中含有一些簡短的注釋。Tien Wang掃讀了一遍,覺得一些亮點(diǎn)有點(diǎn)可笑。 她注意到,8月24日,他在同一天帶了兩個女人到同一個海灘。她說: “太可怕了。”
對Tien Wang來說,McKinlay的OkCupid黑客歷程是一個有趣的故事。但所有的數(shù)學(xué)和編碼只是他們故事的序幕。見面后,戀愛關(guān)系才真正被黑客入侵。 “人們比他們的個人資料要復(fù)雜得多,”她說,“所以我們遇到的方式有點(diǎn)膚淺,但我們之間發(fā)生的一切都不是膚淺的,它是通過彼此的努力培養(yǎng)出來的。”
“這不是說,我們匹配因此我們關(guān)系很好,” McKinlay表示贊同, “這只是一種將我們放在同一個空間的機(jī)制,我能夠使用OkCupid找人。”
Tien Wang對此有點(diǎn)慍怒:“你沒找到我,我找到了你。”她摸著他的手肘說道。McKinlay停下來思考,然后承認(rèn)她是對的。
一周之后,Tien Wang又回到了卡塔爾,這對夫婦每天都會撥打一個Skype電話。當(dāng)McKinlay拿出鉆石戒指并將其舉到網(wǎng)絡(luò)攝像頭前像她求婚時,Tien Wang說 “我愿意”。
他們結(jié)婚時間并不完全確定,McKinlay說需要進(jìn)一步研究以確定最佳婚禮日。
相關(guān)報道:https://www.wired.com/2014/01/how-to-hack-okcupid/
【本文是51CTO專欄機(jī)構(gòu)大數(shù)據(jù)文摘的原創(chuàng)譯文,微信公眾號“大數(shù)據(jù)文摘( id: BigDataDigest)”】