美国最大婚恋交友网站eHarmony的机器学习实践

本文介绍机器学习美国在婚恋交友网站平台eHarmony的应用,eHarmony通过相容性 (compatibility)分级、相似性(affinity)计算和潜在相似性匹配的“三级跳”实现在线婚恋速配。文章也涉及具体特征和算法及相关文献。

上周,我去洛杉矶参加了一个机器学习的meetup,一位主讲是eHarmony公司(美国最大的婚恋交友网站之一,通过性格测试来进行婚恋匹配的模式——百度百科)的Jon Morra,他着重分享了机器学习(machine learning)在他们的在线交友平台中的应用。机器学习技术应用的深度和广度给我留下了深刻的印象,他们居然能够应用到大多数人都能遇到的问题——寻找爱情上!

机器学习

这是演讲视频的下载

核心问题

在线约会的核心问题有太多的可挑选对象。为了防止用户无所适从,我们需要提供智能匹配。简单来说,你需要评估一下不同人们之间的“约会相容性(dating compatibility)”矩阵,从而建立一些匹配,这些匹配能够最大可能的使得约会成功。

如果这个爱情距离矩阵很小,你可以轻松的算出匹配,然后就能够给每一个人一个最佳匹配。比如,你可以用匈牙利算法来解决这一分配问题。然而,当我们处理数以百万计的用户量的时候,计算爱情距离矩阵就不现实了,并且我们的匹配也不是完美的,所以我们需要提供多个匹配。

John提供了一个“三级跳”的方法来解决这些问题:

  1. 根据相容性分级来减少潜在匹配池。相容性分级由用户提交的心理自测结果以及性取向、年龄、所在地等构成。
  2. 基于统计数据、文本功能、视觉功能等来计算潜在匹配之间的相似性(affinity)。
  3. 基于相似性,就可以找到最佳的匹配,然后通过日常电子邮件发送给用户。

相容性分级

第一部分是最简单的:根据一些调查和从心理学的角度来看,人与人之间或多或少是具有相容性的。相容性分级既包括单人的人格特质也包含了人与人之间的二元特质——也就是相似性(similarity)。

相容性结果也使用了性别偏好、年龄段和所在地等因素进行了过滤。第一步通过硬阈值消除了大量的不兼容的匹配。这样就把爱情距离矩阵转换成了更加易于处理的不含0元素的矩阵。我私下揣摩,这样也可能导致创建一些小分组,比如基于所在地的分组等,这些分组可以为后续的并行运算做准备。

相似性计算

相似性分值是两个用户愿意交流的概率。这个分值是基于逻辑回归模型训练得到的。训练数据包括了一些日志,这里面记载了两个用户是否曾经给对方传递过个人资料。训练通过Vowpal Wabbit来完成,这是一个听起来挺可怕,但是功能强大的机器学习包,可以在TB级别上做线性和逻辑回归模型的在线训练。

你的特征关系到你的生死;eHarmony公司采用经典的特征,如网站使用率统计数据、文本特征(我猜测是bag-of-words模型)和照片数量等,这些数据从成对的用户中提取得到。我认为训练矩阵也包括了相似的特征,比如相容性等级。有趣的是,最近eHarmony公司也涉足了照片分析。

John首先展示了使用Viola-Jones探测器提取图像特征(比如脸部区/图片区)的例子。无处不在的Viola-Jones检测器采用级联分类器存根来检测一副图像中是否包含了人脸,它在OpenCV中有具体实现。这个分类器使用了类Haar特征,这种特征可以使用积分图像进行高效的计算,同时,分类器使用AdaBoost算法进行训练。

Face Parts检测器

然后,John展示了使用Face Parts检测器进行检测的一些结果,这部分内容我不懂,但是效果还是相当惊人的。Face Parts 包含的思想是,一个人脸可以看出是由多个部件构成的,这些部件可以放置到一个树形结构中。部分匹配(可以看成一个图形的一部分如果识别成眉毛,那么这种识别可以用一个分值来表示)通过计算模板和特征集的高斯直方图(HOG)的点积得到。

机器学习