什么是"加权"评级算法?

Jos*_*off -1 algorithm math rating-system

我正在研究实施星级评定系统的代码,允许用户评价1到5星.它不是显示项目的实际评级,而是使用此算法:

( rating_votes / ( rating_votes+10 ) ) * ( rating_total/rating_votes ) ) + ( 10 / ( rating_votes+10 ) ) * 4
Run Code Online (Sandbox Code Playgroud)

基于我的直觉,似乎这样做的目的是将评级默认为"4星",并且在不到10票的情况下不会过快地降低评级.

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

Sne*_*tel 6

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

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


Tom*_*mmy 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)
Run Code Online (Sandbox Code Playgroud)

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

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