简单的加权评级值

时间:2015-11-06 16:24:12

标签: algorithm weighted-average

我有一个由俱乐部组成的数据库,以及人们为他们提供的评分。

目前,我正在根据俱乐部执行平均评分,然后按降序对这些平均值进行排序,以获得评分最高的俱乐部列表。

我遇到的问题是应根据您拥有的评分数量进行一些加权。 一个俱乐部可能会获得5(5.0)的评分,并最终排在榜单的顶部,对抗一个拥有16K评级且平均评分为5.0的俱乐部。

我正在寻找的是算法,该算法会考虑评级数量,以确保我们使用加权算法查询数据,该算法会考虑评级数量。

目前我的算法是:

(sum of club ratings)/(total number of ratings) to give me the average

这不包含权重算法

2 个答案:

答案 0 :(得分:0)

让我们假设您的评分可以从0k变为100k(正如您所说,某些俱乐部的评分为16k)。现在,您希望将其标准化为0k5k的范围。

让我们说0k100k是实际范围。 (A_lower到A_higher)

并且,0k5k是标准化范围。 (N_lower到N_higher)

您希望将16k(即A_rating(实际评分))更改为标准化值N_rating(介于0 to 5k之间)。

您可以使用的公式

N-rating = A_rating * ( (N_higher - N_lower) / (A_higher - A_ lower) )

让我们举个例子。

如果实际评分为25k。实际评级的范围是0 to 100k。并且您希望它在0 to 5k之间进行标准化。然后

N-rating = 25 * ( (5 - 0) / (100 - 0) )
=> N_rating = 1.25

修改

再解释一下

我们normalization,如果有大范围传播的值,我们希望将它们表示在较小的范围内。

问:什么是标准化值。

如果实际范围(0到100)稍微小一点(0到5),那么该值将代表实际值(25k)的确切位置。

问:为什么我将标准化范围除以实际范围,然后乘以实际评级。

要理解这一点,让我们使用一些单一的方法逻辑。

当范围为25时,您有一个值0 to 100,并且如果范围为0 to 5,则想知道该值的标准化值。所以,

//We will take already known values, the highest ones in both the ranges
100 is similar to 5 //the higher value of both the ranges
//In unitary method this would go like
If 100 is 5

//then 

1 is (5 / 100)

//and

x is x * (5 / 100) //we put 25 in place of x here

Q)为什么选择0到5k作为标准化范围。

我选择是因为您提到您的评分应低于5k。您可以选择任何您想要的范围。

答案 1 :(得分:0)

如果简单地添加一个非常小的价值加权等级呢? 这只是一个非常基本的想法:

(分数总和)/(评分总数)+ 0.00000001 *(分数评分数)

这样,具有相同平均值的俱乐部按评分数排名。