PHP / MySQL - “评分最高”的算法

时间:2009-09-16 14:41:18

标签: php mysql algorithm rating

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

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 在“顶级”中扮演一个因素。

任何人都知道一种算法非常擅长确定这个“甜蜜点”吗?

提前致谢。

3 个答案:

答案 0 :(得分:11)

这是另一种统计上合理的好方法:http://www.thebroth.com/blog/118/bayesian-rating

答案 1 :(得分:3)

问题是,4.6 / 20的评级要高于5.0 / 2 ......

不考虑没有至少x票的物品的想法。

另一个想法是填补“中等”选票。决定10票应该是最低限度。 5.0 / 2必须填写8个虚拟投票2.5

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)

答案 2 :(得分: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