2012-04-22 10 views
6

Wdrożyłem prosty system głosowania w górę/w dół na stronie internetowej i śledzę indywidualne głosy, a także czas głosowania i unikalny iD użytkownika (hashed IP).Głosowanie - Liczba głosów vs Procent głosów?

Moje pytanie nie jest jak obliczyć procent lub sumę głosów - ale więcej, jaki jest dobry algorytm do określenia dobrego wyniku na podstawie głosów?

Uważam, że sortowanie według czystego procentu głosów jest niedopuszczalne, a także po prostu liczenie głosów upvotes.

Rozważmy przykład:

  • obrazu A: 4 upvotes, 1 downvotes
  • obrazu B: 5 upvotes, 4 downvotes
  • Obraz C: 1 upvote, 0 downvotes

Idealny system umieściłby A, najpierw B, a potem C.

W czysto procentowym scenariuszu kolejność jest C> A> B. (źle) w czystej sytuacji głos, kolejność jest B> A> C (źle)

Mam pomysł na nieco „hybrydowym” algorytmu opartego na zaufaniu systemu w wyniku, może coś wzdłuż linii:

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

jednak miałem nadzieję poprosić społeczność, czy istnieją naprawdę dobrze zdefiniowane algorytmy już tam, że ja po prostu nie wiem, przed I siedzieć i poprawiać algorytm od teraz aż do zachodu słońca.

Mam również dane dotyczące daty każdego głosowania - jednak zawartość strony nie jest zbyt czasochłonna, więc nie mam na czym polega sortowanie według "na topie".

+2

[możliwy duplikat] (http://stackoverflow.com/questions/9169143/finding-most-liked-item-of-a-user-with-rating-values)? Przynajmniej odpowiedź tam jest istotna. – Anthales

+0

Wspaniałe pytanie, muszę powiedzieć :) –

Odpowiedz

0

wiem, że nie ma odpowiedzi na pytanie, ale ja właśnie spędziliśmy 3 minuty dla zabawy, próbując znaleźć jakąś formułę i ... po prostu sprawdzić to :) Kolumna jest upvotes i B jest 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

Sortowanie według średniej liczby głosów nie jest zbyt dobre.

Zamiast równoważenia proporcji pozytywnych ocen z niepewnością niewielkiej liczby obserwacji, jak wyjaśniono w tym artykule, uzyskujesz znacznie lepszą reprezentację swoich wyników.

Poniższy artykuł wyjaśnia, jak nie popełnić tego samego błędu, który popełnia wiele popularnych witryn. (Amazon, urbandictionary itp)

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

Nadzieja to pomaga!

+1

Niesamowity link jest niesamowity! Kudos dla ciebie, sir! –

Powiązane problemy