如何平衡评级数量与评级本身?

时间:2010-03-22 20:33:40

标签: algorithm language-agnostic ranking

对于学校项目,我们必须实施排名系统。然而,我们认为一个愚蠢的排名平均值很糟糕:一个用户排名5星的东西会有更好的平均值,188个用户排名4星,这只是愚蠢。

所以我想知道你们中是否有人有“智能”排名的示例算法。它只需要考虑给出的排名和排名的数量。

谢谢!

4 个答案:

答案 0 :(得分:2)

您可以使用受Bayesian probability启发的方法。该方法的要点是对项目的真实评级有一个初步的信念,并使用用户的评级来更新您的信念。

这种方法需要两个参数:

  1. 如果您对该商品没有评分,您认为商品的真正“默认”评级是什么?将此号码称为R,即“初始信念”。
  2. 与用户评分相比,您对初始信念的重视程度是多少?请拨打W,其初始信念是“值”W该值的用户评分。
  3. 使用参数RW,计算新评分很简单:假设您的W评分值为R以及任何用户评分,并计算平均值。例如,如果R = 2W = 3,我们会计算以下各种方案的最终得分:

    • 100(用户)评分为4:(3*2 + 100*4) / (3 + 100) = 3.94
    • 3个等级5和1等级4:(3*2 + 3*5 + 1*4) / (3 + 3 + 1) = 3.57
    • 10评级4:(3*2 + 10*4) / (3 + 10) = 3.54
    • 1评级为5:(3*2 + 1*5) / (3 + 1) = 2.75
    • 没有用户评分:(3*2 + 0) / (3 + 0) = 2
    • 1评级为1:(3*2 + 1*1) / (3 + 1) = 1.75

    此计算考虑了用户评级的数量以及这些评级的值。因此,给定数据,最终得分大致对应于人们对特定项目的期望。

    选择R

    当您选择R时,请考虑您对没有评分的项目假设的价值。典型的无评级项目实际上是2.4分(满分5分),如果你立即让所有人评价它吗?如果是这样,R = 2.4将是一个合理的选择。

    你应该使用此参数的评级量表上的最小值,因为用户评价极差的项目应该比没有评级的默认项目“更差”。

    如果您想使用数据而非直觉选择R,您可以使用以下方法:

    • 考虑至少具有一定用户评分阈值的所有项目(因此您可以确信平均用户评分相当准确)。
    • 对于每个项目,假设其“真实分数”是用户的平均评分。
    • 选择R作为这些分数的中位数。

    如果您希望对无评级项目略微乐观或悲观,您可以选择R作为分数的不同百分位数,例如第60百分位数(乐观)或第40百分位数(悲观情绪) )。

    选择W

    W的选择应取决于典型项目的评分数量以及评分的一致性。如果项目自然获得很多评分,则W可以更高;如果您对用户评分的信心不足(例如,如果您拥有较高的垃圾邮件发送者活动),W应该更高。请注意,W不必是整数,并且可以小于1.

    选择W比选择R更为主观。但是,这里有一些指导原则:

    • 如果典型项目获得C评分,那么W不应超过C,否则最终得分将更多地依赖于R而非实际用户收视率。相反,W应该接近C的一小部分,可能在C/20C/5之间(取决于嘈杂或“垃圾”的评级)。
    • 如果历史评级通常是一致的(对于单个项目),那么W应该相对较小。另一方面,如果某个项目的评分变化很大,那么W应该相对较大。您可以将此算法视为“吸收”异常高或低的W评级,将这些评级转为更温和的评级。
    • 在极端情况下,设置W = 0相当于仅使用用户评分的平均值。设置W = infinity相当于宣布每个项目的真实评级为R,无论用户评分如何。显然,这两种极端都不合适。
    • W设置得太大会产生这样的效果,即对具有较高等级的项目具有许多中等收视率的项目有利。

答案 1 :(得分:0)

由于你已经声明机器只会获得排名和排名数,我认为尝试计算加权方法可能是疏忽的。

首先,有两个未知数来证实这样一个命题,即在足够的情况下,较大数量的评级比较少数量的评级更能表示质量。一个例子是给出了多长时间的排名?对于使用相同方法排名的不同项目,是否有相同的收集持续时间(相同的注意力)?其他人,哪些市场可以访问这个项目,当然,谁具体排名呢?

其次,你在下面的评论中说明这不是用于前端使用,而是“评级是由机器,机器生成的”,作为对我的评论的回应,“它不一定只是一个人可能会考虑50个评级,对另一个人来说可能不够。而一些评估者的个人资料对一个人而言可能看起来比另一个人更可靠。当这个透明时,它可以让用户做出更明智的评估。

为什么机器会有所不同? :)

在任何情况下,如果这是关于机器对机器的排名,那么问题需要更多细节,以便我们了解不同机器如何生成和使用排名。

机器生成的排名是否有缺陷(以便建议更多的排名可能以某种方式弥补那些“有缺陷”的排名?这甚至意味着什么 - 是机器错误?还是因为该项目没有例如,在这个特定的机器上使用?我们可能首先要解压许多问题,包括如果我们可以访问机器如何生成排名,在某种程度上我们可能已经知道这个项目可能对此有什么意义机器,使得汇总排名变得多余。

答案 2 :(得分:0)

你可以在不同的平台上找到的是没有足够投票的消息评分:“这个项目没有足够的投票”
问题是你不能用一个简单的公式来计算排名。

我建议隐藏排名低于最低投票数,但实际上是移动平均线。我总是更喜欢移动平均线与总平均值之间的比较,因为它更喜欢上次投票时针对非常古老的投票,这些投票可能会针对不同情况给出。
此外,您不需要添加所有投票的列表。你只需要计算平均值,下一次投票就会改变这个值。

newAverage = weight * newVoting + (1-weight) * oldAverage

对于最后20个值的偏好,权重约为0.05。 (只是试验这个重量)

此外,我将从这些条件开始:
没有投票=中等范围值(1-5星=>以3星开头)
如果投票少于10次,则不会显示平均值。

答案 3 :(得分:-2)

一个简单的解决方案可能是加权平均值:

sum(votes)/ number_of_votes

这样一来,3人投票1星,1人投票5,加权平均值为(1 + 1 + 1 + 5)/ 4 = 2星。

简单,有效,可能足以满足您的目的。