对答案进行排序,给出高票和低票

机器算法验证 估计 二项分布 计数数据 排行 应用
2022-04-08 22:11:45

在许多问答网站,例如 StackExchange,人们可以对每个答案投赞成票或反对票。这些网站通常还尝试使用投票来对答案进行排序,因此最有可能有用或准确的答案往往会出现在最靠近顶部的位置。给定每个答案的赞成票和反对票的数量,应该如何对答案进行排序?


例子。为了说明为什么我认为这个问题可能包含一些非平凡的统计内容,让我调查一下人们可能会考虑的一些方法以及它们的一些缺点。在每种方法中,我们从每个答案的赞成票和反对票中计算一个分数,然后按分数对答案进行排序,所以唯一的问题是使用什么方法来计算分数。

  • 赞成票减去反对票。加法差异很容易计算。 限制。一个有 121 个赞成票和 100 个反对票的答案真的比一个有 20 个赞成票和 0 个反对票的答案更好吗?

  • 赞成票除以总票数。这估计了对答案持肯定态度的选民比例,这本身可以说是自然而有意义的。限制。1 个赞成和 0 个反对的答案真的比 8 个赞成和 1 个反对的答案更好吗?

  • 计算置信区间。我想我们可以为每个答案计算一个置信区间,即如果他们投票,他们会投赞成票的真实比例的置信区间。但目前尚不清楚如何将其扩展到完整的排序方案;当两个答案的置信区间重叠时我们该怎么办?

  • 拉普拉斯平滑。我们可以将拉普拉斯平滑(加法平滑)应用于赞成票和反对票的计数,然后估计正面投票的比例。如果我们对答案有个赞成票和个反对票,则其分数将为(例如,这将声明一个有 3 个赞成票和 1 个反对票的答案等同于一个有 1 个赞成票和 0 个反对票的答案。这看起来合理吗?很难说。)ud(u+1)/(u+d+2)

2个回答

我最近了解了贝叶斯评级贝叶斯评分计算此答案的朴素未校正评分和所有答案的平均评分的加权平均值。对这个答案的投票越少,我们对平均评分的权重就越大。直觉是,如果我们对这个答案没有投票,那么平均评分(所有答案)是我们对该答案评分的最佳猜测;随着我们在这个答案上获得更多选票,他们开始将我们的估计偏离平均评级。

该计划显然是这样工作的。一个答案的天真未校正评级是,其中是赞成票数,是该答案的总票数(即,其中是反对票数)。表示未校正的平均评分,对所有答案进行平均,即在所有答案中的平均值。此外,让的平均值r=u/nunn=u+ddrrnn

根据这些定义,答案的贝叶斯评级为,定义如下: 请注意,如果我们对此答案没有投票权,那么(贝叶斯评级是所有答案的平均评级);而作为,我们有(答案的贝叶斯评级收敛到朴素未校正评级,因为答案的投票数变大)。这些看起来很吸引人。r

r=nn+nr+nn+nr.
r=rnrr

如果项目可以被评为 1-5 星而不是赞成/反对,则可以使用的概括,请参阅如何找到评级的置信区间?,文章贝叶斯按等级排序(似乎使用了稍微不同的公式)和贝叶斯评级:您对用户生成内容的拯救

我发现一篇文章(How Not To Sort By Average Rating)认为你应该计算一个 95% 的置信区间来计算那些会投赞成票的人的真实比例,然后按置信区间的下端对评分进行排序。

这是一个有趣的方法。我很难判断这在某种意义上是否是“正确”的做法,但它似乎比一些更天真的替代方案表现得更好。值得注意的是:@raegtin 在回答相关问题时对这种方法提出了中肯的批评。批评的简短版本是,使用置信区间的下限会将评级很少的项目推向非常低的评级,在这种情况下,最好将它们推向所有项目的平均评级(就像贝叶斯评级一样)。