编者按:本文作者是滑铁卢大学计算机科学专业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文章
4587浏览量
92478 -
Facebook
+关注
关注
3文章
1429浏览量
54605 -
机器学习
+关注
关注
66文章
8344浏览量
132288
原文标题:用机器学习预测找到女朋友的概率,制胜秘诀有三点
文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论