我在网站上实施了一个简单的上/下投票系统,我跟踪个人投票以及投票时间和唯一用户iD(哈希IP)。
我的问题不是如何计算投票的百分比或总和 - 更重要的是,根据投票确定好分数的好算法是什么?
我发现按纯投票百分比排序是不可接受的,并且只是简单地计算投票。
考虑这个例子:
理想的系统将A放在第一位,然后是B,然后是C。
在纯百分比方案中,订单为C> A> B.(错) 在纯投票计数场景中,订单是B> A> C.(错误)
我有一个基于系统对分数的信心的“混合”算法的想法,可能是这样的:
// (if totalvotes > 0, else score = 0)
score = 1 - ((downvotes+1 / totalvotes+1) * sqrt(1 / totalvotes))
然而,在我从现在开始调整算法直到日落之前,我希望向社群询问是否有任何我已经根本不知道的非常明确的算法。
我也有每个投票的日期数据 - 但是,网站的内容不是非常时间敏感,所以我真的不在乎“什么是热门”。
答案 0 :(得分:2)
按平均票数排序并不是很好。
通过平衡积极评级的比例与本文中解释的少量观察的不确定性,您可以更好地表达您的分数。
下面的文章解释了如何不犯许多热门网站所犯的错误。 (亚马逊,urbandictionary等)
http://evanmiller.org/how-not-to-sort-by-average-rating.html
希望这有帮助!
答案 1 :(得分:0)
我知道这不能回答你的问题,但我只是花了3分钟寻找乐趣试图找到一些公式而且...只是检查一下:)一列是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