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票的情况下不会过快地降低评级.
有谁知道这个算法的数学名称是什么?它的实现也可以简化并仍然产生相同的输出吗?
这被称为"贝叶斯平均值",是加性平滑的变体.基本的想法是,您预先加载一个新的估算器,预先估计"实际"平均值可能是什么,然后将额外的投票添加到现有证据中.这意味着需要大量投票来平均上调或下调.
是的,它的实现可以简化.有关基本公式,请参阅https://en.wikipedia.org/wiki/Bayesian_average.
我有:
(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'.
除了整数舍入,根据您的语言,简化应该产生相同的结果.