明天又到了一年一度的520,面對大街上,朋友圈裡情侶們的各色秀恩愛,單身程式設計師又要受到一萬點傷害。美國交友**okcupid的創始人之一克里斯蒂安·魯德爾(christian rudder)研究出了一種演算法將兩個人聯絡在一起,並基於一系列問題來檢驗他們的速配指數。他們的答案越匹配,他們的速配指數越高。難道我注定要要一輩子散發著單身狗的清香?
究竟怎麼樣才能遇到我未來的另一半呢?
所幸的是,在今天這個時代,我們擁有網際網路和大資料,它們給很多事情提供了便利,我們可以與很多人接觸到——甚至是那些在幾分鐘前你想都不敢想的人。
當然,這其中也包括戀愛交友。沒錯,大資料和演算法(algorithm)可以幫你更快地找到理想伴侶。
以下是他在ted-ed上的分享內容:
【ted-ed】線上約會背後的數學原理(inside okcupid: the math of online dating - christian rudder)
本次分享主要講解了資料收集、吸引力量化、演算法設計等okcupid在對線上使用者進行速配時使用的數學原理。
如何得到你與他/她的速配指數
你可能會問,我們如何能用數學來運算人與之間的吸引力呢?
首先,需要收集資料。
okcupid通過讓使用者回答問題來收集資料。這些問題可以從像電影或歌曲品味,「你很邋遢嗎」這樣的小問題,或者「你想要什麼樣的孩子」一類的大問題。
很多人認為這些問題就是根據兩個人喜好相互配對,人們有截然不同的回答時確實是這樣。當兩個人在回答問題上有分歧時,最好的方法就是收集資料,將答案與理想伴侶的答案進行比較,並為這些資料新增更多維度(比如,重要程度)。
例如,在你的生活中,特定問題扮演什麼角色?他們的重要程度是多少?為了計算速配指數,計算機必須找到一種方法來比較每個問題的答案,每個問題的理想合作夥伴的答案,以及與別人的答案的重要性水平。
這一方法是使用加權比例尺來衡量每一級別的重要性,如下圖所示:
毫不相關: 0分;不那麼重要:1分;有點重要:10分;非常重要:50分;必須如此:250分
那麼,計算機怎麼運算出來速配指數的?
假設你是a,而電腦想要和你配對的人是b。那麼整個問題就會變成:
b的答案有多符合你的期待?
答案會是乙個分數。分母是你認為所有問題的重要性的總分數。分子是b的答案的總分數。某個人的得分取決於問題的回應是否符合期待。分母的多少則取決於你對問題的重視程度。
對每個問題都這樣做,最後分數疊加起來變成百分數。最後乙個百分比就是你的滿意度——根據你的答案來看,你和b在一起有多開心。然後,再來計算b的滿意度。
okcupid使用的演算法是將人a的滿意度乘以b的滿意度再開根號。最後得出乙個數學表示式,也就是你與b在一起的幸福指數。
速配指數背後的演算法優化
問題來了,為什麼要用如此複雜演算法呢?為什麼不直接取平均數?
事實上,這叫做幾何平均數。
表示一組數字的中心趨勢或典型值的一種均值或平均值。(rudder, 2013) 我們的資料本身取值範圍非常廣,屬性差異很大。諸如,你的文學品味和你未來的計畫,甚至「你是否相信上帝」。幾何平均數在這種情況是最理想的解決方案。(最重要的是,即使是乙個非常小的資料集,該演算法仍然有用)。
邊際誤差 vs 可能速配度
再加上對邊際誤差的修正,也就是在調查結果中的隨機抽樣的統計學誤差,使我們的結果更加精確。它總是顯示你可能的最低速配度,因為他們希望a和b回答更多的問題,來增加可信度。
例如,如果a和b只回答了兩個相同的問題,那麼樣本量的誤差範圍是50%。這意味著最高速配度是50%。下面我列出了一張**,顯示兩個人必須回答多少問題,才能得到0.01的邊際誤差,或者具有99.99%的速配度。
速配指數高低有什麼影響?
那麼兩個人的速配指數高低到底有什麼用呢?
okcupid的研究人員對此也很感興趣。研究發現,速配指數實際上會影響傳送訊息的可能性,和把傳送訊息變成彼此聊天回話的概率。
例如,如果乙個人被告知他與b只有30%的速配指數,那麼有14.2%的機率他會傳送訊息,大約有10%的機會這條訊息會轉化為四條或多條訊息的對話。然而,如果乙個人被告知兩人的速配指數是90%,那麼傳送訊息的機率會上公升到16.9%,單個訊息變成四條或更多的對話的概率是17%。
傳送資訊的機率 vs 速配指數
形成對話的概率
儘管,人們對將演算法引入到戀愛生活中還有很多擔憂。比如說,演算法過於依賴於使用者的回答的誠實度和自我評估。也不是每個人都相信,僅僅通過數學公式就能幫他們找到理想伴侶。
但我相信用資料分析來進行交友的未來是非常廣闊和令人興奮的。如果你現在還沒有戀人,非常希望在下乙個情人節來臨之前找到你的mr.right or ms.right,利用資料分析和數學演算法應該是會是個不錯的開始。
程式設計師表白程式
作為程式設計師,我們時常被外界誤認為很悶 不浪漫 沒創意 等等這一類人,這讓我們實在有些感傷啊,我得為程式設計師吶喊一聲 我們也能可以歡快 浪漫 有創意 朋友,你向女生表白過嗎?這個問題有點兒羞澀,但是我今兒叫你一招 用我們程式設計師的方式表白 呵呵,說到這裡,你可能已經猜到 該不是程式設計序吧?我...
程式設計師愛情表白
我能抽象出整個世界 但是我不能抽象出你 因為你在我心中是那麼的具體 所以我的世界並不完整 我可以過載甚至覆蓋這個世界裡的任何一種方法 但是我卻不能過載對你的思念 也許命中註定了 你在我的世界裡永遠的烙上了靜態的屬性 而我不慎呼叫了愛你這個方法 當我義無返顧的把自己作為引數傳進這個方法時 我才發現愛上...
程式設計師的愛情表白 )
我能抽象出整個世界 但是我不能抽象出你 因為你在我心中是那麼的具體 所以我的世界並不完整 我可以過載甚至覆蓋這個世界裡的任何一種方法 但是我卻不能過載對你的思念 也許命中註定了 你在我的世界裡永遠的烙上了靜態的屬性 而我不慎呼叫了愛你這個方法 當我義無返顧的把自己作為引數傳進這個方法時 我才發現愛上...