【发布时间】:2015-06-14 13:35:09
【问题描述】:
我正在制作一款涉及人们下载和评价用户创建的地图的游戏。如果他们喜欢/不喜欢地图,他们可以选择赞成/反对地图,并以 1-10 的等级对其难度进行评分。
在地图浏览器中,他们可以选择按最高评分对地图进行排序。这是使用Laplace smoothing 完成的,因此它将赞成票的数量和评分总数纳入排序,按(upvotes + 1)/(numRatings + 2) 排序。这很好用。
现在,还有一个按首选难度排序的选项,人们可以在 1-10 之间选择一个值,它会按照平均难度等级与首选等级的接近程度对地图进行排序。起初我是按ABS(preferred_difficulty - average_difficulty) 排序的,但这并没有考虑到评分的数量。现在我使用((numRatings + 1) * (10 - ABS(average_difficulty - preferred_difficulty)) + 1) / (numRatings + 1.5) 是出于纯粹的反复试验,这有点效果,但有时评分的数量超过了首选难度,结果看起来很奇怪。
这是我需要帮助的问题 - 在将评分数量纳入组合时,我无法弄清楚如何按首选难度和平均难度之间的最小差异进行排序,因为我想要一个具有高评分计数的低难度增量成为最好的结果,而不是像收视率那样获得高评分数的高票数。
例如,如果这是数据:
AvgDifficulty NumRatings
6.0 1
4.0 25
6.8 4
6.2 3
6.5 20
6.2 1
6.4 3
并且有人选择了 6.4 的首选难度,我希望它排序如下:
AvgDifficulty NumRatings
6.5 20
6.4 3
6.2 3
6.8 4
6.2 1
6.0 1
4.0 25
基本上,我希望结果接近顶部的首选难度,但我宁愿显示有很多评分的 0.1 分的结果,而不是只有很少评分的完全匹配的结果。我知道在这种情况下获得“正确”的结果可能不是很具体,我只是在寻找一个起点。
感谢您的帮助!
【问题讨论】:
-
请编辑您的问题并提供示例数据和所需结果(在问题的表格结构中)。这么长的解释没有例子很容易让人误解。
-
@GordonLinoff 添加了一个示例。