1 min read

OKCupid 在线配对的算法

更多内容参考 github

参考 @Rudder2018, 假设有 A 和 B 两个用户,分别为男和女,进行配对。

一共有两个问题,x 和 y。

  1. A 对 两个问题的重要性程度为 50 和 1
  2. B 对 两个问题的重要性程度为 1 和 10

对于 A 来说,B 的答案是否匹配 希望别人的回答,才是关键

  1. B 回答的问题中,对于A来说,第1道正确,那么得分为 \(\frac{50 \times 1 + 1 \times 0}{50 + 1} = 50/51\)
  2. A 回答的问题中,对于B来说,第2道正确,那么得分为 \(\frac{1 \times 0 + 10 \times 1}{1 + 10} = 10/11\)

那么

  1. A 对 B 的满意度为 50/51
  2. B 对 A 的满意度为 10/11

然后进行几何平均数

sqrt(50/51 * 10/11)
## [1] 0.9440686

便是两人的匹配度。

这里有几个东西可学习

  1. 回答的问题是相加关系,类似于回归思路
  2. 重要性程度类似于 \(\beta\) 系数
  3. 最后几何平均数的计算匹配度,属于很新颖

问题的结构

  1. 自己的回答,
  2. 希望别人的回答 (进行计分),这个 scope 很不错
  3. 回答的重要性

希望别人的回答的构成逻辑

但如果碰到下面的问题 :“你喜欢成为关注的中心么?”如果交往中的双方都回答是,那他们可有大问题了。 WeChat Article

我们很早就意识到了这一点,所以我们觉得需要在每个问题再收集多一些数据。我们不仅要人们回答自己的看法,也要他们回答所期待未来意中人如何回答。 WeChat Article

几何平均数的应用

基于我们所知道的信息。为什么算法要相乘,而不是除?比如,把两个分数求平均值以后再开平方根?总的来说,这个公式叫几何平均数,它很适合处理差异很大的数据,以及代表不同属性的数据。 WeChat Article

凭直觉讲,以下情况很有道理。两个人彼此的满意度是50%,会好过那些两个人彼此满意度是0或者100的。因为爱慕应该是互相的。 WeChat Article

参考 Blog, 因为几何平均数进行了 log 处理,的确会让差异很大的数据进行居中靠拢的效果。