简单加权评级值



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

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

我遇到的问题是,应该根据你的评分来进行加权一家俱乐部可能会获得5(5.0)的评级,最终排名榜首,而一家俱乐部的评级为16K,平均评级为5.0

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

目前我的算法是:

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

这不包含权重算法

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


假设0k100k是实际范围。(A_lower to 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

编辑

更多解释

如果存在分布在较大范围内的值,并且我们希望在较小范围内表示它们,则我们进行归一化。

Q)什么是归一化值

如果实际范围(0到100)稍小(0到5),则该值将表示实际值(25k)的确切位置。

Q)为什么我要将标准化范围除以实际范围,然后乘以实际评级

为了理解这一点,让我们使用一点酉方法逻辑。

当范围为0 to 100时,您有一个值25,并且想要知道如果范围是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。你可以选择你想要的任何范围。

简单地添加一个很小的值加权的评级数怎么样?这只是一个非常基本的想法:

(俱乐部评级总和)/(评级总数)+0.0000000 1*(俱乐部评级数)

通过这种方式,平均水平相同的俱乐部可以根据评级数量进行排名。

最新更新