加权投票算法/计算

时间:2011-02-25 22:49:09

标签: ranking

我正在创建一个'决斗'应用程序,我无法计算结果。

每个用户都有一个upvote或downvote。没有1-5或五星评级。

例如:如果我被展示了5次并赢得了3次,那么我将获得3次'upvotes'和2次'downvotes'。

如果我做了直接百分比,那么任何一次显示并且选择1次(100%)的人将永远是顶部,就好像有人是9/10(90%)他们将低于1/1但是在理论将属于最重要的。

任何人对如何做到这一点都有任何想法?

4 个答案:

答案 0 :(得分:4)

我也一直在为投票网站寻找合适的算法。

虽然@joshhendo建议看起来似乎是一种对选票进行排名的合理方法,但它没有考虑正面投票的百分比。

例如:

  • 第1项有70个“向上”投票和30个“向下”投票。
  • 第2项有400个'向上'投票和300个'向下'投票。

对于第1项:70-30 = 40
对于第2项:400-300 = 100

第2项将出现在第1项上方,因为它有更多正面投票。但是第2项只有25%的正票,而第1项的正票数为57%。第1项显然应该出现在第2项之上,因为即使它没有那么多的总票数,它也有更好的“向上”到“向下”投票比率。

但话又说回来,人们希望避免出现一票(正面)出现在其他一切之上的物品的初始问题。

我建议你阅读:http://www.evanmiller.org/how-not-to-sort-by-average-rating.html

它提出了一个更加数学上合理解决这个问题的方法。这实际上是一个非常有趣的阅读,我将在我自己的网站上实现类似的东西。

[编辑]
这也是一个非常好的读物:http://blog.linkibol.com/2010/05/07/how-to-build-a-popularity-algorithm-you-can-be-proud-of/
[/编辑]

答案 1 :(得分:2)

你可以统一选票,投票数为+1,投票数为-1。

例如,假设有人是9/10(例如,有9个投票和1个投票),那么他们的分数将是9 + -1 = 8。这高于1/1,有1个投票和0个投票,因此他们的得分为1 + -0 = 1。所以,那些在你的百分比系统中得到90%的人现在得分为8,这比得分为1的100%的人高。

这是我能想到的最好,最简单的解决方案。可能有更复杂的解决方案可行,但是对于你想要的,我认为应该有效。

答案 2 :(得分:2)

而不是正投票百分比,跟踪贝叶斯平均值,例如:

(positive votes + weighted avg positive votes) / (total votes + arbitrary sample)

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

答案 3 :(得分:0)

您可以获得加权分数。

跟踪每个用户的积分和排名得分

让p成为你的对手得分(两端都是0到1的范围。)

当你进行战斗时,你获胜时获得1-q分,当你输了时你会失去q分。这意味着如果你输了一个总能获胜的人,那就不会伤害到你。如果你输给了几乎总是输了的人,那么你将失去很多分数。

每个(日,小时,等等)重新计算每个人的q,其中#1人获得1的等级(或者1.5或2,无论如何,但是1是最好的),最低的人得到aq为0。