程序员找不到对象是伪命题?他用大数据找对象,现在婚都结了
作者 | Kevin Poulsen
譯者 | 核子可樂
來源 | AI 前線公眾號
這可真的是“世上無難事,只怕有心人”啊!
Chris McKinlay 窩在加州大學洛杉磯分校數學系樓上的小隔間里,頭頂的燈泡和顯示器照亮了他年輕的臉龐。凌晨三點,這是他使用校內超級計算機的最佳時間。趁老師同學們已經沉沉睡去,他得盡快趕完自己的博士論文(內容為大規模數據處理與并行數值方法)。在計算機全速運轉的同時,他打開了另一個窗口,打算看看自己的 OkCupid 收件箱。
McKinlay 身材瘦削、高高的個子,頭發總是凌亂不堪。與 4 千萬美國用戶一樣,他也在通過 Match.com、J-Date 以及 e-Harmony 等網站尋找自己的愛人。自九個月前與女朋友分手之后,他一直在尋覓新的人生伴侶,他向 OkCupid 算法提供的所謂潛在匹配女性用戶發出了數十條可愛的介紹信息,不過大多被對方直接忽視。當然,他的努力也并非一無所獲——他總共進行了六次約會。
2012 年 6 月的這個清晨,他正在編譯器窗口中處理著機器碼。但在無意中瞥向閑置在另一個窗口中的約會資料時,他突然意識到自己實際上犯了個大錯誤。他一直想像其他普通用戶一樣采取常規的匹配方式 ; 但答案正相反,他應該像個數學家一樣來場“真正”的約會。
0 為什么不通過大數據尋找約會對象?
OkCupid 是由哈佛大學數學系于 2004 年建立的,其出色的匹配計算方法引起了約會平臺的關注。會員們需要在這里回答大量關于政治、宗教、家庭、愛情、兩性乃至智能手機偏好等的多選調查問題。
平均而言,受訪者們會從龐大的題庫當中抽到 350 個問題,例如“您最想和以下哪一位共同去看場電影?”或者“在您的生活中,宗教 / 上帝到底有多重要?”對于每位用戶,系統都會記錄下其答案,并用以判斷哪些配對方適合其偏好。對于每個問題,系統會從“無關”到“必須”劃分出五個等級以評估問題的重要程度。OkCupid 的匹配引擎會利用該數據計算出一對男女的兼容性水平。這一水平越接近百分之百,則證明雙方越能夠彼此契合。
不過從數學角度來看,McKinlay 與洛杉磯女性們的兼容性非常糟糕。OkCupid 的算法僅使用兩種潛在匹配結果判斷問題結果,而 McKinlay 在這些隨機問題中給出的答案被系統判定為“此人不受歡迎。”在瀏覽自己的匹配結果時,只有不到 100 名女性與其擁有 90% 以上的兼容性。要知道,洛杉磯市居住有 200 萬女性(OkCupid 中包含約 8 萬名女性用戶的信息)。在這個兼容性等于知名度的網站上,McKinlay 實際上毫無存在感。
他意識到自己必須想辦法提高這個數字。通過統計抽樣,McKinlay 將能夠確定哪些問題決定著他能否找到自己青睞的女性。以此為基礎,他將能夠整理出一份新的個人資料,誠實地回答這些核心問題并忽略其余問題。這樣,他將保證自己匹配到洛杉磯區域內每一位可能適合他的女性,同時排除掉其他不合適的對象。
Chris McKinlay 利用 Python 腳本瀏覽了數百個 OkCupid 調查問題。在此之后,他將女性約會者劃分為七個群組,例如“多樣”與“專一”,每個群體都擁有一系列不同特征。
即使在數學家群體當中,McKinlay 也絕對稱得上一個異類。他出生于波士頓郊區,2001 年畢業于米德爾伯里學院并獲得中文學位。同年 8 月,他在紐約找到一份兼職工作,負責在世貿中心北棟 91 樓的辦公室里處理漢譯英任務。貿易中心在五周后因飛機撞擊而坍塌。(McKinlay 當天在辦公室待到凌晨 2 點,而上午 8:46 飛機襲來時,他正在住處休息。)經歷了這場生死劇變,“我開始問自己,我到底想做些什么。”這時,哥倫比亞大學的一位朋友將他介紹到了麻省理工學院著名的二十一點撲克算法團隊當中。接下來的幾年中,他奔波于紐約與拉斯維加斯之間,憑借著計算撲克牌面的出現幾率賺取到高達 6 萬美元的年收入。
這段經歷激起了他對應用數學的濃厚興趣,并最終促使他拿下了碩士學位以及博士學位。他回憶道,“他們能夠在多種不同的應用場景下使用數學知識。他們發現了很多能夠用數學方法解決的游戲,例如撲克牌九。他們會寫下代碼,并提出贏面最大的游戲策略。”
現在,他打算在追尋愛情方面采取同樣的思路。當然,要邁出第一步,他首先得收集數據。雖然博士論文仍在進行,但他還是抽出時間注冊了九個 OkCupid 帳戶,并編寫一套 Python 腳本用于管理這些帳戶。這套腳本會搜索他的目標人群(年齡在 25 歲至 45 歲之間的異性戀與雙性戀女性),訪問她們的頁面,并抓取其個人資料以獲取每一條可用信息,包括種族、身高、是否吸煙、是否相信占卜等等。
為了找到調查答案,他還得做點額外的探索。OkCupid 允許用戶查看其他人的回復,但前提是用戶本身必須也參與問題的回答。McKinlay 設置腳本以隨機回答各個問題——由于他并沒有填寫任何個人資料,因此具體答案的選擇并不重要——進而將女性們的答案添加到數據庫當中。
McKinlay 滿意地看著自己的這套腳本全速運轉。而后,在收集到約 1000 份資料后,他遇到了第一個難題。OkCupid 當中包含一套系統用以防止這種數據收集行為:它能夠輕松發現速度過快的用戶操作狀況。在此之后,他的腳本機器人被一個接一個封禁了。
1 他必須把腳本訓練得更像人類
他轉而求助自己的好朋友 Sam Torrisi,他是一位神經科學家,最近正在教授 McKinlay 音樂理論。作為回報,McKinlay 則教他高數課程。Torrisi 也在使用 OkCupid,他同意在自己的計算機上安裝間諜軟件以監控他對該網站的使用方法。隨著數據的快速積累,McKinlay 通過編程讓自己的機器人模擬 Torrisi 的點擊與打字速度。他從家里又帶來一臺電腦,并將其接入數學系的寬帶線路,從而保證這臺設備能夠 24 小時全天運行。
三周之后,他收集到全國 2 萬名女性用戶關于 600 萬個問題的答案。但 McKinlay 的論文也因此受到了影響,緩慢的進度導致其被降級為編外項目。如今,他基本睡在自己的小隔間里。在這座昏暗的米色小“牢房”里,他躺在一張薄薄的臨時床墊上度過了一個又一個夜晚。
McKinlay 的工作計劃非常明確,他需要通過數據調查發現一種模式,即根據相似性對女性用戶進行粗略分組。在他編寫出一種名為 K-Modes 的改良性貝爾實驗室算法之后,這項工作取得了突破性進展。這種算法首次應用于 1998 年,負責對患病的大豆作物進行分析。其利用分類數據根據作物顏色判斷其是否受到感染。通過微調,他得以調整分析結果的稠度,能夠將結果稀釋成光滑的色塊或者進一步凝結成單一顆粒。
經過對數據的反復分析,他最終獲得了理想的成果——根據問題與答案,他將 2 萬名女性總結成七個統計層面的星團狀集合體。
“我真的欣喜若狂,六個月以來的努力終于有了回報。”
他又重新調整了機器人以收集另一份樣本:洛杉磯與舊金山區域內曾在過去一個月內登錄過 OkCupid 的 5000 名女性用戶。通過 K-Modes 的再次發力,他再次得出一份匯集結果。通過抽樣驗證,他再次證明自己的統計結論準確無誤。
現在,他只需要判斷哪個集群最適合自己即可。他查看了很多用戶的個人資料,其中一個群體平均年齡太小、另外兩個群體平均年齡太大,另有一個群體宗教傾向太嚴重。最終,他選定了一個由 25 歲左右女性占主體的集群。她們看起來比較像是自由職業者、音樂家與藝術家。這就是 McKinlay 的黃金群體,他相信自己的真愛就隱藏在其中。
實際上,另一個與之相近的群體看起來也很酷,其中的女性年齡稍大,且從事專業的創造性工作——例如編輯與設計師。他決定把兩個集群都定為目標。為此,他整理出兩份個人資料,分別針對 A 組與 B 組進行了內容優化。
他用文本挖掘了這兩個“星團”,以了解她們最感興趣的內容 ; 教學成為其中的一項熱點,因此他撰寫了一篇簡介文章,強調自己曾從事數學知識的教學工作。除此之外,他還挑選出兩個集群當中最受歡迎的 500 個問題,并誠實地填寫自己的答案——他不希望以謊言為基礎博取女性青睞,這會危及雙方的后續關系。但必須強調的是,他打算利用計算機弄清楚每個問題的重要程度,并利用自適應增強型機器學習算法提供最佳權重結論。
以此為基礎,他擁有了兩份個人資料 ; 其中一份配有他攀巖時的照片,另一份則配有他在演出中彈奏吉他的照片。OkCupid 中的一個問題提到,“無論未來的規劃如何,您現在對什么更感興趣?性還是愛情?”答案很明顯,當然是愛情更重要。但對于平均年齡較小的 A 組,他按照計算機的指導,將問題重要度評為“非常重要”; 但對 B 組,則將重要度評為“必須”。
在回答了所有問題并對其進行重要度排列之后,他開始按照匹配百分比分數在 OkCupid 中對洛杉磯的女性進行搜索。第一頁的女性擁有高達 99% 的匹配率。向下滾動……繼續滾動……再來,他最終看到洛杉磯區域內即有 1 萬名女性與他擁有超過 90% 的兼容水平。
當然,他還需要更進一步才能真正引起注意。OkCupid 會員在他人查看自己頁面時會收到通知,因此他編寫了一個新程序以訪問那些匹配度最高的頁面。周一,訪問 1000 位 41 歲女性 ; 周二,訪問 1000 位 40 歲女性 ; 兩周之后,當訪問對象年齡到達 27 歲時,重新返回 41 歲并繼續重復。
一位女性在頁面中寫道,“直到現在,我還沒有遇到過符合自己心意的對象。但我發現你的個人資料很有趣。看起來,你是個精通數字且性情粗獷的男性……我想我應該跟你打個招呼。”
另一位女性寫道,“你好——你的個人資料真的讓我非常吃驚,我想來打個招呼。我認為我們有很多共同點,雖然我不懂數學,但肯定也能聊得很開心。”
另一位女性用戶問道,“你真的能翻譯中文嗎?我也上過一堂課,但感覺學不明白。”
McKinlay 的數學搜索工作已經完成,接下來要做的,就是走出小隔間真正試試自己的研究成果。
2 搜索工作完成,得開始真正的約會了
6 月 30 日,McKinlay 在加州大學洛杉磯分校的健身房里洗了個澡,然后開車穿過市區。他的約會對象是 Sheila,一位充滿年輕藝術家氣質的網頁設計師。他們在 Echo Park 的一家咖啡廳吃過了午飯。McKinlay 回憶道,“這真是太嚇人了。整個過程更像是一次學術交流活動。”
約會結束時,兩個人都發現自己對對方并沒什么感覺。第二天,他又參加了另一場約會——對方是一位來自 B 組的博客編輯。他打算在 Echo Park 的湖邊散步,卻發現這里被封起來進行湖水疏通。對方抱怨稱自己一直在讀 Proust 的著作,并對自己的生活感到沮喪。McKinlay 最后得出結論,“我對這次約會同樣感到沮喪。”
第三次約會的對象同樣來自 B 組。他在韓國城的一家酒吧里遇到了 Alison。她是一位編劇系學生,肩上紋有一個斐波那契螺旋。McKinlay 喝了點韓國啤酒,第二天帶著宿醉從自己的小隔間里醒來。他在 OkCupid 上向 Alison 發送了后續消息,但她沒有回復。
雖然一再遭受拒絕,但他每天仍能收到大約 20 條消息。然而,極具吸引力的個人資料仍然無法挽救失敗的真實約會。他開始忽略那些平淡無奇的消息,而只回復比較幽默或者在個人資料中展示有趣內容的對象。一般來說,只需要三到五條信息,他就能敲定一場約會。但現在,他變得更為消極——只是簡單回復“你看起來很酷,要見個面嗎?”
到第 20 次約會時,他注意到了一些潛在的變數。在較為年輕的群體當中,女性往往擁有兩個或者更多紋身,且一般住在洛杉磯東區。而在較為年長的群體當中,女性們往往對中型犬表現出強烈的喜愛。
在早期約會當中,他會努力對過程進行精心策劃。然而,隨著項目強度的增加,他只能在午餐或喝咖啡時隨意安排約會,有時候甚至會一天趕赴兩場約會。他制定了一套個人規則來完成這場馬拉松式的愛情搜索。第一,他決定不再喝酒。此外,約會結束之后不再糾纏,也不安排音樂會或者電影。他表示,“那樣會分散注意力,使兩個人的精力無法集中在彼此身上。這樣非常沒有效率。”
3 愛情中的數據奧秘
McKinlay. 的代碼發現,女性群體實際上構成了具有統計學意義的整體。她們傾向于以類似的方式回答 OkCupid 上的調查問題。其中的“青澀”幫喜歡在網上約會新手,而“嫩草”幫的平均年齡更大也更樂于冒險。以下是各個群體針對四個最受歡迎的問題作出的回答。
在經過一個月的約會之后,他意識到自己在有紋身且居住在東區的女性身上浪費了太多精力。他刪除了自己的 A 組信息,提高了效率,但結果卻仍然一樣。隨著夏天的結束,他已經進行了超過 55 次約會,而且對每次約會都進行了認真記錄。然而遺憾的是,只有三位女性愿意與他進行第二次約會,只有一位愿意進行第三次約會。
大多數約會失敗的用戶都會感到自尊心受到傷害,而 McKinlay 的問題更糟糕——他甚至懷疑自己的計算結果出了問題。
這時,他收到了來自 28 歲藝術家兼監獄廢除活動者 Christine Tien Wang 的消息。McKinlay 在加州大學洛杉磯分校附近搜索身高 6 英尺的藍眼睛女孩,而她正在這里攻讀美術碩士學位。他們的兼容度為 91%。
他在學校的雕塑園區內和她碰面,并在壽司店一起用餐。他立刻有了感覺,他們開始談論書籍、藝術與音樂。她承認自己在發消息之前曾對自己的個人資料進行了調整,而他則將整個黑客故事和盤托出。
她的反應是,“哈哈,真有陰謀論和憤世嫉俗的感覺。我喜歡這個主意。”
雙方的第一次約會已經是 McKinlay 的第 88 次約會,但他們進展得很順利,接下來的約會陸續敲定。兩周之后,兩個人暫停了自己的 OkCupid 帳戶。
McKinlay 表示,“我認為我所做的跟每一位用戶并無不同,只不過引入了算法、規模化以及基于機器學習的具體方式。”每個人都希望自己的個人資料亮鮮亮麗,他只是利用數據資源實現了這個目標。
在雙方約會的一年之后,McKinlay 與 Tien Wang 在賣點斯特伍德壽司吧與我見面——這里也是他們第一次用餐的地方。McKinlay 如今已經拿下了博士學位,在教授數學的同時攻讀音樂研究生學位。Tien Wang 則拿到了藝術獎學金,遠赴卡塔爾留學。他們一直在 Skype 上保持聯系,而她已經多次來探訪 McKinlay。
在我的要求之下,McKinlay 帶來了他的實驗筆記本。Tien Wang 也看過這份筆記。McKinlay 在其中寫下了各種公式與方程式,結尾則是排列整齊的女性與日期清單,外加簡潔的注釋。Tien Wang 瞥了一眼,并笑稱這本筆記真的很蠢。她還注意到,8 月 24 日,McKinlay 曾經在一天之內帶著兩位女性前往同一處海灘。“這真是太可怕了。”
對于 Tien Wang 而言,McKinlay 的 OkCupid 破解之旅只是個有趣的故事。但所有的數學公式和代碼只是他們故事的序幕而已。事實上,在開始約會之后,真正的技術性工作才剛剛開始。她表示,“人們要比自己的個人資料復雜得多。所以,我們相遇的方式有點膚淺,但發生的一切卻并不膚淺。這是由大量準備工作所促成的美好結果。”
McKinlay 對此表示同意:“這絕不像「我們匹配度高,所以我們很合適」那么簡單。OkCupid 只是一種搭建對象的機制,接下來我們還是得靠自己。”
她對此表示不滿:“不是你找到我,是我找到了你。”她邊說邊撫摸他的手肘,而 McKinlay 思索了一陣,表示她說得沒錯。
一周之后,Tien Wang 返回了卡塔爾。在一次日常 Skype 通話當中,McKinlay 拿出一枚鉆戒擺在攝像頭前向她求婚——她開心地同意了。
但他們還沒有定下最終婚期——畢竟選擇婚禮日,也是需要進行一點科學研究的。
4 One More Thing…
你以為故事到這里就戛然而止了嗎?并不。
這篇文章最早發布到現在已經過去了幾個年頭,我們好奇后來的劇情發展,求婚成功之后呢?在搜索引擎上搜索 Chris McKinlay,最終找到了這位前光棍極客的推特,經過一番翻閱和搜索,看到了以下對話:
下面是男主角回答網友的提問:去年秋天結婚了,目前感覺相當好。
……
是不是被秀了一臉?你準備試試嗎?
今日薦文
點擊下方圖片即可閱讀
27 歲的 Linux 和 49 歲的 Linus
總結
以上是生活随笔為你收集整理的程序员找不到对象是伪命题?他用大数据找对象,现在婚都结了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT线程之 moveToThread()
- 下一篇: 隐藏Ubuntu 18.04 顶部通知栏