Bayes’sche Bewertung – Wie man ein gewichtetes Bewertungssystem implementiert

Wednesday, 19. April, 2006

Auf vielen Webseiten können User ihr Feedback über Produkte, Leistungen oder andere User abgeben. Zusätzlich zu schriftlichen Bewertungen, werden typischerweise Bewertungsmöglichkeiten geboten, bei dem der Besucher ein Objekt zwischen 0 und 5 (oft in Verbindung mit Sternen), zwischen 0 und 10 oder einfach mit “+” oder “-” bewerten kann.

Diese User Bewertungen werden dann oft für die Bestimmung eines Rangs oder einer Rangfolge dieses bewerteten Objekts herangezogen. Aber wenn eine Rangfolge ins Spiel kommt, dann wird es knifflig.

Rangfolgenermittlung mit dem Bayes’schen Durchschnitt

Hoffentlich hat Dich die Überschrift nicht abgeschreckt, es hört sich ja nach mathematischen Hardcore an. Aber keine Sorge, wenn Du erst einmal weißt wie, dann ist die Implementierung eines robusten Bewertungs- und Rangfolgensystems, so wie wir es hier besprechen, eine wirklich simple, sehr elegante Sache, die – das ist das Wichtigste – wirklich gut funktioniert!

Ein einfaches Beispiel mit einer “+” und “-” Bewertung

Die Kunstwerke in der BunteSuppe Gallery werden von Besuchern bewertet, indem sie ein simples “+” und “-” System benutzen. Wenn Dir ein Snapshot gefällt, dann gibst Du ihm ein “Plus”, gefällt es Dir nicht, dann bewertest Du es mit einem “Minus”.

Die Bewertung eines Objekts würde dann so ausschauen: die Anzahl der positiven Stimmen dividiert durch die Anzahl der Gesamtstimmen. Beispielsweise würden 4 “+” Stimmen und 1 “-” Stimme einen Wert von 0,8 oder 80% ergeben.

Wenn Du aber die Rangfolge der Objekte nach dieser einfachen Gleichung bestimmst, passiert Folgendes:

Nimm einmal an, dass ein Objekt eine Bewertung von 0,93 hat, auf Basis von 100 Stimmen. Jetzt wird ein anderes Objekt bewertet und das von nur 2 Besuchern und beide geben dem Objekt eine “+” Stimme. Boom! und dieses Objekt ist auf dem ersten Rang, weil seine Bewertung 100% ist!

Die Sache mit der Gewichtung

Was wir wollen, ist Folgendes:

Wenn es nur ein paar Stimmen gibt, dann sollen diese Stimmen weniger zählen als wenn es viele Stimmen gibt und wir darauf vertrauen können, dass das die öffentliche Meinung vieler ist. In anderen Quellen wird dieser Wert auch als “Glaubwürdigkeit” bezeichnet.

Das bedeutet, dass je mehr Stimmen das Objekt bekommt, desto mehr “Gewicht” haben diese Stimmen.

Daher wollen wir eine korrigierte Bewertung berechnen, die das Gewicht der Stimmen berücksichtigt:

  • Je mehr Stimmen das Objekt hat, desto mehr nähert sich die korrigierte Bewertung dem unkoorigierten Wert an.
  • Je weniger Stimmen das Objekt hat – und das ist der Trick bei der Sache – desto näher sollte die Bewertung dem Durchschnitt der Bewertung aller Objekte sein!

Auf diese Weise ziehen neue Stimmen den korrigierten Bewertungswert weg von der Durchschnittsbewertung hin zum unkorrigierten Wert.

So das ist er – der Algorithmus, den wir als “Bayes’sche Bewertung” oder eher “Bayes’sche Rangfolge” bezeichnen, da es eigentlich um die Beziehung der Objektbewertungen zu einander geht, basierend auf der Anzahl der Stimmen für jedes einzelne Objekt.

Die Verwendung eines magischen Werts

Wir müssen nun einen “magischen” Wert anwenden, der bestimmt, wie stark die Gewichtung sein soll. In anderen Worten, wie viele Stimmen notwendig sind, bis sich der korrigierte Wert dem unkorrigierten Wert annähert.

Es hängt wirklich davon ab, wieviele Stimmen ein Objekt im Durchschnitt bekommt. Es ist sinnlos, 1000 Stimmen für ein Objekt zu bestimmen, nur damit dieses dann bei 60% gereiht ist, wenn jedes Objekt durchschnittlich nur eine Handvoll von Stimmen bekommmt.

Daher können wir diesen “magischen” Wert so definieren, dass er die durchschnittliche Anzahl der Stimmen aller gereihten Objekte angibt. Und siehe da, unser “Bayes’sche Bewertungssystem ist fertig. Indem wir die magischen Werte dynamisch machen, kann sich unser System automatisch anpassen.

Finetuning des magischen Werts

Du kannst Dich für ein oberes Limit Deines magischen Werts entscheiden, so dass Dein System nicht zum Stillstand kommt, wenn es viele Stimmen für ein Objekt gibt. Ein unendlich steigender magischer Wert würde es nach und nach unmöglich machen, die Rangfolge eines neuen Objekts zu beeinflussen, weil es einfach zu viele Stimmen brauchen würde, um zu einer unkorrigierten Bewertung des neuen Objekts zu kommen.

Das Finetuning hängt davon ab, ob Du in Deinem System einen großen Zuwachs an immer neuen Objekten hast oder nicht. Gibt es dauernd viele neue Objekte, wird der Zugang dieser neuen Objekte die durchschnittliche Anzahl an Stimmen pro Objekt niedrig halten. Wenn Dein System eine fixe Anzahl an Objekten aufweist, wie z.B. “Bewerte Deinen Lieblingstar der Beatles”, dann wirst Du kein Oberlimit brauchen. Wenn Du aber zeitweilig ein Objekt hinzufügst, dann ist ein oberes Limit sinnvoll, um den neuen Objekten eine Chance zu geben, schneller höher gereiht zu sein.

Bayes’sche Bewertung für alle

Also, lass uns all das zusammenfassen:

Die Bayes’sche Bewertung benutzt den Bayes’schen Durchschnitt. Das ist ein mathematischer Begriff, der die Bewertung eines Objekts basierend auf der “Glaubwürdigkeit” der Stimmen berechnet. Je größer diese auf Grund der Anzahl der Stimmen ist, desto mehr nähern sich die Bayes’schen Bewertungsschätzungen der ungewichteten, echten Bewertung an. Wenn es nur ein paar wenige Stimmen gibt, dann wird die Bayes’sche Bewertung eines Objekts nahe der durchschnittlichen Bewertung aller Objekte bleiben.

Verwende diese Gleichung:

br = ( (avg_num_votes * avg_rating) + (this_num_votes * this_rating) ) / (avg_num_votes + this_num_votes)

Legende:

  • avg_num_votes: Die durchschnittliche Anzahl der Stimmen von allen Objekten, die num_votes>0 haben.
  • avg_rating: Die durchschnittliche Bewertung eines jeden Objekts, das num_votes>0 hat.
  • this_num_votes: Die Anzahl der Stimmen für dieses Objekt.
  • this_rating: Die Bewertung dieses Objekts.

Beachte, dass avg_num_votes als “magischer” Wert in dieser Formel verwendet wird. Je höher dieser Wert ist, desto mehr Stimmen brauchst Du, damit Du den Bayes’schen Bewertungswert beeinflussen kannst.

Wie die Bayes’sche Bewertung bei BunteSuppe angewendet wird

Wir verwenden diese, um die am höchsten bewerteten Kunstwerke in der Gallery zu reihen. Wir wollten vermeiden, dass ein neuer Mosaik-Snapshot mit nur einer Stimme sofort an die erste Stelle springt, da ja die Bewertung 100% sein würde. Indem wir die Bayes’sche Bewertung verwenden, bekommt ein Snapshot mit nur einer Stimme, eine nur etwas höhere Bewertung als es die durchschnittliche Bewertung aller Snapshots ist.

Quellen