2012-04-22 12 views
6

Ich habe ein einfaches Up/Down-Abstimmungssystem auf einer Website implementiert, und ich verfolge die einzelnen Abstimmungen sowie die Abstimmungszeit und die eindeutige Benutzer-ID (Hash-IP).Abstimmung - Anzahl der Stimmen vs Prozent stimmen?

Meine Frage ist nicht, wie man den Prozentsatz oder die Summe der Stimmen berechnet - aber mehr, was ist ein guter Algorithmus zur Bestimmung einer guten Punktzahl basierend auf Stimmen?

Ich finde die Sortierung nach reinem Votum inakzeptabel, ebenso wie Upvotes einfach zu zählen.

Betrachten dieses Beispiel:

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

Das ideale System würde A zuerst setzen, vielleicht gefolgt von B und dann C.

In einem reinen Prozentszenario die Bestellung ist C> A> B. (falsch) In einem reinen Vote count-Szenario ist die Reihenfolge B> A> C. (falsch)

Ich habe eine Idee für einen etwas "hybriden" Algorithmus basierend auf der Zuverlässigkeit des Systems in einer Partitur, vielleicht etwas entlang der Linien von:

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

aber ich hatte gehofft, um die Gemeinschaft zu fragen, ob da draußen irgendwelche wirklich gut definierten Algorithmen sind schon da, dass ich einfach nicht wissen, über, bevor ich setze mich herum und tüftele meinen Algorithmus von jetzt bis Sonnenuntergang.

Ich habe auch Datum Daten für jede Stimme - aber der Inhalt der Website ist nicht sehr zeitsensibel, so dass ich nicht wirklich nach "was ist heiß" überhaupt sortieren.

+2

[möglich duplizieren] (http://stackoverflow.com/questions/9169143/finding-most-liked-item-of-a-user-with-rating-values)? Zumindest die Antwort dort ist relevant. – Anthales

+0

Brilliante Frage, muss ich sagen :) –

Antwort

0

Ich weiß, dass sie Ihre Frage nicht beantworten, aber ich habe nur 3 Minuten zum Spaß versuchen, einige Formeln zu finden, und ... einfach überprüfen it :) Eine Spalte upvotes und 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

Sortierung nach dem Durchschnitt der Stimmen ist nicht sehr gut.

Indem Sie stattdessen den Anteil der positiven Bewertungen mit der Unsicherheit einer kleinen Anzahl von Beobachtungen vergleichen, wie in diesem Artikel erläutert, erzielen Sie eine viel bessere Darstellung Ihrer Ergebnisse.

Der folgende Artikel erklärt, wie man nicht den gleichen Fehler macht wie viele populäre Websites. (Amazon, Urban usw.)

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

hoffe, das hilft!

+1

Erstaunliche Link ist erstaunlich! Ein großes Lob für Sie, Sir! –