1

我有一个 PHP 评分系统 (1-5),其中一些评委会对一些产品进行评分。我希望这些产品的结果是公平的。通常情况下,一些评委非常严格,可能只会在 1-2 的范围内对产品进行评分。而一些评委只在 4-5 的范围内对产品进行评分。有些人在 1-5 之间做出正确判断。

有人可以提出想法或帮助为平均评委创建一种算法,该算法可以衡量评委的评分并计算产品分数。

我想对所有产品的评委分数取平均值,但这是前进的道路,或者有些人有另一种很好的选择来获得公平的结果。

编辑

评级系统不适用于电子商务应用程序。这里只有少数评委说 10 人对所有产品进行评分。例如,产品可以是比赛中的歌曲。一些法官可能非常严格,而另一些则非常自由。可能有几场比赛,所以我必须记录这些非常严格和自由的评委,即使是其他比赛,也必须为他们制定规则。

4

3 回答 3

0

截断均值怎么样?是对这个想法的一个很好的解释。

编辑

假设您有如下投票:[1,4,3,2,5,1,1,3,2,4].

您需要按升序对数组进行排序,给您:[1,1,1,2,2,3,3,4,4,5]

然后假设你想去掉 25% 的选票,也就是3(四舍五入)。你只需从左边和右边丢弃三张选票,给你[2,2,3,3]

然后,使用算术平均得到2.5

编辑 2

根据您的数据库架构,您可以查询数据库以按升序返回投票。然后,计算百分比,用于array_slice()帮助您(阅读文档),计算算术平均值是您现在最不关心的问题。

于 2012-04-17T20:41:31.857 回答
0

简单地说,你根据他们的典型投票范围为法官分配一个权重(注意,他们一定不知道这个权重,否则他们会破坏系统。)总是投票给单一分数的法官得到最低的权重. 给出广泛分数的裁判被认为更准确。

这也假设这些法官以公平的质量判断产品;因此,如果你给他们一堆好或坏的产品,并期望有一定范围的投票水平,那可能是不现实的。

您正在寻找的是具有最高权重的选票中标准偏差(最大变化)的法官,而最低的法官将拥有最少的选票。

非算法解决方案(本质上)是在评委身上运行算法,然后选择美国偶像风格的评委,让他们相互平衡以获得感觉上准确的结果。在这种情况下,您需要注意平均投票以及标准差,并且可能设置三位评委,一位标准差较宽,然后两位窄,一位高一位低(自由和严格)进行评判它。通过这种方式,他们不会因为他们更严格或更宽松而觉得自己“声音小”。

再说一次,这可能是他们减少/更严格的动力——如果他们对产品太容易或太苛刻,他们就会“失去声音”。

于 2012-04-17T20:41:42.437 回答
0

听起来您可能正在尝试将算法解决方案应用于非算法问题。我会思考为什么有些“法官”只投 1-2 票,而其他“法官”只投 4-5 票。

一个可能的原因可能是自我选择。例如,在线购买商品的人如果对购买特别失望或特别满意,他们可能更有可能评论该商品。如果这是您的问题,您可以尝试鼓励购物者更多地投票,这样即使是那些有非极端经验的人也会回来投票。

另一个可能的问题可能是指导。评委们可能不清楚您对评分系统的解释。您可以尝试添加对每个评分含义的描述,看看这是否会提高数据质量。

总而言之,任何类型的评分问题解决方案都需要有一个“人”的成分,并考虑到评委如何选择评分以及为什么选择评分的全部故事。如果您的输入数据质量较差,排名算法将无能为力。另一方面,如果您的数据质量不错,那么取平均值效果很好。

取平均值的一个不相关的问题是,一个 5 星评级的项目将排在一个拥有 100 个 5 星评级 + 一个 4 星评级的项目之上。一个简单的解决方案是拉普拉斯平滑法,它通过有效地启动每个项目来解决这个问题,每个值(1、2、3、4、5)的一票。您不显示“平滑”值,但在排序时使用它们。请参阅如何不按平均评分排序帖子以获取替代解决方案。

于 2012-04-17T20:34:26.337 回答