作者 | Kevin Poulsen

译者 | 核子可乐

来源 | AI 前线公众号

这可真的是“世上无难事,只怕有心人”啊!

Chris McKinlay 窝在加州大学洛杉矶分校数学系楼上的小隔间里,头顶的灯泡和显示器照亮了他年轻的脸庞。凌晨三点,这是他使用校内超级计算机的最佳时间。趁老师同学们已经沉沉睡去,他得尽快赶完自己的博士论文(内容为大规模数据处理与并行数值方法)。在计算机全速运转的同时,他打开了另一个窗口,打算看看自己的 OkCupid 收件箱。

McKinlay 身材瘦削、高高的个子,头发总是凌乱不堪。与 4 千万美国用户一样,他也在通过 Match.com、J-Date 以及 e-Harmony 等网站寻找自己的爱人。自九个月前与女朋友分手之后,他一直在寻觅新的人生伴侣,他向 OkCupid 算法提供的所谓潜在匹配女性用户发出了数十条可爱的介绍信息,不过大多被对方直接忽视。当然,他的努力也并非一无所获——他总共进行了六次约会。

2012 年 6 月的这个清晨,他正在编译器窗口中处理着机器码。但在无意中瞥向闲置在另一个窗口中的约会资料时,他突然意识到自己实际上犯了个大错误。他一直想像其他普通用户一样采取常规的匹配方式 ; 但答案正相反,他应该像个数学家一样来场“真正”的约会。

0 为什么不通过大数据寻找约会对象?

OkCupid 是由哈佛大学数学系于 2004 年建立的,其出色的匹配计算方法引起了约会平台的关注。会员们需要在这里回答大量关于政治、宗教、家庭、爱情、两性乃至智能手机偏好等的多选调查问题。

平均而言,受访者们会从庞大的题库当中抽到 350 个问题,例如“您最想和以下哪一位共同去看场电影?”或者“在您的生活中,宗教 / 上帝到底有多重要?”对于每位用户,系统都会记录下其答案,并用以判断哪些配对方适合其偏好。对于每个问题,系统会从“无关”到“必须”划分出五个等级以评估问题的重要程度。OkCupid 的匹配引擎会利用该数据计算出一对男女的兼容性水平。这一水平越接近百分之百,则证明双方越能够彼此契合。

不过从数学角度来看,McKinlay 与洛杉矶女性们的兼容性非常糟糕。OkCupid 的算法仅使用两种潜在匹配结果判断问题结果,而 McKinlay 在这些随机问题中给出的答案被系统判定为“此人不受欢迎。”在浏览自己的匹配结果时,只有不到 100 名女性与其拥有 90% 以上的兼容性。要知道,洛杉矶市居住有 200 万女性(OkCupid 中包含约 8 万名女性用户的信息)。在这个兼容性等于知名度的网站上,McKinlay 实际上毫无存在感。

他意识到自己必须想办法提高这个数字。通过统计抽样,McKinlay 将能够确定哪些问题决定着他能否找到自己青睐的女性。以此为基础,他将能够整理出一份新的个人资料,诚实地回答这些核心问题并忽略其余问题。这样,他将保证自己匹配到洛杉矶区域内每一位可能适合他的女性,同时排除掉其他不合适的对象。

Chris McKinlay 利用 Python 脚本浏览了数百个 OkCupid 调查问题。在此之后,他将女性约会者划分为七个群组,例如“多样”与“专一”,每个群体都拥有一系列不同特征。

即使在数学家群体当中,McKinlay 也绝对称得上一个异类。他出生于波士顿郊区,2001 年毕业于米德尔伯里学院并获得中文学位。同年 8 月,他在纽约找到一份兼职工作,负责在世贸中心北栋 91 楼的办公室里处理汉译英任务。贸易中心在五周后因飞机撞击而坍塌。(McKinlay 当天在办公室待到凌晨 2 点,而上午 8:46 飞机袭来时,他正在住处休息。)经历了这场生死剧变,“我开始问自己,我到底想做些什么。”这时,哥伦比亚大学的一位朋友将他介绍到了麻省理工学院著名的二十一点扑克算法团队当中。接下来的几年中,他奔波于纽约与拉斯维加斯之间,凭借着计算扑克牌面的出现几率赚取到高达 6 万美元的年收入。

这段经历激起了他对应用数学的浓厚兴趣,并最终促使他拿下了硕士学位以及博士学位。他回忆道,“他们能够在多种不同的应用场景下使用数学知识。他们发现了很多能够用数学方法解决的游戏,例如扑克牌九。他们会写下代码,并提出赢面最大的游戏策略。”

现在,他打算在追寻爱情方面采取同样的思路。当然,要迈出第一步,他首先得收集数据。虽然博士论文仍在进行,但他还是抽出时间注册了九个 OkCupid 帐户,并编写一套 Python 脚本用于管理这些帐户。这套脚本会搜索他的目标人群(年龄在 25 岁至 45 岁之间的异性恋与双性恋女性),访问她们的页面,并抓取其个人资料以获取每一条可用信息,包括种族、身高、是否吸烟、是否相信占卜等等。

为了找到调查答案,他还得做点额外的探索。OkCupid 允许用户查看其他人的回复,但前提是用户本身必须也参与问题的回答。McKinlay 设置脚本以随机回答各个问题——由于他并没有填写任何个人资料,因此具体答案的选择并不重要——进而将女性们的答案添加到数据库当中。

McKinlay 满意地看着自己的这套脚本全速运转。而后,在收集到约 1000 份资料后,他遇到了第一个难题。OkCupid 当中包含一套系统用以防止这种数据收集行为:它能够轻松发现速度过快的用户操作状况。在此之后,他的脚本机器人被一个接一个封禁了。

1 他必须把脚本训练得更像人类

他转而求助自己的好朋友 Sam Torrisi,他是一位神经科学家,最近正在教授 McKinlay 音乐理论。作为回报,McKinlay 则教他高数课程。Torrisi 也在使用 OkCupid,他同意在自己的计算机上安装间谍软件以监控他对该网站的使用方法。随着数据的快速积累,McKinlay 通过编程让自己的机器人模拟 Torrisi 的点击与打字速度。他从家里又带来一台电脑,并将其接入数学系的宽带线路,从而保证这台设备能够 24 小时全天运行。

三周之后,他收集到全国 2 万名女性用户关于 600 万个问题的答案。但 McKinlay 的论文也因此受到了影响,缓慢的进度导致其被降级为编外项目。如今,他基本睡在自己的小隔间里。在这座昏暗的米色小“牢房”里,他躺在一张薄薄的临时床垫上度过了一个又一个夜晚。

McKinlay 的工作计划非常明确,他需要通过数据调查发现一种模式,即根据相似性对女性用户进行粗略分组。在他编写出一种名为 K-Modes 的改良性贝尔实验室算法之后,这项工作取得了突破性进展。这种算法首次应用于 1998 年,负责对患病的大豆作物进行分析。其利用分类数据根据作物颜色判断其是否受到感染。通过微调,他得以调整分析结果的稠度,能够将结果稀释成光滑的色块或者进一步凝结成单一颗粒。

经过对数据的反复分析,他最终获得了理想的成果——根据问题与答案,他将 2 万名女性总结成七个统计层面的星团状集合体。

“我真的欣喜若狂,六个月以来的努力终于有了回报。”

他又重新调整了机器人以收集另一份样本:洛杉矶与旧金山区域内曾在过去一个月内登录过 OkCupid 的 5000 名女性用户。通过 K-Modes 的再次发力,他再次得出一份汇集结果。通过抽样验证,他再次证明自己的统计结论准确无误。

现在,他只需要判断哪个集群最适合自己即可。他查看了很多用户的个人资料,其中一个群体平均年龄太小、另外两个群体平均年龄太大,另有一个群体宗教倾向太严重。最终,他选定了一个由 25 岁左右女性占主体的集群。她们看起来比较像是自由职业者、音乐家与艺术家。这就是 McKinlay 的黄金群体,他相信自己的真爱就隐藏在其中。

实际上,另一个与之相近的群体看起来也很酷,其中的女性年龄稍大,且从事专业的创造性工作——例如编辑与设计师。他决定把两个集群都定为目标。为此,他整理出两份个人资料,分别针对 A 组与 B 组进行了内容优化。

他用文本挖掘了这两个“星团”,以了解她们最感兴趣的内容 ; 教学成为其中的一项热点,因此他撰写了一篇简介文章,强调自己曾从事数学知识的教学工作。除此之外,他还挑选出两个集群当中最受欢迎的 500 个问题,并诚实地填写自己的答案——他不希望以谎言为基础博取女性青睐,这会危及双方的后续关系。但必须强调的是,他打算利用计算机弄清楚每个问题的重要程度,并利用自适应增强型机器学习算法提供最佳权重结论。

以此为基础,他拥有了两份个人资料 ; 其中一份配有他攀岩时的照片,另一份则配有他在演出中弹奏吉他的照片。OkCupid 中的一个问题提到,“无论未来的规划如何,您现在对什么更感兴趣?性还是爱情?”答案很明显,当然是爱情更重要。但对于平均年龄较小的 A 组,他按照计算机的指导,将问题重要度评为“非常重要”; 但对 B 组,则将重要度评为“必须”。

在回答了所有问题并对其进行重要度排列之后,他开始按照匹配百分比分数在 OkCupid 中对洛杉矶的女性进行搜索。第一页的女性拥有高达 99% 的匹配率。向下滚动……继续滚动……再来,他最终看到洛杉矶区域内即有 1 万名女性与他拥有超过 90% 的兼容水平。

当然,他还需要更进一步才能真正引起注意。OkCupid 会员在他人查看自己页面时会收到通知,因此他编写了一个新程序以访问那些匹配度最高的页面。周一,访问 1000 位 41 岁女性 ; 周二,访问 1000 位 40 岁女性 ; 两周之后,当访问对象年龄到达 27 岁时,重新返回 41 岁并继续重复。

一位女性在页面中写道,“直到现在,我还没有遇到过符合自己心意的对象。但我发现你的个人资料很有趣。看起来,你是个精通数字且性情粗犷的男性……我想我应该跟你打个招呼。”

另一位女性写道,“你好——你的个人资料真的让我非常吃惊,我想来打个招呼。我认为我们有很多共同点,虽然我不懂数学,但肯定也能聊得很开心。”

另一位女性用户问道,“你真的能翻译中文吗?我也上过一堂课,但感觉学不明白。”

McKinlay 的数学搜索工作已经完成,接下来要做的,就是走出小隔间真正试试自己的研究成果。

2 搜索工作完成,得开始真正的约会了

6 月 30 日,McKinlay 在加州大学洛杉矶分校的健身房里洗了个澡,然后开车穿过市区。他的约会对象是 Sheila,一位充满年轻艺术家气质的网页设计师。他们在 Echo Park 的一家咖啡厅吃过了午饭。McKinlay 回忆道,“这真是太吓人了。整个过程更像是一次学术交流活动。”

约会结束时,两个人都发现自己对对方并没什么感觉。第二天,他又参加了另一场约会——对方是一位来自 B 组的博客编辑。他打算在 Echo Park 的湖边散步,却发现这里被封起来进行湖水疏通。对方抱怨称自己一直在读 Proust 的著作,并对自己的生活感到沮丧。McKinlay 最后得出结论,“我对这次约会同样感到沮丧。”

第三次约会的对象同样来自 B 组。他在韩国城的一家酒吧里遇到了 Alison。她是一位编剧系学生,肩上纹有一个斐波那契螺旋。McKinlay 喝了点韩国啤酒,第二天带着宿醉从自己的小隔间里醒来。他在 OkCupid 上向 Alison 发送了后续消息,但她没有回复。

虽然一再遭受拒绝,但他每天仍能收到大约 20 条消息。然而,极具吸引力的个人资料仍然无法挽救失败的真实约会。他开始忽略那些平淡无奇的消息,而只回复比较幽默或者在个人资料中展示有趣内容的对象。一般来说,只需要三到五条信息,他就能敲定一场约会。但现在,他变得更为消极——只是简单回复“你看起来很酷,要见个面吗?”

到第 20 次约会时,他注意到了一些潜在的变数。在较为年轻的群体当中,女性往往拥有两个或者更多纹身,且一般住在洛杉矶东区。而在较为年长的群体当中,女性们往往对中型犬表现出强烈的喜爱。

在早期约会当中,他会努力对过程进行精心策划。然而,随着项目强度的增加,他只能在午餐或喝咖啡时随意安排约会,有时候甚至会一天赶赴两场约会。他制定了一套个人规则来完成这场马拉松式的爱情搜索。第一,他决定不再喝酒。此外,约会结束之后不再纠缠,也不安排音乐会或者电影。他表示,“那样会分散注意力,使两个人的精力无法集中在彼此身上。这样非常没有效率。”

3 爱情中的数据奥秘

McKinlay. 的代码发现,女性群体实际上构成了具有统计学意义的整体。她们倾向于以类似的方式回答 OkCupid 上的调查问题。其中的“青涩”帮喜欢在网上约会新手,而“嫩草”帮的平均年龄更大也更乐于冒险。以下是各个群体针对四个最受欢迎的问题作出的回答。

在经过一个月的约会之后,他意识到自己在有纹身且居住在东区的女性身上浪费了太多精力。他删除了自己的 A 组信息,提高了效率,但结果却仍然一样。随着夏天的结束,他已经进行了超过 55 次约会,而且对每次约会都进行了认真记录。然而遗憾的是,只有三位女性愿意与他进行第二次约会,只有一位愿意进行第三次约会。

大多数约会失败的用户都会感到自尊心受到伤害,而 McKinlay 的问题更糟糕——他甚至怀疑自己的计算结果出了问题。

这时,他收到了来自 28 岁艺术家兼监狱废除活动者 Christine Tien Wang 的消息。McKinlay 在加州大学洛杉矶分校附近搜索身高 6 英尺的蓝眼睛女孩,而她正在这里攻读美术硕士学位。他们的兼容度为 91%。

他在学校的雕塑园区内和她碰面,并在寿司店一起用餐。他立刻有了感觉,他们开始谈论书籍、艺术与音乐。她承认自己在发消息之前曾对自己的个人资料进行了调整,而他则将整个黑客故事和盘托出。

她的反应是,“哈哈,真有阴谋论和愤世嫉俗的感觉。我喜欢这个主意。”

双方的第一次约会已经是 McKinlay 的第 88 次约会,但他们进展得很顺利,接下来的约会陆续敲定。两周之后,两个人暂停了自己的 OkCupid 帐户。

McKinlay 表示,“我认为我所做的跟每一位用户并无不同,只不过引入了算法、规模化以及基于机器学习的具体方式。”每个人都希望自己的个人资料亮鲜亮丽,他只是利用数据资源实现了这个目标。

在双方约会的一年之后,McKinlay 与 Tien Wang 在卖点斯特伍德寿司吧与我见面——这里也是他们第一次用餐的地方。McKinlay 如今已经拿下了博士学位,在教授数学的同时攻读音乐研究生学位。Tien Wang 则拿到了艺术奖学金,远赴卡塔尔留学。他们一直在 Skype 上保持联系,而她已经多次来探访 McKinlay。

在我的要求之下,McKinlay 带来了他的实验笔记本。Tien Wang 也看过这份笔记。McKinlay 在其中写下了各种公式与方程式,结尾则是排列整齐的女性与日期清单,外加简洁的注释。Tien Wang 瞥了一眼,并笑称这本笔记真的很蠢。她还注意到,8 月 24 日,McKinlay 曾经在一天之内带着两位女性前往同一处海滩。“这真是太可怕了。”

对于 Tien Wang 而言,McKinlay 的 OkCupid 破解之旅只是个有趣的故事。但所有的数学公式和代码只是他们故事的序幕而已。事实上,在开始约会之后,真正的技术性工作才刚刚开始。她表示,“人们要比自己的个人资料复杂得多。所以,我们相遇的方式有点肤浅,但发生的一切却并不肤浅。这是由大量准备工作所促成的美好结果。”

McKinlay 对此表示同意:“这绝不像「我们匹配度高,所以我们很合适」那么简单。OkCupid 只是一种搭建对象的机制,接下来我们还是得靠自己。”

她对此表示不满:“不是你找到我,是我找到了你。”她边说边抚摸他的手肘,而 McKinlay 思索了一阵,表示她说得没错。

一周之后,Tien Wang 返回了卡塔尔。在一次日常 Skype 通话当中,McKinlay 拿出一枚钻戒摆在摄像头前向她求婚——她开心地同意了。

但他们还没有定下最终婚期——毕竟选择婚礼日,也是需要进行一点科学研究的。

4 One More Thing…

你以为故事到这里就戛然而止了吗?并不。

这篇文章最早发布到现在已经过去了几个年头,我们好奇后来的剧情发展,求婚成功之后呢?在搜索引擎上搜索 Chris McKinlay,最终找到了这位前光棍极客的推特,经过一番翻阅和搜索,看到了以下对话:

下面是男主角回答网友的提问:去年秋天结婚了,目前感觉相当好。

……

是不是被秀了一脸?你准备试试吗?

今日荐文

点击下方图片即可阅读

27 岁的 Linux 和 49 岁的 Linus

程序员找不到对象是伪命题?他用大数据找对象,现在婚都结了相关推荐

  1. python自学行吗-上万程序员总结:自学Python,掌握到什么程度就可以找工作了?...

    原标题:上万程序员总结:自学Python,掌握到什么程度就可以找工作了? 前言: Python现在非常火,语法简单而且功能强大,很多同学都想学Python! 在这里把最好的分享给大家!希望能带给大伙儿 ...

  2. 程序员加班到凌晨,第二天却被开除,了解原因后大家都说大快人心

    我们都知道,如果是经常加班并且加班也比较有质量的话,那么一定是会得到老板的青睐和同事们的佩服的,但是没想到有这样一位程序员加班一直加到了凌晨,第2天却被公司给开除了,但是这位员工被开除确实让大家感觉到 ...

  3. 某程序员求助:隔壁组组长常常微信骚扰自己怎么办?组长和自己都是男生,自己是双性恋,但想找个年轻的!网友:信息量太大!...

    遇到职场性骚扰怎么办? 一个程序员发帖求助:隔壁组组长加自己微信,说对自己有感觉,平时总喜欢找话题聊天,有时候还暗示如果不服从他,他就能让自己组长开除自己.虽然两人都是男生,自己也不排斥男男,算是双性 ...

  4. 中年程序员哀叹:失业两月,开始怀疑人生,找份工作怎么这么难!

    当年笔者在找工作的时候,铺天盖地的新闻说是史上最难就业季.一些年长的职场人就安慰我,说新闻每年都是这样报,不用别放在心上.但今年这形势,真不用新闻报道了,大家就知道真实的情况,真不是一般的难,那是相当 ...

  5. 什么样的python程序员好找工作-Python学到什么程度才可以去找工作?掌握这4点足够了!...

    大家在学习Python的时候,有人会问"Python要学到什么程度才能出去找工作",对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来 ...

  6. PHP三年15K,程序员月薪15K相亲三年才成功,被拒理由:这个薪资提鞋都嫌弃

    程序员,北漂三年,月薪1万5.懂行的人可能知道,这个薪资也就是一般水平,与成功人士还有很远的距离,甚至在程序员圈子都是被鄙视的水平,很多刚毕业的985大学生如果从事程序员,拿到2万的起薪也不是什么新鲜 ...

  7. 程序员接私活一定要知道的事情,我走的弯路你们都别走了

    文章目录 前言 一.程序员私活的种类 1.兼职职位众包 2.自由职业者驻场 3.项目整包 二.这3种私活可以接 1.有熟人 2.七分熟的项目 3.需求明确的项目 三.这3种私活不要接 1.主动找上门的 ...

  8. 非科班程序员被裁员后反而涨薪了200%,这两个月他都经历了哪些?

    今年年初开始,裁员潮一浪接着一浪翻滚而来,让互联网人胆颤心惊,时刻担心下一波裁员是否就要降临到自己身上. 小帅(化名)是一个原本月薪8k,在小外包公司做政府项目的一名普通员工,前不久就被裁员了: 小帅 ...

  9. 程序员因压力太大,转行做游戏制作人,结果把全球玩家都逼疯了!

    大家好,这里是正惊游戏,我是正惊小弟 2019年3月22日发售的<只狼>在游戏圈火了好久.一时间,各大直播平台房间封面被"死"字充斥.越来越多的玩家喜欢上这种高难度硬核 ...

最新文章

  1. JetBrains打造的开发神器,一套代码适应多端!
  2. 2018年终总结--最美的期待
  3. 2017年我的阅读书单
  4. 算法设计与分析——动态规划——最长公共子序列
  5. WORD如何创建三线表样式?
  6. 计算机语言学家,著名计算语言学家冯志伟为人文学院师生作专题讲座
  7. Web工程师必备的可视化工具
  8. 基于PHP以及JQUERY AJAX的计算器实例
  9. 精仿B站播放器外加弹幕库源码-带后台
  10. 【第8章:常用控件】
  11. RapidShare 真实链接抓取助手
  12. 分享Appmakr式的简易App制作8大工具
  13. 小游戏“程序猿大战产品*那啥”
  14. python结果不能全部显示_numpy矩阵数值太多不能全部显示的解决
  15. 【Linux】制作U-Boot烧写镜像到SD卡的过程(中篇:LDS文件)
  16. 骨传导也有动铁单元般的音质,绝对品质,真的是诚意满满
  17. JSR-330 JAVA 依赖注入标准API说明
  18. 美国游学英国游学推荐 选择国际游学机构五大攻略
  19. linux串口termios
  20. 【微信小程序】微信小程序提示Do not have handler in component

热门文章

  1. 深入理解吴恩达老师深度学习课程(01神经网络和深度学习 第二周)
  2. C语言 || 递归 || 求第n个人的年龄
  3. 第14届军警狙击手世界杯:中国队包揽全部冠军
  4. Unifying Task-oriented Knowledge Graph Learning and Recommendation
  5. 我的一篇旧作——卢老师
  6. Android studio中todo的用法
  7. idea设置svn上传或下拉代码
  8. 学校计算机ip设置路由器,配合路由器设置电脑静态ip方法图文教程
  9. 近岸蛋白递交注册:年营收3.4亿 朱化星控制71.24%表决权
  10. WMware中ubuntu移动鼠标时鼠标消失解决办法