在线约会网站的统计数据

机器算法验证 预测模型
2022-03-09 19:01:58

我很好奇在线约会系统如何使用调查数据来确定匹配项。

假设他们有过去匹配的结果数据(例如,1 = 幸福地结婚,0 = 没有第二次约会)。

接下来,假设他们有 2 个偏好问题,

  • “您有多喜欢户外活动?(1 = 非常不喜欢,5 = 非常喜欢)”
  • “你对生活有多乐观?(1=非常不喜欢,5=非常喜欢)”

还假设对于每个偏好问题,他们都有一个指标“你的配偶分享你的偏好有多重要?(1 = 不重要,3 = 非常重要)”

如果他们对每一对都有这 4 个问题以及比赛是否成功的结果,那么使用该信息来预测未来比赛的基本模型是什么?

3个回答

我曾经和一个为使用统计技术的在线约会网站工作的人交谈过(他们可能宁愿我不说是谁)。这很有趣——一开始他们使用了非常简单的东西,例如轮廓向量之间具有欧几里得距离或 L_1(城市街区)距离的最近邻居,但是对于匹配两个过于相似的人是好还是坏存在争议事物。然后他接着说,现在他们已经收集了很多数据(谁对谁感兴趣,谁和谁约会,谁结婚等等),他们正在使用这些数据来不断地重新训练模型。在增量批处理框架中工作,他们使用批量数据定期更新模型,然后重新计算数据库上的匹配概率。很有趣的东西,但我

你要求一个简单的模型。这是我从 R 代码开始的方式:

 glm(match ~ outdoorDif*outdoorImport + optimistDif*optimistImport,
     family=binomial(link="logit"))

OutdoorDif = 两个人关于他们喜欢户外活动的程度的答案的差异。OutdoorImport = 关于享受户外活动的答案的匹配重要性的两个答案的平均值。

* 表示前面和后面的术语相互影响,也分别包含在内。

您建议匹配数据是二元的,只有两个选项是“幸福地结婚”和“没有第二次约会”,所以这就是我在选择 logit 模型时的假设。这似乎不太现实。如果您有两个以上的可能结果,则需要切换到多项式或有序 logit 或某些此类模型。

如果,正如你所建议的,有些人有多次尝试匹配,那么这可能是一个非常重要的事情,要尝试在模型中考虑。一种方法可能是使用单独的变量来指示每个人之前尝试匹配的次数,然后将两者进行交互。

一种简单的方法如下。

对于两个偏好问题,取两个受访者回答之间的绝对差,给出两个变量,比如 z1 和 z2,而不是四个。

对于重要性问题,我可能会创建一个结合两个回答的分数。如果回答是(1,1),我会给一个 1,一个(1,2)或(2,1)得到一个 2,一个(1,3)或(3,1)得到一个3,(2,3) 或 (3,2) 得到 4,而 (3,3) 得到 5。我们称之为“重要性分数”。另一种方法是使用 max(response),给出 3 个类别而不是 5 个,但我认为 5 个类别的版本更好。

我现在要创建十个变量,x1 - x10(为了具体化),所有变量的默认值都为零。对于第一个问题的重要性得分 = 1 的观察,x1 = z1。如果第二个问题的重要性得分也 = 1,则 x2 = z2。对于第一个问题的重要性得分 = 2,x3 = z1 并且如果第二个问题的重要性得分 = 2,x4 = z2 的那些观察,以此类推。对于每个观察,x1、x3、x5、x7、x9 中的一个恰好是 0!= 0,对于 x2、x4、x6、x8、x10 也是如此。

完成所有这些后,我将运行逻辑回归,将二进制结果作为目标变量,x1 - x10 作为回归量。

更复杂的版本可能会通过允许对男性和女性受访者的重要性进行不同的处理来创建更多的重要性分数,例如,a (1,2) != a (2,1),我们已按性别对响应进行排序。

这个模型的一个缺点是你可能对同一个人有多个观察,这意味着“错误”,松散地说,在观察之间不是独立的。但是,由于样本中有很多人,我可能会忽略这一点,作为第一次通过,或者构建一个没有重复的样本。

另一个不足之处是,随着重要性的增加,给定的偏好差异对 p(fail) 的影响也会增加,这意味着 (x1, x3, x5, x7, x9) 的系数和在 (x2, x4, x6, x8, x10) 的系数之间。(可能不是一个完整的排序,因为我先验地不清楚(2,2)重要性得分与(1,3)重要性得分之间的关​​系。)但是,我们没有在模型中强加这一点。一开始我可能会忽略这一点,看看我是否对结果感到惊讶。

这种方法的优点是它没有对“重要性”和偏好反应之间的差异之间关系的函数形式进行假设。这与之前的不足评论相矛盾,但我认为缺乏一种功能形式可能比相关的未能考虑系数之间的预期关系更有益。