良好的评级/声誉系统?

时间:2012-09-07 15:01:22

标签: php mysql algorithm rating-system

我正在开发一个与Yahoo!非常相似的网站。答案:用户可以发布问题,等待其他人的答案并选择更好的答案。为了识别最佳用户,有一个信誉系统,它具有以下功能:

  • 可以对用户进行投票或投票;
  • 一个人可以上升或下注答案;
  • 每个主题都有一个“经验”分数,对于每个回答的问题都会增加。

现在,如果可能的话,我想找到一种算法来结合所有这些因素,并为每个答案给出“可信度”分数。

到目前为止,我尝试使用像Coefficient * (UpVotes / TotalVotes)的产品这样的东西,但它过于线性。我也尝试了其他方法,但它们没有用(贝叶斯算法)。目前,在Alpha版本中,我正在使用Trustability = sqrt(GoodAnswers)

注意:算法必须是个体的(无需扫描整个数据库以获取平均值,总和等数据)并且如果可能的话快速。我将在PHP-MySQL中实现它。

3 个答案:

答案 0 :(得分:6)

有很多方法可以对系统进行排名。使用时间维度,上/下投票数,评级人员和评级人员,点击率和几乎任何你能想象到的。

有一篇关于在Reddit中对系统进行排名的好文章。

我脑海中最直接的解决方案是为个人用户计算一些upvote的权重。这意味着更受信任的用户比另一个更有影响力。例如。评级为100 upvote的用户肯定比评分为-100的两个用户的downvote更好。但我们不能说这比100个用户的100个downvotes要好。试着用这个来试验。

答案 1 :(得分:1)

您可以使用谷歌网页排名的相同理念:当用户向您投票或将您的问题\答案添加为收藏时,您的可信度的提高取决于此用户的可信度。

http://en.wikipedia.org/wiki/PageRank

答案 2 :(得分:0)

使用类似ELO / Glicko的系统。每个用户都以标准值开头,然后考虑低估或提升一对一的匹配结果。