加权平均和评分

4

数学不是我的强项,我在这里感到困惑。

基本上,我需要一个简单的公式,可以在1到5的评分范围内给出加权评分。如果投票人很少,他们的影响力会减少,评分会更趋向于平均值(在这种情况下,我希望它是3,而不是所有其他评级的平均值)。

我尝试了一些贝叶斯实现,但这些并没有成功。我相信我正在寻找的图形表示可以显示为:

     ___
    /
___/

干杯


1
我认为这个问题很适合http://mathoverflow.net/。 - Leniel Maccaferri
你可能也想尝试一下Netflix Prize论坛。 - dan04
我不会在mathoverflow.net上期望得到答案,因为那是一个科学论坛。 - Tomek Tarczynski
其他人可能会对 http://buildingreputation.com/writings/2009/08/low_liquidity_compensation_for.html 感兴趣,这对我没有起作用,但仍然很有用。 - Danten
2个回答

5
我会这样做
1*num(1) + 2*num(2) + 3*num(3) + 4*num(4) + 5*num(5) + A*3
-----------------------------------------------------------
      num(1) + num(2) + num(3) + num(4) + num(5) + A

其中num(i)是i的票数。
A是一个参数。我不能告诉您确切的值。它取决于您对“少数票”有什么看法。一般来说,A值越高,意味着您需要更多的票才能得到平均值不等于3,而A值较低则意味着您只需要很少的票就可以得到不同于3的值。

如果您认为5票是“少数票”,那么您可以取A=5。

在这个解决方案中,我假设每个产品从A票开始,而不是没有票。

希望这能帮到您。


正是我想要的。非常感谢! - Danten

1
(sum(ratings) / number(ratings)) * min(number(ratings), 10)/max(number(ratings), 10)

第一部分是未经归一化的平均评分。第二部分将随着个人评分数量增加到10而逐渐将评分提高至5。问题不够清晰,我无法提供更好的答案,但我相信上述公式可能是您可以开始并根据实际情况进行调整的内容。毫无疑问,您必须检查是否有任何评分(以免除以零)。


在当前状态 (sum(ratings) / number(ratings)) * min(number(ratings), 10)/max(number(ratings), 10) 下,该公式还无法使用,它存在一个变量比例因子问题。在我看来,它似乎缺少双组件以在(原平均值、范围中间)之间保持平衡。第一部分是原始平均值 (sum(ratings) / number(ratings)),第二部分是可变比例因子 min(number(ratings), 10)/max(number(ratings), 10)。让我们看几个例子:1 票获得评分 1,结果为 0.1!;100 票获得评分 5,结果为 0.5!只有 10 票获得因子 1.0 并产生原始平均值的结果。 - user.dz
如果有人对它的工作原理感兴趣,这里有一个提示:尝试绘制该因子函数的图形,min(x,10)/max(x,10);当x<=10时,它是x/10,当x>=10时,它是10/x - user.dz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接