大家好,我叫 Christian Rudder, 我是 OKCupid 网站的创办人之一。 这个网站现在已经是 全美最大的交友网站。 就象这网站上大多数其他人一样, 我是学数学的, 正如你所期待的那样, 我们擅于分析。 我们把这方法也应用在爱情上。 我们把它叫做“配对算法”。 基本上 OK Cupid 的配对算法 帮助我们决定 两个人是否应该约会。 我们的整个业务都是基于这一点。 “算法”这个词说起来专业而高级, 大家喜欢把它想成很大的一件事, 但其实,算法只不过是一个系统的, 一步一步的解决问题的方法。 根本没有那么复杂。 现在,我将为大家解释 我们怎样得出这一个特殊的算法。 你会在这看到它是怎样成形的。 为什么算法如此重要? 为什么我们要有这堂课? 请注意我刚才提到的一个很重要的词: 它们是一种"逐步"解决问题的方法, 你或许也知道, 电脑擅长于一步一步的运算过程。 没有算法的电脑, 基本上只是一个昂贵的镇纸。 既然电脑已经普及到我们的日常生活, 算法是无处不在。 OK Cupid 配对算法背后的数学逻辑 是非常简单的。 就是一些加法, 乘法, 再来一点平方根。 不过,设计这套算法的关键部分, 在于要找出那些神秘的 人与人之间的相互吸引力, 并把它解构成电脑可以工作的部分, 我们要做的第一件事 就把人和数据关联起来, 这样算法才能生效。 要最快的从人们那里得到数据, 最好就是直接询问他们。 我们决定 OK Cupid 应该向用户问问题, 比如说:“你会想要小孩吗?”, “你多久刷一次牙?“, ”你喜欢看恐怖电影么?”。 也有严肃些的问题, 比如:“你相信上帝么?”。 目前有很多问题 在进行同类型配对上都很合适, 就是当双方的答案相同时。 比如,两个人都喜欢看恐怖电影 可能配对得更成功。 而一个人喜欢, 另外一个人不喜欢的情况下, 适配度就差点。 但如果碰到下面的问题 : “你喜欢成为关注的中心么?” 如果交往中的双方都回答是, 那他们可有大问题了。 我们很早就意识到了这一点, 所以我们觉得需要 在每个问题再收集多一些数据。 我们不仅要人们回答自己的看法, 也要他们回答 他们期待对方如何回答。 这方法很有效, 不过我们还要再多加一个维度。 有些问题能表达人们的与众不同之处。 比如,关于政治的问题, “ 焚烧书籍或者国旗, 哪个更糟糕 ?” 这能展露人们电影口味之外的东西 同时,并不是所有问题都同等重要的, 所以我们最后增加了一个数据点。 任何 OK Cupid 的问题, 你都可以告诉我们 这问题对你的重要性, 它的程度从“无关”到“必要”。 现在,每一个问题, 我们有三个资讯提供给算法: 第一,你的答案; 第二,你希望别人怎么回答; 也就是你潜在的对象, 的答案; 第三,这个问题对你有多重要? 有了这些信息, OK Cupid 可以知道 两个人相处和谐程度如何。 算法吃进数字,吐出答案。 实际举例来说吧, 看我们怎样把你和另外一个人进行配对, 暂且称他为 “B”。 你和 B 的适配度是基于 你们双方都进行过回答的问题。 姑且把这些共同问题称之为 “s”。 简单举例,我们用小样本的 “s”, 只需两个共同回答过的问题 电脑会根据它算出适配度。 这里是我们的两道简单问题: 第一个是,“你有多杂乱无章?” 可供选择的答案选项有 非常杂乱无章, 一般, 和非常有条理。 我们假设你回答的是“非常有条理”, 你期待别人的回答是“非常有条理”, 并且对你来说,这个问题非常重要。 基本上你就是个井井有条的怪胎。 你是整洁有条理的人, 你也希望对方同样如此, 就这样。 我们假设 B 有些不同。 他的回答是自己非常有条理, 但是他也接受“一般”, 如果别人是这样回答的话, 这个问题于他而言不太重要。 我们看第二个问题, 就是我们最开始举例的: “你喜欢成为关注的中心么?” 答题项只有“是”或者“否”。 现在你的回答是“否”, 你希望别人怎样回答这栏答的是“否” 这个问题对于你不太重要。 而B呢,他自己的回答是“是”, 他希望别人回答“否”, 因为他希望所有焦点都在他身上, 而这个问题对他还算重要。 现在,我们让电脑来处理一切。 我们的第一步是, 既然我们要用电脑来处理它, 我们就需要给一些数值 来定义比如“还算重要”和“非常重要”, 因为电脑需要把所有资料都转化成数字。 在 OK Cupid 上我们按如下级别: “无关”是 0, “不太重要”的值是1, “还算重要”的值是 10, “非常重要”的值是 50, “绝对必要”的值是 250. 接下来,算法要做两个简单的计算。 第一个是你对B的回答给多少分, 另外一个是,你给对方答题的满分是多少? 你可以指定 B 的答案 在第一个有关条理性的问题上, 对你是非常重要。 它值50分,B 答对了。 第二个问题只有1分, 因为你说这问题对你不太重要, B 答错了。 所以B的回答在51分满分里拿到了50分。 适配满意度是 98%。 非常好。 算法的第二个问题是看 B 对你的满意程度。 B给对于你有关条理性的回答 给1分, 对于第二个问题的答案给10分。 满分11分,就是1+10. 你得到了10分, 在第二个问题上,你俩彼此都满意。 你的回答在B的满意度分数是10/11, 百分比是91%。 还不错。 最后一步是把两个适配度百分比放在一起, 为你们两打一个分数。 为得到这点, 算法把你们两人的得分相乘, 然后开n次方根, n 就是问题的数目。 因为“s”-- 也就是问题的数目, 在这个例子里,只是“2”, 我们得到的适配度百分比等于 98% 乘以 91% 再开平方根。 结果等于94%。 94%就是你和 B 之间的适配度百分比。 这是通过数学方法来表达-- 你们彼此之间相处的愉快程度是怎样。 基于我们所知道的信息。 为什么算法要相乘,而不是除? 比如,把两个分数求平均值以后 再开平方根? 总的来说,这个公式叫几何平均数, 它很适合处理 差异很大的数据, 以及代表不同属性的数据。 换句话说,它能完美的 计算出浪漫爱情适配度。 你有大范围的, 数不清的数据值, 就像刚说过的,有关电影的, 有关政治的, 有关宗教的, 有关所有的一切。 凭直觉讲,以下情况很有道理。 两个人彼此的满意度是50%, 会好过 那些两个人彼此满意度是0或者100的。 因为爱慕应该是互相的。 在增加了对误差幅度的小修改后 -- 这种情况在问题量很小的时候会出现, 就像我们刚举的运算实例一样-- 这套算法就可以运作了。 任何时候当 OK Cupid 将两个人配对时, 它按照我们刚介绍的步骤来運作, 首先它收集你的答题的数据, 然后它比较你的选项和 你期待的对方选项, 以简单的,数学的方法来进行。 这种能将现实世界的现象, 转化为电脑芯片能读取的数据的能力, 我认为, 是现代最重要的一种技术。 就像你用话语来给一个人讲故事, 你是用算法来跟电脑讲故事。 如果你学会了这种语言, 你就可以去讲故事了。 我希望我刚才的介绍能帮助你做到这点。