Py学习  »  机器学习算法

用机器学习算法找到命中注定的TA

TFT小组 • 5 年前 • 627 次点击  


在知乎上有这样一个问题



听起来似乎有点不可思议

但仔细想想似乎很有可行性

... ...

emmmm也就是想想?

然而还真的有人

大数据机器学习

找到了命中注定的她!



故事发生在加州大学洛杉矶分校数学楼5层的一个阁楼里,显示器上闪烁着微弱的灯光。Chris McKinlay正在使用罗拉多州超算为他博士论文(大规模数据处理和并行数值方法 )做实践,而凌晨三点却是能压榨这个计算机资源的最佳时间,他打开了第二个窗口——OkCupid(美国在线约会网站的领头羊 )的收件箱。

McKinlay, 35岁,体型偏瘦,一头蓬乱头发的中年男子。在4000万通过Match.com、J-Date、e-Harmony这些网站在网络上寻找浪漫的美国中,他是非常不起眼的一个。自从去年分手以后,他已经在网上搜索了9个月,可惜毫无结果。他已经给几十个OkCupid网站推荐为潜在配偶的女性们发去了自我介绍信息,但大部分都被忽略了。同时他只去过为数不多的六次约会中的一次。

某天早上,电脑一个窗口显示着编译器正在处理的代码,而另一个显示着被遗弃的约会资料,他突然醒悟到,自己做错了。他一直把自己当做一名相亲对象来在网上寻找其他用户,这样做是不对的,他意识到自己应该像一个数学家一样去约会。

OkCupid的匹配引擎使用统计数据来计算一对夫妇在一起是否合适,得分越接近百分之一百,证明他们是一对越好的灵魂伴侣。

然而,在洛杉矶,McKinlay与女性的匹配度简直是糟糕透顶。当McKinlay 查看他匹配对象的时候,发现相互匹配额超过百分之九十女性不超过100个。要知道在洛杉矶这个城市大约有200万女性,而从McKinlay的匹配结果和影响来看,他几乎就是一个隐形人。

McKinlay意识到他必须提高这个数字,通过抽样统计,McKinlay可以确定哪些问题关系到他喜欢的那种女性,他可以针对这些问题建立新的“形象”,从而去匹配洛杉矶中所有适合他的女性,而忽视其他人。

Chris McKinlay使用Python脚本快速调取了大量OkCupid的调查问题,然后他将女性约会者分为七个维度,比如“Diverse” 、 “Mindful”,每个都有自己的特点。

之后,他建立了12个OkCupid账户,写了一个Python脚本管理它们,同时也没有忽略他的论文。程序脚本将会收集他的目标人群(年龄在25-45之间的异性恋以及双性恋女士),从这些女士的个人页面上搜集所有可能用到的数据:种族、身高、是否抽烟、星座等等。

为了得到这些数据,他不得不做一些额外的工作。OkCupid中只有你回答别人的问题,你才能看到别人的信息。McKinlay用‘机器人’回答一些简单的问题,他没有使用一些虚假的信息来欺骗这些女士,因为答案对他并不重要,他并不是想要吸引这些女生,他只是想把这些女生的回答收集到自己的数据库中。

三周后他已经收获了来自全国各地2万名女性的600万个问题。随着数据挖掘的深入,McKinlay完全将他的论文抛至一边,他本来就很少在公寓睡觉,现在基本上就完全放弃了,搬到了工作的地方,睡觉的时候在办公桌上铺上一层薄薄的床垫。

按照McKinlay的计划,他必须要在这些统计的数据中找到一种根据这些女生的相似性进行大致分组的方式。McKinlay在修改贝尔实验室一个名为K-Modes的算法时得到了灵感。这个算法第一次在1998年用于分析生病的豌豆谷物,它使用分类数据并且把数据整合堆积。通过微调,设备可以调节出结果的速度,得到自己想要的方式。

他调整刻度,找到了一个平衡点,这个点上20000个女人根据她们的问题和回答能够在统计上分为7个清晰分离的群。“我太高兴了”,他说,“这真是6月最好的一天。”

用这种方式,McKinlay又搜集了另外5000个女生的样本,她们都来自洛杉矶和旧金山,最近刚刚在OkCupid上注册。这些样本经过K-Modes的处理也大致分布在7个组里,McKinlay的统计样本奏效了。

现在McKinlay只需要确定哪个组的女生更适合自己就行了。他大概看了一下这些女生的简介,有一组女生年龄太小,两组年龄太大,另外一组是虔诚的基督徒。他发现有一组女生大多在20几岁,多数看起来很独立或是音乐家和艺术家。McKinlay认为自己或许能在这组中找到真爱。

实际上,还有一组女生看起来也很不错,她们年龄稍大,从事编辑和设计等有创造性的工作。McKinlay决定在这两组女生中寻找目标。他建立了两个个人档案,一个用于A组,一个用于B组。

McKinlay研究后发现,两组女生都对教学这个话题很感兴趣,所以他将自己定位成一个数学教授。他将这两个集群中最受欢迎的500个问题进行收集然后填写他自己最真实的答案。因为他并不想让自己的未来建立在计算机自动生成的谎言之上。但是他会让电脑分析出每个问题的重要性,通过机器学习算法,提供一个最佳的权重。

这样他做了两份个人简介,一份附上了他攀岩时的照片,另一份上是他在音乐演出时弹吉他的照片。“不管未来的计划是什么,关键是你现在对什么感兴趣?是性还是爱?”答案显然是:爱。但对于年轻的A群体,他根据电脑的指示,他认为是“very important”。对于B群体,他认为是“mandatory”。

当回答完最后一个问题并排名后,他在OkCupid中搜索洛杉矶的女性并按照匹配率排序。在首页:一整页的女性和他的匹配率达到了99%。他继续向下浏览......浏览完整个洛杉矶的1万多名女性,却一点进展也没有。

他需要更进一步的努力来获取人气。当有人访问OkCupid会员的网页时,会员会得到通知,因此他写了一段新程序来访问和他匹配度很高的页面,按照年龄循环:星期一访问一千个41岁女性,然后在星期二访问二千名40岁女性,两周后到访问完27岁女性后。有时一天会有400个女性回访他的简历。接着就有了大量的留言。

McKinlay搜索的数据部分完成了,那就只剩下一件事了,他得走出他的小卧室出去约会。

一开始的结果并不会太好。被拒绝很痛苦,但他仍然能一天收到20条留言。约会和在电脑上发布简介完全不同。他可以忽略不满意的留言,回复那些表现出幽默感或者简历中存在有意思事的人。想当初他追求别人的时候,他得用三条到五条留言才能换来一次约会。现在他只回复一条:“你的条件不错,能见个面吗?”

到了第20个约会,他注意到一些潜在的因素出现了。在年轻的群体中,女性总有两个以上的纹身而且住在洛杉矶的东边。其他的则不成比例地养着他们钟爱的中型犬。

之后,McKinlay发现统计学上可识别群体的女性倾向于以相似的方式回答OkCupid调查问题。这个群体被称为Greens,是网上交友新手;其他的被称为Samanthas,更加成熟而且乐于冒险。以下是各个群体是如何回答以下最流行的四个问题的回答。

经过了一个月约会,他断定他和城市东部有纹身的女性群体约会在高速公路上花去的时间太多。他删除A类简历。效率提高了,但结果还是一样。夏天快要结束了,他至少有了55次约会,每一次约会都认真地记在一个实验室笔记本中。只有三个发展到第二次约会;只有一个发展到第三次约会。

大多数约会失败的人都会面临自尊心问题。McKinlay的情况更糟糕。他不得不怀疑他的计算。

这时Christine Tien Wang的留言到了,她是一个28岁的艺术家和监狱废除活动家。麦金利在搜索加州大学洛杉矶分校附近6英尺高的蓝眼睛女性时,她出现在了屏幕上,她在加州大学洛杉矶分校学习艺术。他们的匹配度达到了 91%。

距离他们的第一次约会已经过了一年了,McKinlay和Tien Wang曾约我在西木寿司店见面,那是他们爱情开始的地方。MacKinlay有一个博士学位 ,他教数学,目前正致力于音乐研究生学位。Tien Wang在卡塔尔被录取并获得一年的助学金,现在在加利福尼亚看望MacKinlay。

之后,Tien Wang回到了卡塔尔,在他们一次日常的Skype聊天时,McKinlay拿出了钻石戒指放到视频摄像头前向她求婚,她说了Yes。

他们还未确定何时举办婚礼,为了决定哪天最适合结婚,还有很多的研究工作要做。

McKinlay说:“我认为我只是多用了数据和基于机器学习的算法,就像每个人都会在网上做的一样。”每个人都想做一个最好的简历——他只是用数据做了一个。

原文来源@ How a Math Genius Hacked OkCupid to Find True Love

 https://blog.csdn.net/luzonghao1/article/details/50388117



6.3-7.15

机器学习小组


做项目为主要导向

剖析最前沿热点

讲解经典案例的机器学习小组


机器学习小组等你来深入实践一探真相! 


除了在课堂上展示有趣的案例, 我们还将让你有实际上手的二分类/多分类项目, 或者带着你将“图像风格模仿”应用在视频中, 做出 再或者让你来生成一面有着1000张你最喜欢的爱豆照片的照片墙...


一个半月的小组, 我们让所有学生, 不管是否有计算机专业的背景, 都能动手做一个机器学习项目. 也许是为了丰富自己申请学校时递交的简历, 也许是为了试水一个自己感兴趣却又不敢马上转行的方向, 也许是为了让即将赴美读相关专业却缺少相关背景的自己在未来踏入全新校园时添点底气. 再或者, 也许你不是那么功利, 单纯是为了某次聊天谈起’特斯拉的自动驾驶’ ‘Amazon的Alexa’…时也有一个话题可以撩妹/汉.


我们的小组以“项目实践”为主, 所以为同学们留下足够的能完成个人项目、理解课堂案例项目的时间和能在recitation提出最有价值问题的机会. ‘内行人能学出门道, 外行人也能学出热闹’. 代码狂热者可以通过选择更有挑战性的项目提升水平, 而小白们也能通过课程列表中的项目循序渐进实现真的“入门”. 我们想让学生明白, 从研究到工业的应用再到生活中的推广, Machine Learning和更广义的AI并不是那么遥不可及. 所以在小组中, 你会在lecturer和coach的课程、阅读材料及分享中窥得机器学习中有意思的项目和无限广的应用场景. 在视频中自动跟踪物品并标注其名称的“自动图像标注”技术, 在图像中智能识别情景与内容并给用户文字回答的“视觉问答系统”, 在比赛中判断运动员的骨架与动作的“人体姿态估计”... 


整个小组期间, 老师及coach团队将带你认识前沿研究热点, 与你共读文献, 共同见证机器学习的魅力.






点击【阅读原文】立刻加入机器学习小组



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/e7jNUccqtp
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/12772
 
627 次点击