編者按:本文作者是滑鐵盧大學計算機科學專業17級的學生Bai Li,他在博客上寫了一篇用邏輯回歸預測找到女朋友的概率教程。論智君友情提示,本文意在分享項目思路,請勿輕易對號入座。
滑鐵盧大學是加拿大著名的理工科高校,是北美地區最優秀的大學之一,我們的數學、計算機科學和工程學科水平居世界前列。然而,這樣的學校都有一個明顯的特點:男多女少。更糟糕的是滑鐵盧大學是出了名的缺少社交活動,所以估計我也跟學校里眾多CS同學一樣,女朋友是找不到的,這輩子都找不到的。
有人覺得愛情是無法量化的,這種操作太抽象,女朋友什么的,還是順其自然吧。但是作為滑鐵盧大學的數據科學家,這一點我不敢茍同。計算機專業的男人絕不輕易認輸!沒有社交,用機器學習幫助完成找女票的事業還不行嗎?
下面我就來說說詳細的教程,都搬好板凳拿起小本本!
首先,我們要明確這個項目的問題是:滑鐵盧大學的男生想找到女朋友,都需要哪些特質?首先,大部分人都覺得工資高肯定更吸引妹子,另外身高或者身材更是加分項。我們想確定的是,哪些因素可以用預測進行量化,哪些僅僅是猜測而沒有數據支持。
我大概想了這么幾個特征:
約會(目標變量):有女朋友的男生,或者過去五年至少談了六個月戀愛的男生
是否是國際學生
專業是否為CS、SE或ECE
成績優異,并找到了牛X的實習
是否幽默健談
性格是否外向、愿意結交新朋友
是否自信
比我高(175+)
戴不戴眼鏡
經常去健身房或喜歡各項運動的人
注重穿衣打扮
長居加拿大或者在加拿大居住工作至少五年
是否為亞裔
你也許注意到其中一些特征太主觀了,比如怎么才能規定一個人“有趣”、“幽默”呢?在這個項目中,我將人們分成兩部分,用1標記其中一半,另外一半標為0。所以我根據自己對周圍人的觀察,確定他們找到女朋友的能力。
要說明的是,本文并不屬于客觀嚴謹的統計型研究,而是給大家提供一種思路。
為了收集數據,我把每個能想到的同學的信息都制成表格,用1或0代表“是”或“否”,最后共有70個同學信息。注意了,滑鐵盧大學的各位,過去兩年跟Bai Li說過話的男生,你們可能已經被用作訓練數據了哦。
分析過程
首先我們在目標變量Dating上對各種其他變量進行費舍爾精確檢驗,最終得到三種最重要的變量:
健身——愛健身愛運動的男生比其他男生有女朋友的概率大了兩倍(p-value=0.02)
眼鏡——不戴眼鏡的男生比戴眼鏡的男生有女朋友的概率多了70%(p-value=0.08)(睡前別玩手機了!眼保健操做起來啊各位!)
自信——有信心的男森最帥啦(p-value=0.09)
果然妹子們都喜歡身材好、有朝氣的男生。不過我有點吃驚戴眼鏡竟然這么重要?可能有些人會把戴眼鏡和nerd聯系起來吧,不過還真的有論文研究過這個問題,結果發現人們確實覺得眼鏡會讓魅力大打折扣。
有些變量也許可以預測成功約會的概率,但是由于樣本數量太少,結果不確定性很大:
國際學生比當地學生成功幾率大
亞洲男生比其他種族的男生優勢較小
其他因素不變的情況下,CS專業的男生似乎更受歡迎
剩下的類似身高、成績、穿衣打扮等因素跟能否找女朋友關系不大,就算你去Facebook總部工作,對不起,該單身還是單身。
下面是實驗的全部結果:
Variable: international
N(international)=10, N(~international)=60
p(dating|international)=0.60, p(dating|~international)=0.38
p-value=0.299
Variable: cs
N(cs)=56, N(~cs)=14
p(dating|cs)=0.45, p(dating|~cs)=0.29
p-value=0.368
Variable: career
N(career)=46, N(~career)=24
p(dating|career)=0.43, p(dating|~career)=0.38
p-value=0.799
Variable: interesting
N(interesting)=34, N(~interesting)=36
p(dating|interesting)=0.47, p(dating|~interesting)=0.36
p-value=0.467
Variable: social
N(social)=29, N(~social)=41
p(dating|social)=0.45, p(dating|~social)=0.39
p-value=0.806
Variable: confident
N(confident)=37, N(~confident)=33
p(dating|confident)=0.51, p(dating|~confident)=0.30
p-value=0.092
Variable: tall
N(tall)=26, N(~tall)=44
p(dating|tall)=0.46, p(dating|~tall)=0.39
p-value=0.619
Variable: glasses
N(glasses)=41, N(~glasses)=29
p(dating|glasses)=0.32, p(dating|~glasses)=0.55
p-value=0.084
Variable: gym
N(gym)=22, N(~gym)=48
p(dating|gym)=0.64, p(dating|~gym)=0.31
p-value=0.018
Variable: fashion
N(fashion)=17, N(~fashion)=53
p(dating|fashion)=0.41, p(dating|~fashion)=0.42
p-value=1.000
N(canada)=31, N(~canada)=39
p(dating|canada)=0.42, p(dating|~canada)=0.41
p-value=1.000
Variable: asian
N(asian)=59, N(~asian)=11
p(dating|asian)=0.37, p(dating|~asian)=0.64
p-value=0.181
接著,我們對比了各變量之間的關系,這可以幫助找出錯誤的模型假設。紅點表示正面聯系,藍色表示負面聯系。我們只顯示出了統計顯著性<0.1的關系,所以大部分變量的組合是空白的。
如圖所示{有女朋友,有自信,健身,不戴眼鏡}互相有關。
這里我再強調一下,我統計的信息都是身邊的同學,或者同學的同學,專業都是學CS的并不能代表整個滑鐵盧大學的學生。
所以任何模型在這個數據上訓練都會反映出同樣的偏差。未來我會收集更多數據改進模型。
用邏輯回歸預測戀愛概率
如何用算法預測找到女朋友的概率呢?讓我們搓搓手準備開始吧!
我訓練了一個邏輯回歸GLM,從各個解釋變量的角度預測找到女朋友的概率。利用R中的glmnet和caret包,我用彈性網絡正則化訓練了一個GLM。然后再用標準網格搜索進行超參數優化,用leave-one-out交叉驗證并且在每次迭代中對Kappa系數進行優化。
結果模型的ROC曲線上交叉驗證的AUC分數為0.673,也就是說,模型的預測還是有點準的,不過其中的不確定性因素仍然很多。最后,我還做了一個簡單計算器,大家有興趣可以玩玩。
小編測試了一下,全部選取了“弱勢因素”,這個結果可真悲傷
好了啥也不說了,我要去健身房舉鐵冷靜一下,再預約個近視手術了(手動再見)。
-
算法
+關注
關注
23文章
4630瀏覽量
93359 -
Facebook
+關注
關注
3文章
1429瀏覽量
55000 -
機器學習
+關注
關注
66文章
8439瀏覽量
133087
原文標題:用機器學習預測找到女朋友的概率,制勝秘訣有三點
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論