14

我正在创建一个网站,人们可以通过分配星级(比如 5 星级)来对他们选择的对象进行评分。对象排列在一系列标签和类别中,例如。电子>显卡>pci express>...或维护>承包商>水管工。

如果另一个用户搜索特定类别或标签,则命中必须返回该类别中“评级”最高的对象。但是,如果 1 个人只为一个对象投票 5 星,而 1000 个用户平均为另一个对象投票 4.5 星,则该系统将存在缺陷。显然,逻辑规定可信度将给予 1000 个用户评级的对象,而不是由 1 个用户评估的对象,即使它具有“较低”分数。

相反,信任一个拥有 500 个用户评分且得分为 4.8 的对象比信任一个拥有 1000 个用户评分为 4.5 的对象更可靠。

什么算法可以实现这种加权?

4

4 回答 4

10

这个问题的一个很好的答案在这里: http ://www.evanmiller.org/how-not-to-sort-by-average-rating.html

于 2011-02-23T20:57:49.753 回答
3

按推荐排序时可以使用贝叶斯平均值。

于 2011-02-23T21:15:12.317 回答
2

我很想有一个截止(例如,50 票,尽管这显然取决于流量),在此之前您认为该项目未排名。这将显着降低垃圾邮件/白痴排名的动机(特别是如果每​​张投票都与用户帐户相关联),并且还可以为您提供一个简单、快速实施且相当可靠的系统。

于 2011-02-23T20:58:07.703 回答
1
simboid_function(value) = 1/(1+e^(-value));

rating = simboid_function(number_of_voters) + simboid_function(average_rating);
于 2017-05-13T13:11:16.770 回答