2012-04-22 113 views
6

我在网站上实现了一个简单的向上/向下投票系统,并且记录了个人投票以及投票时间和独特的用户iD(哈希IP)。投票 - 票数与投票率?

我的问题不是如何计算的票数百分比或总和 - 但更多的,什么是一个好的算法,用于基于选票的好成绩?

我觉得纯得票率排序是不可接受的,以及简单地清点upvotes。

考虑这个例子:

  • 图像A:4个upvotes,1个downvotes
  • 图片B:5个upvotes,4个downvotes
  • 图片C:1名给予好评,0 downvotes

理想的系统会把第一个,也许其次是B和C.然后

在纯百分比的情况下,订单(错) 在一个纯粹的投票计数场景中,顺序是B> A> C(错误)

我对基于系统信心的某种“混合”算法有一个想法在得分,也许沿着线的东西:

// (if totalvotes > 0, else score = 0) 
score = 1 - ((downvotes+1/totalvotes+1) * sqrt(1/totalvotes)) 

不过,我希望能向社会是否有任何真正明确的算法已经在那里,我根本不知道,我以前从现在起一直到日落都围绕着我的算法进行调整。

我也有最新数据为每票 - 不过,该网站的内容是不是很时间敏感的,所以我真的不关心排序依据“什么是热”的说法。

+2

[可能重复(http://stackoverflow.com/questions/9169143/finding-most-liked-item-of-a-user-with-rating-values)?至少答案是相关的。 – Anthales 2012-04-22 18:02:28

+0

辉煌的问题,我必须说:) – 2012-04-22 18:44:31

回答

0

我知道,不回答你的问题,但我只花了3分钟的乐趣试图找到一些公式和...只是检查它:) A柱是upvotes和B是downvotes :)

=(LN((A1+1)/(A1+B1+1))+1)*LN(A1) 

5 3  0.956866995 
4 1  1.133543015 
5 4  0.787295787 
1 0  0 
6 4  0.981910844 
2 8  -0.207447157 
6 5  0.826007385 
3 3  0.483811507 
4 0  1.386294361 
5 0  1.609437912 
6 1  1.552503332 
5 2  1.146431478 
100 100  -3.020151034 
10 10  0.813671022 
2

按票数的平均值排序并不是很好。

通过,而不是一个小数目喜欢这篇文章中解释观测的不确定性平衡正面评级的比例,你实现你的分数更好的表现。

下面的文章解释了如何避免犯许多流行网站所犯的错误。 (亚马逊,城市词典等)

http://evanmiller.org/how-not-to-sort-by-average-rating.html

希望这有助于!

+1

惊人的链接是惊人的!荣誉给你,先生! – 2012-04-22 18:43:13