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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介:   这可真的是“世上无难事,只怕有心人”啊!  Chris McKinlay 窝在加州大学洛杉矶分校数学系楼上的小隔间里,头顶的灯泡和显示器照亮了他年轻的脸庞。凌晨三点,这是他使用校内超级计算机的最佳时间。趁老师同学们已经沉沉睡去,他得尽快赶完自己的博士论文(内容为大规模数据处理与并行数值方法)。在计算机全速运转的同时,他打开了另一个窗口,打算看看自己的 OkCupid 收件箱。  McKinlay 身材瘦削、高高的个子,头发总是凌乱不堪。与 4 千万美国用户一样,他也在通过 Match.com、J-Date 以及 e-Harmony 等网站寻找自己的爱人。自九个月前与女朋友分手之后,

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

  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 万名女性总结成七个统计层面的星团状集合体。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
10月前
|
SQL 分布式计算 大数据
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
125 0
|
10月前
|
分布式计算 资源调度 大数据
黑马程序员-大数据入门到实战-MapReduce & YARN入门
黑马程序员-大数据入门到实战-MapReduce & YARN入门
118 0
|
10月前
|
大数据 Java Linux
黑马程序员-大数据入门到实战-前置章节
黑马程序员-大数据入门到实战-前置章节
67 0
|
10月前
|
SQL 存储 大数据
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 语法与概念
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 语法与概念
107 0
|
3月前
|
分布式计算 DataWorks 调度
DataWorks产品使用合集之在DataWorks中,查看ODPS表的OSS对象如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
62 1
|
3月前
|
关系型数据库 MySQL 大数据
程序员小sister的烦恼_快速上手大数据ETL神器Kettle(xls导入mysql)
程序员小sister的烦恼_快速上手大数据ETL神器Kettle(xls导入mysql)
91 0
|
10月前
|
存储 分布式计算 Hadoop
黑马程序员-大数据入门到实战-HDFS分布式存储
黑马程序员-大数据入门到实战-HDFS分布式存储
128 0
|
Java 大数据 Scala
大数据开发基础的编程语言的Scala的类和对象
Scala是一种基于JVM的编程语言,它支持面向对象编程和函数式编程。本文将介绍Scala中类和对象的概念和用法,帮助开发者更好地理解和应用这门语言。
61 0
|
人工智能 分布式计算 Hadoop
java程序员的AI之路-大数据篇 hadoop安装
java程序员的AI之路-大数据篇 hadoop安装
315 0
|
Java 大数据 数据库连接
【大数据系列之JDBC】(八):使用PreparedStatement获取结果集对象
【大数据系列之JDBC】(八):使用PreparedStatement获取结果集对象
340 0

热门文章

最新文章