如何计算评分?

时间:2012-05-16 05:39:25

标签: rating

我的问题更具数学性。网站上有一个帖子。用户可以喜欢也不喜欢它。在帖子下面写的是例如-5不喜欢和+23喜欢。在这些值的基础上,我想要在0-10或(-10-0和0-10)范围内进行评级。如何正确使用?

3 个答案:

答案 0 :(得分:5)

这可能无法解答您的问题,因为您需要在[-10,10]之间进行评分,但this blog post描述了为有正面和负面评分的项目提供分数的最佳方式(在您的情况下,喜欢和不喜欢)。

这样的简单方法
  • (正评级) - (负评级)或
  • (正评级)/(总评分)

不会给出最佳效果。

相反,他使用的方法称为二项式比例置信区间

博文的相关部分复制如下:

  

正确解决方案:得分=伯努利参数的Wilson得分置信区间的下限

     

说什么:我们需要平衡积极评级的比例和少量观察的不确定性。幸运的是,这一算法在1927年由Edwin B. Wilson制定。我们想要问的是:鉴于我的评分,有正数评分的“真实”部分至少有95%的可能性? Wilson给出答案。仅考虑正面和负面评级(即不是五星级),正面评级比例的下限由下式给出:

formula http://www.evanmiller.org/rating-equation.png

  

(使用负号表示正/负来计算下限。)这里p是观察到的正评级分数,zα/ 2是标准正态分布的(1-α/ 2)分位数,n是评分的总数。

这是在Ruby中实现的,再次来自博客文章。

require 'statistics2'

def ci_lower_bound(pos, n, confidence)
    if n == 0
        return 0
    end
    z = Statistics2.pnormaldist(1-(1-confidence)/2)
    phat = 1.0*pos/n
    (phat + z*z/(2*n) - z * Math.sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)
end

答案 1 :(得分:2)

这听起来像你想要的基本上是喜欢/不喜欢的百分比。我会做0到10,而不是-10到10,因为这可能会令人困惑。因此,在0到10的范围内,0将是“所有不喜欢”,10将是“全部喜欢”

total_votes = num_likes + num_dislikes;
rating = round(10*num_likes/total_votes);

基本上就是这样。

答案 2 :(得分:2)

这是Shepherd答案的延伸。

total_votes = num_likes + num_dislikes;
rating = round(10*num_likes/total_votes);

这取决于您应用的访问者数量。让我们假设您希望约有100位用户评价您的应用。当第一个用户点击不喜欢时,我们会根据上述方法将其评为0。但这在逻辑上并不正确..因为我们的样本非常小,使其为零。同样只有一个积极的 - 我们的应用获得10评级。

更好的方法是为分子和分母添加一个常量值。让我们说如果我们的应用程序有100个访问者,可以安全地假设,直到我们获得10次上升/下降,我们不应该走极端(0和10评级)。所以每个喜欢和不喜欢加5。

num_likes = num_likes + 5;
num_dislikes = num_dislikes + 5;
total_votes = num_likes + num_dislikes;
rating = round(10*(num_likes)/(total_votes));