2010-07-01 16 views
9

Ich habe ein System, in dem Leute abstimmen oder abstimmen können und ich möchte die Ergebnisse als 5-Sterne-Bewertung anzeigen.Wie man den Bayes'schen Durchschnittsalgorithmus für ein binäres Bewertungssystem implementiert

Ich habe versucht, den Bayesian Rating-Algorithmus here und here ohne Erfolg zu verwenden.

Zum Beispiel: Ich habe drei Elemente (A, B und C) in meiner Datenbank:

A = 500 UP und 500 nach unten Stimmen B = 0 UP und 1000 nach unten Stimmen C = 0 UP und 1000 down votes

Wie berechne ich die Bayes'sche Durchschnittsbewertung für jedes Element, so dass es eine Punktzahl auf einer Skala von 1 bis 5 hat?

+0

möglich Duplikat von [Was ist der beste Algorithmus, um den am meisten bewerteten Artikel zu berechnen?] (Http://stackoverflow.com/questions/2134504/what-is-the-best-algorithm-to-calculate-the-most -scored-item) –

Antwort

3

Einfache Algebra:

AvgVotes = Summe aller Stimmen/Summe aller Artikel

AvgRating = Summe von bis Stimmen für alle Artikel * 5/Summe aller Stimmen

CurVotes = Anzahl der Abstimmungen über aktuelle Artikel

CurRating = Summe von bis Abstimmungen über aktuelle Artikel * 5/Anzahl der Stimmen auf aktuelle Artikel

TotalVotes = Summe alle Stimmen + Summe der Stimmen auf aktuellen Artikel

((AvgVotes * AvgRating) + (CurVotes * CurRating)) * 5/TotalVotes

So in Ihre Zahlen Aufstecken das Gewicht für eine Auswertung ...

AvgVotes = 1000

AvgRating = 0 (Denken Sie daran, enthalten keine Zahlen für das Element, das Sie in dieser Berechnung sind die Bewertung)

CurVotes = 1000

CurRating = 500 * 5/1000 = 2,5

Gesamtzahl Stimmen = 2000 + 1000 = 3000

((1000 * 0) + (1000 * 2,5)) * 5/3000 = 4,166

Ich habe vergessen, hinzuzufügen, fügen Sie keine Elemente in irgendeiner Berechnung oder Summe über, die keine Stimmen haben, oder es wird die Gewichte abwerfen.

EDIT - Simplified Lösung:

Ich sollte anmerken, dass es eine vereinfachte Lösung für das Problem ist, die durchgeführt werden kann. Ich habe nur eine Langform für das Verständnis demonstriert. Der komprimierte Algorithmus wie folgt aussieht:

Definitionen:

SET = Alles, was nicht auf die aktuelle Auswertung Ziel bezogen, wo Stimmen größer als Null ist.

TARGET = Das Element, das Sie versuchen derzeit zu bewerten

25 * (((Summe der SET up-Stimmen)/(Summe der SET Artikel)) + (Summe der TARGET up-Stimmen))/(Summe von TARGET Stimmen + Summe der SET Stimmen)

wieder Einstecken mit Ihren Zahlen 'A' zur Klärung und den Nachweis der Bewertung:

(25 * ((0/2) +500))/(1000+ 2000) = 4.166

+0

Ich habe meinen Kommentar in meinen editierten Beitrag geschrieben, um das Lesen zu erleichtern. –

Verwandte Themen