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

zne*_*eak 11 language-agnostic algorithm ranking

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

所以我想知道你们是否有一个"智能"排名的示例算法.它只需要考虑给出的排名和排名的数量.

谢谢!

pkp*_*pnd 8

您可以使用受贝叶斯概率启发的方法。该方法的要点是对项目的真实评分有一个初步的信念,并使用用户的评分来更新您的信念。

这种方法需要两个参数:

  1. 如果您根本没有对该商品进行评分,您认为该商品的真正“默认”评分是多少?称这个数字R为“最初的信念”。
  2. 与用户评分相比,您对初始信念的重视程度如何?称之为W,其中最初的信念是“值得”W该值的用户评级。

使用参数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太大可能会导致具有许多中等高评分的项目优于具有略微较少的极高评分的项目。