社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

只需五步!哈佛学霸教你用Python分析相亲网站数据,在两万异性中找到真爱

CDA数据分析师 • 6 年前 • 498 次点击  

▲ 点击蓝字关注我们

大数据文摘出品

来源:Wired

编译:啤酒泡泡、张大笔茹、张睿毅、牛婉杨


想脱单?那还不容易!


如果身在美国,就像其余四千万单身男人一样,注册一下Match.com, J-Date和OkCupid等相亲网站,坐等真爱上门不就可以了。


但是相信大多数人和McKinlay一样,尽管向OkCupid算法推荐匹配的女性发送了许多暧昧私信,但绝大多数都石沉大海了。


转折出现在2012年6月的一个早上,这个只进行过6次线下约会的男人正在电脑上编译机器代码,另一个窗口显示着他孤零零的交友头像,他突然顿悟:他一直在使用错误的方法寻找爱情。


为了不辜负自己在应用数学领域取得的成绩,他决定,在OkCupid上爬取每一条相关信息,利用关键的K-Modes的改良贝尔实验室算法找出数据规律,缩小范围,然后一击命中。


换句话说,这是一次数学家独创的完美约会经验贴,还不快来看看!


第一步:分析失败原因,知己知彼


OkCupid是哈佛大学的数学系学生于2004年创立的约会网站,最初这个网站吸引人们注意力的是它基于计算方法的配对模式。会员会回答很多多项选择问题,这些问题覆盖面很广,包括政治、宗教、亲情、性、以及智能手机等。



数学家Chris McKinlay


通常,系统会从上千道问题的题库里选出350道问题—— “以下哪种情形最有可能让你去看电影?”或是“宗教/上帝在你的生活中有多重要?


对于每一道问题,用户会选择一个答案,以说明自己伴侣的哪一个回答是他可以接受的,并通过给问题评分来表明问题对自己的重要性(5分制,从无关紧要到必须回答)。OkCupid的匹配引擎会利用这些数据来计算男女之间的合适程度。越接近100%,所谓数学意义上的灵魂伴侣就越匹配。


McKinlay从数学上分析了自己一直以来的失败原因。


OkCupid的算法只会使用双方都愿意回答的问题去计算,而McKinlay选择的问题有些随机,并不主流。当他查看与自己匹配的人时,匹配度超过90%的女人不到100个。要知道,洛杉矶有两百万女性(大约八万女性在使用OkCupid)。如果把匹配度比作可见度,那McKinlay可以说就是个看不见的幽灵。


他意识到他应该去提高匹配的人数。如果McKinlay通过统计取样确定哪些问题是他喜欢类型的女人愿意回答的,那么他便可以诚实地回答这些问题而忽略其他问题,以此来创建一个全新的用户。利用这个办法,他可以匹配到在洛杉矶的每一个可能与他配对的女人,而不会匹配到不合适的人。



第二步:借助Python,求助好友,疯狂收集数据


Chris McKinlay利用Python脚本浏览了上百道OkCupid的问卷题目,然后把女性用户分为七类,每一类都会贴上独特的标签,例如“多才多艺的”和“细心体贴的”等等。


即便作为一个数学家,McKinlay也是个不同寻常的人。他小时候在波士顿郊区长大,2001年他从Middlebury学院毕业并获得汉语言学位。同年8月份,他在纽约世贸中心北塔91层的一家公司里找了一份兼职工作,工作内容是将中文翻译成英文。五周后的一天,世贸大厦倒塌了。(那天,下午两点前McKinlay都没来公司。当第一架飞机于早上8点46分撞上大厦的时候,他正在睡觉。


“自从那件事后,我问自己,我究竟想做什么”他说。他的一个在哥伦比亚大学的朋友招聘他进入了一个由麻省理工职业21点团队衍生出的一个团队,这之后的几年里,他便往返于纽约和拉斯维加斯,他的工作是数牌,一年能挣六万美金。


这段经历点燃了他对应用数学的兴趣,最终促使他在这个领域取得了硕士和博士学位。“他们能够在很多不同的情景下使用数学知识,”他说,“他们会见到一些新的游戏,比如‘三张牌的牌九扑克’,然后回家写点代码,接着就能找到策略去打败它。


现在,他想用同样的方式去寻找爱情。首先,他需要数据。就在他用旁边的窗口进行论文写作的时候,他建了12个假的OkCupid账户并写好了Python脚本去管理这些账户。这个脚本会搜索他的目标群体(25到45岁的异性恋或双性恋的女人),访问她们的主页,然后爬取她们账户上每一条有用的信息:种族、身高、是否吸烟、星座—— “这些我全都要”他说。



为了找到心仪的另一半,他还做了一些额外调查。OkCupid可以让用户看到其他人的回答,但只能看到那些他们自己已经回答过的问题。 于是McKinlay设置了自己的机器人程序,以简单地随机回答每个问题,他并没有使用虚拟的个人资料吸引任何女性,因此答案并不重要,主要他要将这些女性的答案收集到了数据库中。


McKinlay满意地看着他程序一路狂奔。 然后,在收集了大约一千个档案后,他遇到了第一个障碍。OkCupid有一个短平快的系统来防止这种数据收集,他的程序一个接一个地被禁。


因此他必须把自己的程序训练的更像真人一些。


他求助他的神经科学家朋友Sam Torrisi,最近刚教过McKinlay音乐理论以换取高级数学课程。Torrisi也注册了OkCupid,他同意在他的计算机上安装间谍软件来监控该网站的使用。根据手中的数据,McKinlay通过编程模拟Torrisi的点击率和打字速度。他从家里带来了第二台电脑并将其插入数学系的宽带线路,以便可以24小时不间断运行。


三周后,他已经收集了来自全国各地20000名女性的600万个问题和答案。


第三步:将20000名女性分为7类,找出最适合自己的


按照McKinlay的工作计划,他需要从调查数据中找到一个规律,即需要根据相似性粗略地对女性进行分组。这个问题在他编写一个名为K-Modes的改良贝尔实验室算法时取得了进展。


K-Modes算法1998年首次用于分析患病的大豆作物。


他通过算法发现了一个自然的分割点,根据问题和答案,20,000名女性被分为成七个统计学组。 “我太高兴了,”他说,“那是六月份令我最兴奋的事情了。


他重新设置条件来收集另一个样本库:在过去一个月内登录OkCupid的来自洛杉矶和旧金山的5000名女性。通过K-Modes的另一次分组确认他们以类似的方式聚集并确保统计抽样有效。


现在只需要决定哪个类群最适合他了,在抽查了每个类群的一些档案后,发现一个类群太年轻,两个太老,另一个太“基督”了。于是他徘徊在一个二十五岁左右的女性主导的类群中,工作类型比较独立,像是音乐家和艺术家。这简直是黄金单身群!


就像是大海捞针,他找到了他的针,也就在这个类群的某个地方,他找到了真爱。


一个相邻的类群看起来也引起了McKinlay的注意:年龄稍微大一些,从事专业的创造性工作,如编辑和设计师。他决定将两个类群都设定为自己的目标!于是设置了两个配置文件,A、B组各优化一个。


第四步:真诚填写相关问题,找出灵魂伴侣


他对这两个类群进行了文本挖掘以了解她们感兴趣的内容:教学是一个热门话题,因此他撰写了一篇强调了他作为数学教授工作的文章。


更重要的是回答问题,于是他挑选了两个类群中最受欢迎的500个问题并决定诚实地填写答案,他不想在计算机生成的谎言的基础上建立未来的恋爱关系。但是他会使用一种称为自适应提升的机器学习算法来得出最佳权重,从而让计算机确定分配每个问题的重要性。



有了这个后他发表了两个照片,一个是攀岩的照片,另一个是在音乐演出中弹吉他。


“无论未来的计划如何,你现在对什么更感兴趣?性还是爱?” 这个问题的答案很明显是爱。但对于年轻的A群,他尊重计算机将问题评为“非常重要” 的结果。对于B群集,它则是“必须回答”的问题。


当回答完最后一个问题时,他按照匹配百分比对洛杉矶的女性进行了OkCupid搜索。从头开始:第一页匹配率全是99%女性。向下滚动......然后......向下滚动……,来自洛杉矶各地的一万名女性迎面而来。


离被关注还差一步! OkCupid会员在有人查看他们的网页时会收到通知,因此他写了一个新程序来访问查看他主页的女性的主页,并按年龄循环:周一有1000名41岁的女性,周二有1000名40岁的女性。两周后,轮到了27岁的女性。女性会回访他的个人资料,每天约400名左右。然后,私信开始滚滚而来。


“直到现在我还没有遇到过如此匹配的人,而且我发现你的个人资料很有趣,”一位女士写道,“对于一个擅长数字的粗犷男人......我觉得我想认识你。


“嘿,你的个人资料很棒,我想认识你,”另一位写道,“我认为我们有很多共同之处,也许不是数学,但肯定还有很多!


“你真的会翻译中文吗?” 还有人问道,“我上了一些课,但学的并不好。


至此,数学部分已经完成。接下来,他需要离开他的小隔间,进入实际演练阶段,他要去真正的约会!


第五步:走出小隔间,来一场真正的约会


6月30日, McKinlay开着他的尼桑穿越城镇来到加州大学洛杉矶分校的健身房,开始他的约会实践。Sheila是一位来自“A类群”的年轻的网页设计师。他们在Echo Park的一家咖啡馆吃了午饭。 “太不可思议了,这简直像一场学术活动一样。


与Sheila约会结束后,双方都觉得不来电。第二天,McKinlay进行了第二次约会,一个来自 “B类群”的博客编辑。他们计划在Echo Park Lake周围散步,却发现正在施工。女方一直在读普鲁斯特并对生活感到失望。 “这有点令人沮丧,”他说。


第三天的约会也来自“B类群”。他在韩国城的一家酒吧遇到Alison。 她是一名实习编剧,肩膀上还纹了斐波那契螺旋。McKinlay喝了很多韩国啤酒,第二天带着痛苦的宿醉在他的小隔间醒来。他后来在OkCupid上私信她表示想继续约会,但她没回。


虽然他被拒绝了,但每天仍然收到20条消息。实践约会显然与计算机配置文件约会是完全不同的。他开始忽略一些主页没有内容的人的消息,只回应那些有幽默感或在首页展示一些有趣的东西的人。以前他作为主动方,会交换三到五条消息来获得一个约会日期。现在就只发一个回复。 “你看起来很酷。想见面么?


20个约会之后,他总结了一些潜在的规律。在较年轻的群体中,女性大多数有两个或更多的纹身,而且住在洛杉矶的东边。另一组中,她们疯狂的喜欢中型犬。


早期的约会他会经过精心策划。但当工作越来越忙时,就开始在午餐或咖啡时间偶尔参加休闲聚会,而且经常一天之内约两场。他制定了一套个人规则来完成“马拉松爱情”搜索:不再约喝酒,如果不来电就赶快结束不要拖拉,不约音乐会或电影。 “约会中你们需要关注的是彼此而不是别的什么东西,不然效率会很低。


经过从他的两个档案中同等挑选约会的一个月后,他发现他耗费了太多时间在纹身群中接触东边的女性。他删除了他的A组简介。他的效率虽然提高了,但结果是一样的。随着夏天即将结束,他已经有过超过55次约会,每日都尽职地在实验笔记本上记录。只有三个产生了第二次约会,只有一个进行了第三次。


大多数不成功的约会者都面临着自尊问题。对于McKinlay来说其实更糟糕。他不得不检查他的计算。


后来一个来自28岁的艺术家Christine Tien Wang发来了消息。McKinlay之前在加州大学洛杉矶分校附近搜索到她,6英尺高蓝眼睛的人,正在那里修她的美术硕士学位。他们有91%的适合度。


他在校园的雕塑花园遇见了她。从那里他们走到一个大学寿司会场,他立刻感觉到了来电了!他们谈论了书籍、艺术、音乐,当她承认她在给他发消息之前对她的个人资料做了一些小改动后,他给她讲述了关于他黑进爱情网站的整个经过。


“我认为这样做有点腹黑和愤世嫉俗,”她说,“但我喜欢。


这是第一次约会,第二次紧随其后,然后是第三次约会。两周后,他们都暂停了他们的OkCupid帐户。


我认为我所做的只是每个人在站点上所做事情的一种略微算法化,大规模且基于机器学习的版本。” McKinlay说。每个人都试图创建一个最佳的配置文件,他只是有数据来设计一个。


这是他们第一次约会的一年后,McKinlay和Tien Wang在韦斯特伍德寿司吧台和一位记者见面,他们的已经正式确定关系了。McKinlay获得了博士学位,他正在教数学,目前正在攻读音乐研究生学位。Tien Wang被卡塔尔录取并获得为期一年的艺术奖学金。她在加州和McKinlay见面。他们一直在Skype上保持联系。


根据记者的要求,McKinlay带来了他的实验笔记本。 Tien Wang之前没见过它。这是McKinlay紧密笔迹中的公式和方程式的页面,以一个整齐排列的女性名单和约会清单结尾,其中含有一些简短的注释。Tien Wang扫读了一遍,觉得一些亮点有点可笑。 她注意到,8月24日,他在同一天带了两个女人到同一个海滩。她说: “太可怕了。


对Tien Wang来说,McKinlay的OkCupid黑客历程是一个有趣的故事。但所有的数学和编码只是他们故事的序幕。见面后,恋爱关系才真正被黑客入侵。 “人们比他们的个人资料要复杂得多,”她说,“所以我们遇到的方式有点肤浅,但我们之间发生的一切都不是肤浅的,它是通过彼此的努力培养出来的。


“这不是说,我们匹配因此我们关系很好,” McKinlay表示赞同, “这只是一种将我们放在同一个空间的机制,我能够使用OkCupid找人。


Tien Wang对此有点愠怒:“你没找到我,我找到了你。”她摸着他的手肘说道。McKinlay停下来思考,然后承认她是对的。


一周之后,Tien Wang又回到了卡塔尔,这对夫妇每天都会拨打一个Skype电话。当McKinlay拿出钻石戒指并将其举到网络摄像头前像她求婚时,Tien Wang说 “我愿意”。


他们结婚时间并不完全确定,McKinlay说需要进一步研究以确定最佳婚礼日。


相关报道:

https://www.wired.com/2014/01/how-to-hack-okcupid/




📌CDA课程咨询

赵老师

微信号 : CDA11111111

联系电话:13381275813

长按二维码,添加好友咨询


⭐️为CDA数据分析师点亮星标⭐️



📚推荐阅读 READ MORE


 干货 | 如何用Python开启你的机器学习之路

 免费!10本必读的机器学习书籍(附下载)

 第十届CDA考试 LEVEL 1 优秀考生访谈:我是如何备考的

 第十届CDA考试Level 2优秀考生访谈:如何进一步提升职场数据技能

 5天破10亿的哪吒,为啥这么火,Python来分析



Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/44345
 
498 次点击