基于票数和 5 星级评级的对象评级算法

发布于 2024-10-19 01:57:11 字数 374 浏览 0 评论 0原文

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

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

相反,例如,信任具有 500 个用户评级且得分为 4.8 的对象比信任具有 1000 个用户评级为 4.5 的对象要可靠。

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

I'm creating a site whereby people can rate an object of their choice by allotting a star rating (say 5 star rating). Objects are arranged in a series of tags and categories eg. electronics>graphics cards>pci express>... or maintenance>contractor>plumber.

If another user searches for a specific category or tag, the hits must return the highest "rated" object in that category. However, the system would be flawed if 1 person only votes 5 stars for an object whilst 1000 users vote an average of 4.5 stars for another object. Obviously, logic dictates that credibility would be given to the 1000 user rated object as opposed to the object that is evaluated by 1 user even though it has a "lower" score.

Conversely, it's reliable to trust an object with 500 user rating with score of 4.8 than it is to trust an object with 1000 user ratings of 4.5 for example.

What algorithm can achieve this weighting?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

一身骄傲 2024-10-26 01:57:11

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

You can use the Bayesian average when sorting by recommendation.

鸠书 2024-10-26 01:57:11

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

I'd be tempted to have a cutoff (say, fifty votes though this is obviously traffic dependent) before which you consider the item as unranked. That would significantly reduce the motivation for spam/idiot rankings (especially if each vote is tied to a user account), and also gets you a simple, quick to implement, and reasonably reliable system.

野生奥特曼 2024-10-26 01:57:11
simboid_function(value) = 1/(1+e^(-value));

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

rating = simboid_function(number_of_voters) + simboid_function(average_rating);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文