带有业力的加权投票系统

Ric*_*chW 4 php algorithm voting

这个问题比目前的编程更具逻辑性.一旦我理解了我需要使用的算法,我将研究如何实现它.

我有一个数据库中的项目列表,需要由用户投票或关闭以确定它们是否正确.目的是为每个项目提供%,以显示项目信息的可靠性.

有一些标准需要考虑..

  • 投票不是绝对的 - 每个用户的投票权重取决于他们的业力.
  • 用户业力应该根据他们的投票来计算 - 例如,如果用户提交了一个项目并且其他用户投票确认它是正确的,则该用户的业力会增加.如果用户投票选择与其他具有高业力的用户投票的方向相同的项目,也可以给予业力.如果他们在与高业力的其他用户相反的方向投票,他们的投票将被认为是错误的,虽然它降低了项目的分数,但它也降低了他们的业力水平,使他们在未来的投票中影响力较小.
  • 用户可以投反对票和正票.
  • 计算的项目分数应考虑项目的年龄(随着时间的推移,分数会随着项目变得不太可靠而降低).

有没有人对这样做的最佳算法有任何建议,或者有关如何用编程语言(如PHP)实现这一点的任何提示?

Edw*_*ard 6

首先阅读:http://www.evanmiller.org/how-not-to-sort-by-average-rating.html

这是对伯努利参数的Wilson评分置信区间的数学概念的介绍.

那篇文章是关于如何使用你的用户的投票来计算实际有用数学上合理的分数的一个很好的入门读物.这样做,你已经领先于Amazon.com

然后,我想你可能需要调整一下这个公式.在该公式中,它使用p作为正投票的分数.您可能需要更新p的公式,以反映投票的用户的业力.

最后,考虑到年龄,您可以将公式的结果乘以年龄乘数.例如,如果您希望结果与其年龄相差 1%,则将其乘以0.99 ^ age_in_days.

简而言之,这就是我要遵循的道路.希望这可以帮助.