这可真的是“世上无难事,只怕有心人”啊!
Chris McKinlay 窝在加州大学洛杉矶分校数学系楼上的小隔间里,头顶的灯泡和显示器照亮了他年轻的脸庞。凌晨三点,这是他使用校内超级计算机的最佳时间。趁老师同学们已经沉沉睡去,他得尽快赶完自己的博士论文(内容为大规模数据处理与并行数值方法)。在计算机全速运转的同时,他打开了另一个窗口,打算看看自己的 OkCupid 收件箱。
McKinlay 身材瘦削、高高的个子,头发总是凌乱不堪。与 4 千万美国用户一样,他也在通过 Match.com、J-Date 以及 e-Harmony 等网站寻找自己的爱人。自九个月前与女朋友分手之后,他一直在寻觅新的人生伴侣,他向 OkCupid 算法提供的所谓潜在匹配女性用户发出了数十条可爱的介绍信息,不过大多被对方直接忽视。当然,他的努力也并非一无所获——他总共进行了六次约会。
2012 年 6 月的这个清晨,他正在编译器窗口中处理着机器码。但在无意中瞥向闲置在另一个窗口中的约会资料时,他突然意识到自己实际上犯了个大错误。他一直想像其他普通用户一样采取常规的匹配方式 ; 但答案正相反,他应该像个数学家一样来场“真正”的约会。
为什么不通过大数据寻找约会对象?
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 当中包含一套系统用以防止这种数据收集行为:它能够轻松发现速度过快的用户操作状况。在此之后,他的脚本机器人被一个接一个封禁了。
他必须把脚本训练得更像人类
他转而求助自己的好朋友 Sam Torrisi,他是一位神经科学家,最近正在教授 McKinlay 音乐理论。作为回报,McKinlay 则教他高数课程。Torrisi 也在使用 OkCupid,他同意在自己的计算机上安装间谍软件以监控他对该网站的使用方法。随着数据的快速积累,McKinlay 通过编程让自己的机器人模拟 Torrisi 的点击与打字速度。他从家里又带来一台电脑,并将其接入数学系的宽带线路,从而保证这台设备能够 24 小时全天运行。
三周之后,他收集到全国 2 万名女性用户关于 600 万个问题的答案。但 McKinlay 的论文也因此受到了影响,缓慢的进度导致其被降级为编外项目。如今,他基本睡在自己的小隔间里。在这座昏暗的米色小“牢房”里,他躺在一张薄薄的临时床垫上度过了一个又一个夜晚。
McKinlay 的工作计划非常明确,他需要通过数据调查发现一种模式,即根据相似性对女性用户进行粗略分组。在他编写出一种名为 K-Modes 的改良性贝尔实验室算法之后,这项工作取得了突破性进展。这种算法首次应用于 1998 年,负责对患病的大豆作物进行分析。其利用分类数据根据作物颜色判断其是否受到感染。通过微调,他得以调整分析结果的稠度,能够将结果稀释成光滑的色块或者进一步凝结成单一颗粒。
经过对数据的反复分析,他最终获得了理想的成果——根据问题与答案,他将 2 万名女性总结成七个统计层面的星团状集合体。