我有一个用户在1到5之间得分的音乐项目 我需要一个公式来获得5个最得分的项目。
但显然,从1000个不同用户获得3.5平均分的项目将获得更多得分,然后一个项目从仅5个用户获得4.9平均分数...换句话说我认为如果项目得到人们的注意得分它,这表明该项目很有趣。所以在计算中,votesCount参数需要有权力。 (多少力量?我不确定,我要求你得到想法)。
我认为我们在函数中需要以下参数:votesAverage,votesCount。
答案 0 :(得分:28)
您可以使用贝叶斯估算来计算加权投票。
IMDb(互联网电影数据库)使用此计算来确定其IMDb Top 250. (注意:IMDb使用10颗星,但使用5颗星的公式相同)。
计算最高评级250标题的公式给出了真正的贝叶斯估计:
加权等级(WR)=(v÷(v + m))×R +(m÷(v + m))×C
其中:
- R =电影的平均值(平均值)=(评级)
- v =电影的投票数=(投票)
- m =需要列入前250名(目前为3000名)的最低票数
- C =整个报告的平均投票数(目前为6.9)
答案 1 :(得分:8)
如果你真的想以正确的方式去做,那么reddit评分算法可能是最好的选择。它是explained in detail here和a high level by xkcd author Randall here。
问题在于它并不适用于五星评级,这正是您的目标。您应该能够概括reddit的排序系统以使用评级。哎呀,它可能已经在某个地方完成了。我要去找它。
答案 2 :(得分:6)
平衡系统的一种简单方法是添加固定数量的假设用户(比如计数为H),他们都投票支持所有部分的长期平均值A.说平均值是3;然后公式变为
得分=(votesCount x votesAverage + H x A)/(votesCount + H)
现在,当投票数量增加时,假设的平均选民的相对影响力会减弱。
您可以通过实验设置H,或者通过思考来设置H.例如。如果你认为20票足以建立相对较强的评级,你可以设置H = 5。说。
答案 3 :(得分:0)
我按照方法使用我的音乐文件:
评级以百分比(0-100)衡量 未评级的歌曲可获得50%的礼物 每当有人为一首歌投票时,其评级就会增加 每当有人投票反对这首歌时,它的评级就会下降 如果歌曲评级高于MAX(100),则MAX设置为当前歌曲评级 如果歌曲评级低于MIN,则MIN设置为歌曲评级 在每次改变MIN或MAX的投票之后,我正在为列表中的每首歌做标准化,如:
NewRating =(CurrentRating - MIN)* 100 /(MAX -MIN)然后我将MIN设置为0,MAX设置为100.
此方法为新旧歌曲提供了相同的机会,可以快速获得正确的评分。每一次对最佳和最差歌曲的投票都会影响其他人,我也认为这是正确的事情。
当选择要播放(或投票)的歌曲时,我会生成0-100范围内的随机数,并搜索评级等于或高于此数字的下一首歌。
糟糕的歌曲很少被选中,选择很少,优秀的歌曲会更频繁地被选中,但我仍然有机会在将来的某个时间播放(投票)最糟糕的歌曲。
答案 4 :(得分:-1)
这个术语是bayesian estimate。
一个常见的例子:
贝叶斯评级=
(v*R + m*C)/(v+m)
其中:
R =歌曲的平均评分
v =歌曲的票数
m =需要列出的最低票数(例如10)
C = 所有歌曲的平均投票次数