什么是“加权”评级算法?

时间:2014-05-27 23:01:26

标签: algorithm math rating-system

我正在开发实施星级评分系统的代码,允许用户在1&之间进行评分。 5星。它不是显示项目的实际评级,而是使用此算法:

( rating_votes / ( rating_votes+10 ) ) * ( rating_total/rating_votes ) ) + ( 10 / ( rating_votes+10 ) ) * 4

基于我的直觉,似乎这样做的目的是将评级默认为" 4星"并且在10票以下时不要太快降低评级。

有谁知道这个算法的数学名称是什么?它的实现也可以简化并仍然产生相同的输出吗?

3 个答案:

答案 0 :(得分:6)

这被称为“贝叶斯平均值”,是加性平滑的变体。基本的想法是,您预先加载一个新的估算器,预先估计“实际”平均值可能是什么,然后将额外的投票添加到现有证据中。这意味着需要大量投票来平均上调或下调。

是的,它的实现可以简化。有关基本公式,请参阅https://en.wikipedia.org/wiki/Bayesian_average

答案 1 :(得分:6)

我得到了:

(rating_votes / ( rating_votes +10 )) * ( rating_total / rating_votes ) + 
( 10 / ( rating_votes +10 ) ) *4 

= (rating_total / (rating_votes + 10)) + (40 / (rating_votes + 10))

= (rating_total + 40) / (rating_votes + 10)

......你似乎错过了一个开场支架,但这是你的意思吗?如果是这样,那么你的直觉是正确的 - 它假装有10个人投了票#4;' 4'在其他人跳入之前。

除了整数舍入之外,根据您的语言,简化应该会产生相同的结果。

答案 2 :(得分:4)

你是对的 - 最终评级可以改写为

final = (1-f) * rating + f * 4

因素f决定"实际"评级很重要"默认" 4

现在你必须说服自己f可以写成

f =  10 / (votes + 10)