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

Algorithm 如何实现二进制评分系统的贝叶斯平均算法,algorithm,bayesian,Algorithm,Bayesian,我有一个系统,人们可以向上或向下投票一个项目,我想把结果显示为5星级 我一直在尝试使用贝叶斯评级算法解释,但没有成功 例如:我的数据库中有三项(A、B和C): A=500张赞成票和500张反对票 B=0票赞成,1000票反对 C=0票赞成,1000票反对 如何计算每个项目的贝叶斯平均评分,使其得分在1到5分之间?简单代数: AvgVotes=所有投票的总和/所有项目的总和 AvgRating=所有项目的投票总数*5/所有投票总数 CurVotes=当前项目的投票数 当前项目票数=当前项目票数总和

我有一个系统,人们可以向上或向下投票一个项目,我想把结果显示为5星级

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

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

A=500张赞成票和500张反对票 B=0票赞成,1000票反对 C=0票赞成,1000票反对

如何计算每个项目的贝叶斯平均评分,使其得分在1到5分之间?

简单代数:

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

AvgRating=所有项目的投票总数*5/所有投票总数

CurVotes=当前项目的投票数

当前项目票数=当前项目票数总和*5/当前项目票数

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

((AvgVotes*AvgRating)+(CurVotes*CurRating))*5/总票数

所以插入你的数字来评估一个

AvgVotes=1000

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

CurVotes=1000

电流=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

这篇博客文章准确地描述了你的情况,以及如何使用一个解决方案。Reddit效果良好。

可能重复我将我的评论移到上面编辑的帖子中,以便于阅读。为了节省其他人的时间,这不适用于五星评级,仅适用于正面/负面评级。