2011-02-23 21 views
14

我创建一个网站,人们可以通过分配星级评分(比如5星评级)来评定他们选择的对象。对象排列在一系列标签和类别中,例如。电子产品>图形卡> pci express> ...或维护>承包商>水管工。基于投票数量和五星级评分对象的算法

如果其他用户搜索特定类别或标签,则匹配必须返回该类别中的最高“额定”对象。然而,如果一个人只为一个物体投票5星而1000个用户投票平均为另一个物体的4.5星,那么这个系统就会有缺陷。很明显,逻辑规定可信度将被赋予1000个用户评分对象,而不是1个用户评估的对象,即使它具有“较低”分数。

相反,信任具有500分用户评分和4.8分的对象比信任具有例如1000用户评分4.5的对象更可靠。

什么算法可以实现这个权重?

+0

没有一个很好的答案给你,我会说一个被1000个用户评分的对象比仅有500个评分的对象吸引了更多的注意力,不管评分是什么。 – 2011-02-23 21:06:53

+0

另一个观察结果:对一切评分为3,4或5的人的4星评级比使用整个范围的人的评分低4星评级。 – 2011-02-23 22:20:22

+0

相关:http://fulmicoton.com/posts/bayesian_rating/ – Palec 2014-12-23 16:31:21

回答

10

一个伟大的回答这个问题是在这里: http://www.evanmiller.org/how-not-to-sort-by-average-rating.html

+3

+1 - 尼斯。尽管如此,页面上的公式“只考虑正面和负面的评级(即不是五星级)”。任何想法如何将其扩展到五星评级? – Justin 2011-02-23 21:24:11

+0

将5星标记为1,1star标记为0,插入其余标记。将正面评分的观察分数更改为平均评分。但是,这会抛弃有关评级分布的信息 - 它仅使用平均数和总数,我不知道如何考虑这一点,但可能并不重要。 – drewrobb 2011-02-23 22:32:06

+0

我不认为威尔逊区间是这样工作的。它设计用于二项变量(即:仅有两个结果)。当你比较小尺寸时,这些细节确实很重要。 – mhum 2011-02-24 04:19:37

2

我会被诱惑的截止(比方说,五票尽管这显然是依赖于流量)您认为该项目为其中便陷入困境之前。这将显着降低垃圾邮件/白痴排行榜的动机(特别是如果每​​次投票都与用户帐户绑定),并且还可以帮助您实现简单,快速的实施和合理可靠的系统。

3

按推荐排序时,您可以使用Bayesian average

+0

你能否添加更多信息?在Wikipedia上似乎很模糊:“请注意,纳入平均值计算中的附加信息[可以是由计算相关平均值并为计算目的服务的人主观确定的值。” – Justin 2011-02-23 21:26:07

+1

我同意它的写作方式过于普通。可能最简单的解释是,你无形地开始每个对象的平均值附近的一堆评级值。你不需要计算实际的平均值,你可以任意选择它,它仍然有效。 – jprete 2011-02-23 22:13:28

1
simboid_function(value) = 1/(1+e^(-value)); 

rating = simboid_function(number_of_voters) + simboid_function(average_rating); 
+0

请提供关于您的解决方案的一些解释! :) – 2017-05-13 17:47:33