Voting - Number of votes vs Percentage of votes?

I have implemented a simple up / down voting system on the website, and I keep track of individual votes, as well as the voting time and unique user iD (hashed IP address).

My question is not how to calculate the percentage or amount of votes - but more, what is a good algorithm for determining a good score based on the votes?

I believe that sorting with a pure voice of interest is unacceptable, as well as just a vote count.

Consider the following example:

  • Image A: 4 upvotes, 1 downvotes
  • Image B: 5 revs, 4 downvotes
  • Image C: 1 upvote, 0 downvotes

An ideal system would put A first, possibly after B, then C.

In a purely percentage scenario, the order is C> A> B. (incorrect) In the scenario of pure vote counting, the order is B> A> C. (incorrect)

I have an idea for a somewhat "hybrid" algorithm based on the confidence of the system in points, maybe something like:

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

However, I was hoping to ask the community if there are any really well-defined algorithms that I just don’t know before I sit, tuning my algorithm from now on until sunset.

I also have date data for each vote, but the site’s content is not very time sensitive, so I really don’t need to sort “what's hot” at all.

+6
source share
2 answers

Sorting by the average number of votes is not very good.

Instead, by balancing the proportion of positive estimates with the uncertainty of a small number of observations, as described in this article, you achieve a much better presentation of your results.

The following article explains how not to make the same mistake as many popular websites. (Amazon, urbandictionary, etc.)

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

Hope this helps!

+2
source

I know that does not answer your question, but I just spent 3 minutes having fun trying to find some formula and ... just check it :) The column is upvotes and B is 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 
0
source

Source: https://habr.com/ru/post/913855/


All Articles