我有一个新闻系统,你可以给新闻打1到5星。在数据库中,我将计数、总和和绝对评级保存为int,最多为100 (对于html输出,因此5星将是100,1星将是20%。现在我有三个排行榜:最佳收视率最多评论
后两个很简单,但第一个有点棘手。在我接过这件事之前,这一切都是一团糟,他们只是把5条评分最高的新闻放在那里,所以实际上,如果有一条新闻的评分是4.995,有10万张选票,另一条新闻是5星,有1张票,那么“评级更高”的新闻就会位居榜首,即使这是可笑的。在第一个时刻,我设置了列表的上限,因此只有获得一定票数(如10或20)的新闻才能出现在列表中。
但我真的不喜欢这样。有没有一种很好的方法--用计数或类似的东西给这些东西一个“权重”?
发布于 2009-07-10 10:15:35
你有没有考虑过使用weighted bayesian rating system?它将根据投票数量和投票值本身对结果进行加权。
发布于 2009-07-10 10:06:53
您可以探索评分的统计置信度,可能基于所有条目收到的平均评分和所有选票的标准差。虽然一个条目的平均评分为5,但如果你只有几张选票,那么你可能无法以超过90%的置信度说实际评分高于4.7。然后,您可以根据您对其具有90%置信度的评分对条目进行评分。
我不确定这是否符合你对简单的要求。
发布于 2009-07-10 10:21:01
您可以使用用户评分的中位数作为总评分。eatch文章有5个字段,每个字段包含文章被评为n星的次数。然后您将选择所有这些字段中具有最大值的字段,这将是您的评分。它的优点是可以忽略评级中的异常值。
https://stackoverflow.com/questions/1108717
复制相似问题