首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何实现二进制评级系统的贝叶斯平均算法

如何实现二进制评级系统的贝叶斯平均算法
EN

Stack Overflow用户
提问于 2010-07-01 22:17:24
回答 2查看 7.1K关注 0票数 9

我有一个系统,在那里人们可以投票赞成或反对一个项目,我想将结果显示为5星评级。

herehere解释说,我一直在尝试使用贝叶斯评级算法,但没有成功。

例如:我的数据库中有三个项目(A、B和C):

A= 500上升和500下降投票B=0上升和1000下降投票C=0上升和1000下降投票

如何计算每个项目的贝叶斯平均评分,使其在1到5的范围内获得分数?

EN

回答 2

Stack Overflow用户

发布于 2010-07-01 22:57:21

这篇名为How Not To Sort By Average Rating的博客文章准确地描述了您的情况,以及如何使用Wilson Score confidence interval解决它。Reddit used this效果很好。

票数 7
EN

Stack Overflow用户

发布于 2010-07-01 22:57:04

简单代数:

AvgVotes =所有投票的总和/所有项目的总和

AvgRating =所有项目的最高票数总和*5/所有票数总和

CurVotes =当前项目的票数

CurRating =当前项目的最高票数* 5/当前项目的票数

TotalVotes =所有票数总和+当前项目的票数总和

((AvgVotes * AvgRating) + (CurVotes * CurRating)) *5/ TotalVotes

所以输入你的数字来评估A的权重。

AvgVotes = 1000

AvgRating =0(请记住,在此计算中不要包括要评估的项目的数字)

CurVotes = 1000

CurRating = 500 *5/ 1000 = 2.5

总票数= 2000 + 1000 = 3000

(1000 * 0) +(1000* 2.5)) *5/ 3000 = 4.166

我忘了补充,不要在上面的任何计算或总和中包括任何没有选票的项目,否则会抛出权重。

编辑-简化的解决方案:

我应该注意到,对于这个问题有一个可以执行的简化解决方案。我只是为了理解而演示了手写形式。压缩算法如下所示:

定义:

SET =投票大于零的与当前评估目标无关的任何内容。

TARGET =当前正在尝试计算的元素

25*(设置票数总和)/(设置项目总和))+(目标票数总和))/(目标票数总和+设置票数总和)

再次输入您的数字评估'A‘,以澄清和证明:

(25*((0/2)+500)) / (1000+2000) = 4.166

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3158635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档