5

所以我只是建立了一个星级评分系统,并试图提出一种算法来列出“评分最高”的项目。为简单起见,以下是列:

item_name
average_rating (a decimal from 1 to 5)
num_votes

我试图确定票数和评级之间的“最佳位置”。例如...

  • 评分(4.6 / 20 票)的项目在列表中应该高​​于(5.0 / 2 票)的项目
  • 评分(2.5 / 100 票)的项目应低于(4.5 / 2 票)的项目

所以换句话说,num_votes在什么是“Top”中起着重要作用。

任何人都知道一种非常擅长确定这个“最佳位置”的算法吗?

提前致谢。

4

3 回答 3

10

这是另一种在统计上听起来不错的方法:http ://www.thebroth.com/blog/118/bayesian-rating

于 2009-09-16T15:12:57.783 回答
3

问题是,4.6/20 的评分应该比 5.0/2 高多少……

不考虑至少没有 x 票的项目的想法。

另一个想法是填写“中等”选票。决定最少 10 票。5.0/2 必须填满 2.5 的 8 个虚拟投票

5.0/2 表示 2 票加 5.0,加 8 加 2.5 你将得到 30/10 -> 3.0 ;)

现在,你必须决定一个项目至少应该有多少票。对于已经获得最低票数的,进行直接比较。

4.5/20 > 4.4/100
5.0/2  < 3.1/20  (as 5.0/2 is, as we calculated, 3.0/10)
于 2009-09-16T14:48:56.113 回答
2

你给每 10 票赋予 1 权重怎么样,所以 20 票赋予项目 2 权重。然后,如果该项目的重量为 0,它将比平均重量减轻 0.5

4.6/20 = 20/10: 2 weight
5.0/2 = 2/10: 0 weight

(4.6 * 0.02) + 4.6 = 4.692
(5.0 * 0.00) + 5.0 = 5 - 0.5 = 4.5

2.5/100 = 100/10: 10 weight
4.5/2 = 2/10: 0 weight

(2.5 * 0.1) + 2.5 = 2.75
(4.5 * 0.0) + 4.5 = 4.5 - 0.5 = 4
于 2009-09-16T15:21:57.343 回答