Das Glicko-System ist ein von Mark Glickman entwickeltes Wertungssystem, das es wie das Elo-System erlaubt, die Spielstärke, etwa von Schachspielern, zu messen. Die Besonderheit des Systems liegt in der Einführung weiterer Größen, wie der rating deviation (Abweichung) im klassischen Glicko-System und zusätzlich noch der rating volatility (Schwankung) im Glicko-2-System. Beide Systeme sind lizenzfrei und daher besonders bei Online-Spielen beliebt. So verwenden die Schachserver Lichess und chess.com das Glicko-2-System zur Bewertung der Spieler in verschiedenen Schachvarianten und Bedenkzeitkategorien.
Unterschiede zum Elo-System
Als Erweiterung zum Elo-System führt Glickman die Variable RD (ratings deviation) ein. Diese schätzt ab, wie genau die aktuelle Wertungszahl mit der tatsächlichen (aber unbekannten) Spielstärke übereinstimmt. Mit einer Wahrscheinlichkeit von 67 % liegt die tatsächliche Spielstärke im Bereich von ±RD der Wertungszahl, mit 95 % im Bereich von ±2 RD. Hat ein Spieler etwa eine Wertungszahl von 1500 und eine RD von 50, so soll seine tatsächliche Spielstärke mit einer Wahrscheinlichkeit von 95 % im Bereich von 1400 bis 1600 liegen. Wenn ein Spieler spielt, sinkt seine RD, da seine Wertungszahl mit jedem Spiel genauer wird. Spielt er nicht, steigt diese wieder langsam über die Zeit an. Außerdem bewirkt eine hohe RD, dass sich seine Wertungszahl in größeren Intervallen ändert.
Dank der Einführung der RD wird auch sichergestellt, dass sich die Wertungszahl eines aktiven Spielers, der gegen einen neuen oder inaktiven Spieler spielt, nur geringfügig ändert. Dies ist sinnvoll, da die Stärke des neuen oder inaktiven Spielers nicht genau genug bekannt ist und das Resultat daher nicht viel über die Stärke des aktiven Spielers aussagt.
Berechnung
Klassisches Glicko-System
Wenn der Spieler noch keine Bewertung hat, wird die Spielstärke üblicherweise auf 1500 und die rating deviation auf 350 gesetzt.
Ziel ist es, die Werte eines Spielers zu aktualisieren und durch die Werte zu ersetzen. Es wird angenommen, dass er gegen Gegner spielt und hierbei die Ergebnisse erzielt, wobei für das Ergebnis des Spieles j (Niederlage, Unentschieden oder Sieg) steht.
Schritt 1: Bestimmung einer vorläufigen RD-Wertzahl
Der vorläufige RD-Wert () wird, ausgehend vom alten RD-Wert () wie folgt berechnet:
Dabei ist die Zeit (in Wertungsperioden) seit dem letzten Wettkampf und 350 ist der Standardwert für einen unbewerteten Spieler. Sollten mehrere Spiele in einer Periode stattfinden, werden sie behandelt, als ob sie gleichzeitig stattgefunden haben. Die Wertungsperiode kann sehr lang (mehrere Monate) oder sehr kurz (einige Minuten) sein, abhängig davon, wie häufig Spiele ausgetragen werden. Die Konstante ist abhängig von der Unsicherheit über die Stärke eines Spielers nach Ablauf einer gewissen Zeit. Sie kann aus einer genauen Analyse der vorliegenden Daten abgeleitet werden. Alternativ kann sie auf Basis der Zeit, die vergehen würde, bis die RD eines Spielers gleich dem eines unbewerteten Spielers wäre, geschätzt werden: Angenommen es dauert 100 Wertungsperioden, bis die RD eines Spielers die eines unbewerteten Spielers (350) erreicht und ein typischer Spieler hat eine RD von 50, dann kann die Konstante durch Auflösen der Gleichung
- nach gefunden werden:
Schritt 2: Bestimmung der neuen Werte für Spielstärke und Abweichung
mit
- .
Der Faktor kommt auch in den Formeln des klassischen Glicko-Systems, des Elo-Systems und der Deutschen Wertungszahl vor. Er führt zu einer vergleichbaren Skalierung der Systeme.
Der Zweck der Berechnung in Schritt 1 war die Anpassung (Erhöhung) der RD an die erhöhte Unsicherheit über die Spielstärke eines Spielers nach einer Zeit der Nicht-Anwendung des Modells. Nun wird die neue RD unter Berücksichtigung der aktuellen Spiele neu justiert (und typischerweise reduziert):
Die neue Wertung , nach einer Anzahl von Spielen, ergibt sich aus folgender Gleichung:
Hierbei sind
- der Erwartungswert für einen Sieg im Spiel j.
- ein konstanter Gewichtungsfaktor ist, der lediglich von der RD des Gegners im Spiel j abhängt und die Varianz der Verteilung, die beträgt, beeinflusst.
Glicko-2-System
Das Glicko-2-System führt zusätzlich zur RD auch noch eine rating volatility ein. Je konstanter der Spieler spielt, desto geringer ist diese.
Um die Wertungszahlen von Glicko-2 mit denen von Glicko vergleichbar zu halten, kann zu Beginn und am Ende eine Transformation der Glicko-Wertungszahl und der rating deviation durchgeführt werden.
Das Glicko-2-System ermittelt zu jedem Spieler drei Werte:
- rating (Wertung)
- rating deviation (Abweichung)
- rating volatility (Schwankung)
Schritt 1
Besitzt ein Spieler keine Glicko-Wertung, erhält er die Startwerte und . Zusätzlich wird für die Glicko-2-Wertung noch die Schwankung gesetzt.
Allgemein muss ein festgelegt werden. Sinnvolle Werte liegen zwischen 0,3 und 1,2.
Schritt 2
Um eine Umrechnung vom klassischen Glicko-System in das Glicko-2-System vorzunehmen, werden folgende Funktionen verwendet. Der Faktor führt zu einer Skalierung, die den bestehenden Systemen entspricht und einen für Menschen praktikableren und vertrauteren Wertebereich abdeckt. Dieser liegt im drei- bis vierstelligen Bereich und ist ausreichend aussagekräftig, wenn auf ganze Zahlen gerundet wird.
Dadurch werden viele willkürlich erscheinende Parameter in den Berechnungen vermieden.
Ziel ist es, nun die Werte eines Spielers zu aktualisieren und durch die Werte zu ersetzen. Es wird angenommen, dass er gegen Gegner spielt und hierbei die Ergebnisse erzielt, wobei für das Ergebnis des Spieles j (Niederlage, Unentschieden oder Sieg) steht.
Die Schwankung der Gegner wird für die Ermittelung der neuen Werte nicht benötigt.
Schritt 3
Hierbei sind
- die Gewinnwahrscheinlichkeit in Form eine Logistischen Verteilung (Erwartungswert) und
- ein Gewichtungsfaktor, der die Varianz der Verteilung, die beträgt, beeinflusst.
Schritt 4
Schritt 5
Für soll gelten:
mit ergibt sich
Zur Bestimmung des neuen muss nun numerisch die Nullstelle folgender Funktion ermittelt werden.
Hierfür wird das Illinois-Verfahren eingesetzt. Dafür werden zu Beginn zwei Startwerte und ermittelt, sowie eine Konvergenzradius festgelegt.
Falls ist, wird angenommen, andernfalls muss ein gefunden werden, so dass ist.
Mit gilt jetzt .
So gilt für den Spieler jetzt ein aktualisierter Wert für die Schwankung .
Schritt 6
Jetzt kann eine vorläufige Abweichung bestimmt werden.
Schritt 7
Jetzt lassen sich und ermitteln:
Hat der Spieler im Wertungszeitraum nicht gespielt, ändern sich seine Werte für und nicht. Anders sein Wert für . Diese entspricht dann dem errechneten
Schritt 8
Zum Schluss können die Glicko-2-Werte noch in die bekannten Glicko-Werte umgerechnet werden.
Weblinks
- Glicko-Webseite von Mark E. Glickman
- forwardloop/glicko2s Glicko-2-Implementierung für die JVM
- RobKohr/glicko Glicko-2-Implementierung in JavaScript
- mmai/glicko2js Clientseitige Glicko-2-Implementierung in JavaScript und Node.js
- deepy/glicko2 Glicko-2-Implementierungen in Python
- sublee/glicko2 Glicko-2-Implementierungen in Python
- PlayerRatings Glicko-2-Implementierung in R von Alec Stephenson und Jeff Sonas
- scala-glicko2 Glicko-2-Implementierung in Scala