Glicko-System

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 verwendet der Schachserver Lichess das Glicko-2-System zur Bewertung der Spieler in verschiedenen Schachvarianten und Bedenkzeitkategorien. Chess.com hingegen benutzt das Glicko-1-System.[1][2]

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 r {\displaystyle r} üblicherweise auf 1500 und die rating deviation R D {\displaystyle \mathrm {RD} } auf 350 gesetzt.

Ziel ist es, die Werte eines Spielers ( r , R D ) {\displaystyle (r,\mathrm {RD} )} zu aktualisieren und durch die Werte ( r , R D ) {\displaystyle (r',\mathrm {RD} ')} zu ersetzen. Es wird angenommen, dass er gegen m {\displaystyle m} Gegner ( r 1 , R D 1 ) , , ( r m , R D m ) {\displaystyle (r_{1},\mathrm {RD} _{1}),\dots ,(r_{m},\mathrm {RD} _{m})} spielt und hierbei die Ergebnisse s 1 , , s m {\displaystyle s_{1},\dots ,s_{m}} erzielt, wobei s j { 0 , 1 2 , 1 } {\displaystyle s_{j}\in \{0,{\tfrac {1}{2}},1\}} 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 ( R D {\displaystyle \mathrm {RD} ^{\ast }} ) wird, ausgehend vom alten RD-Wert ( R D {\displaystyle \mathrm {RD} } ) wie folgt berechnet:

R D = min ( R D 2 + c 2 t , 350 ) {\displaystyle \mathrm {RD} ^{\ast }=\min \left({\sqrt {\mathrm {RD} ^{2}+c^{2}t}},350\right)}

Dabei ist t {\displaystyle t} 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 c {\displaystyle c} 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 c {\displaystyle c} durch Auflösen der Gleichung

350 = 50 2 + 100 c 2 {\displaystyle 350={\sqrt {50^{2}+100c^{2}}}} nach c {\displaystyle c} [3] gefunden werden:
c = ( 350 2 50 2 ) / 100 34 , 64 {\displaystyle c={\sqrt {(350^{2}-50^{2})/100}}\approx 34{,}64}

Schritt 2: Bestimmung der neuen Werte für Spielstärke und Abweichung

1 d 2 = q 2 j m g ( R D j ) 2 E ( r , r j , R D j ) ( 1 E ( r , r j , R D j ) ) = q 2 j m g j 2 E j ( 1 E j ) {\displaystyle {\frac {1}{d^{2}}}=q^{2}\sum _{j}^{m}{g(\mathrm {RD} _{j})^{2}\cdot E(r,r_{j},\mathrm {RD} _{j})\cdot (1-E(r,r_{j},\mathrm {RD} _{j}))}=q^{2}\sum _{j}^{m}{g_{j}^{2}\cdot E_{j}\cdot (1-E_{j})}}

mit

q = ln ( 10 ) 400 0,005 7565 {\displaystyle q={\tfrac {\ln(10)}{400}}\approx 0{,}0057565} .

Der Faktor q {\displaystyle q} 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):

R D = 1 1 R D 2 + 1 d 2 1 R D 2 = 1 R D 2 + 1 d 2 {\displaystyle \mathrm {RD} '={\frac {1}{\sqrt {{\frac {1}{\mathrm {RD} ^{\ast 2}}}+{\frac {1}{d^{2}}}}}}\iff {\frac {1}{\mathrm {RD} '^{2}}}={\frac {1}{\mathrm {RD} ^{\ast 2}}}+{\frac {1}{d^{2}}}}

Die neue Wertung r {\displaystyle r'} , nach einer Anzahl von m {\displaystyle m} Spielen, ergibt sich aus folgender Gleichung:

r = r + q R D 2 j m g ( R D j ) ( s j E ( r , r j , R D j ) ) {\displaystyle r'=r+q\cdot \mathrm {RD} '^{2}\cdot \sum _{j}^{m}{g(\mathrm {RD} _{j})\cdot (s_{j}-E(r,r_{j},\mathrm {RD} _{j}))}}

Hierbei sind

E ( r , r j , R D j ) = 1 1 + e g ( R D j ) q ( r r j ) = 1 1 + 10 g ( R D j ) 1 400 ( r r j ) = E j {\displaystyle E(r,r_{j},\mathrm {RD} _{j})={\frac {1}{1+e^{-g(\mathrm {RD} _{j})\cdot q\cdot (r-r_{j})}}}={\frac {1}{1+10^{-g(\mathrm {RD} _{j}){\frac {1}{400}}(r-r_{j})}}}=E_{j}} der Erwartungswert für einen Sieg im Spiel j.
g ( R D j ) = 1 1 + 3 π 2 q 2 ( R D j 2 ) = g j {\displaystyle g(\mathrm {RD} _{j})={\frac {1}{\sqrt {1+{\frac {3}{\pi ^{2}}}q^{2}(RD_{j}^{2})}}}=g_{j}} ein konstanter Gewichtungsfaktor ist, der lediglich von der RD des Gegners im Spiel j abhängt und die Varianz der Verteilung, die π 2 3 g i 2 q 2 = π 2 3 q 2 + R D 2 {\displaystyle {\frac {\pi ^{2}}{3g_{i}^{2}q^{2}}}={\frac {\pi ^{2}}{3q^{2}}}+\mathrm {RD} ^{2}} beträgt, beeinflusst.

Glicko-2-System

Das Glicko-2-System führt zusätzlich zur RD auch noch eine rating volatility σ {\displaystyle \sigma } 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 r {\displaystyle r} und der rating deviation R D {\displaystyle \mathrm {RD} } durchgeführt werden.

Das Glicko-2-System ermittelt zu jedem Spieler drei Werte:

  • rating μ {\displaystyle \mu } (Wertung)
  • rating deviation ϕ {\displaystyle \phi } (Abweichung)
  • rating volatility σ {\displaystyle \sigma } (Schwankung)

Schritt 1

Besitzt ein Spieler keine Glicko-Wertung, erhält er die Startwerte r = 1500 {\displaystyle r=1500} und R D = 350 {\displaystyle \mathrm {RD} =350} . Zusätzlich wird für die Glicko-2-Wertung noch die Schwankung σ = 0 , 06 {\displaystyle \sigma =0{,}06} gesetzt.

Allgemein muss ein τ {\displaystyle \tau } festgelegt werden. Sinnvolle Werte liegen zwischen 0,3 und 1,2.

Schritt 2

Um eine Umrechnung vom klassischen Glicko-System ( r , R D ) {\displaystyle (r,\mathrm {RD} )} in das Glicko-2-System ( μ , ϕ , σ ) {\displaystyle (\mu ,\phi ,\sigma )} vorzunehmen, werden folgende Funktionen verwendet. Der Faktor q = ln ( 10 ) 400 {\displaystyle q={\tfrac {\ln(10)}{400}}} 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.

μ = ( r 1500 ) q = ( r 1500 ) ln ( 10 ) 400 = r 1500 173,717 8 {\displaystyle \mu =(r-1500)\cdot q=(r-1500)\cdot {\tfrac {\ln(10)}{400}}={\frac {r-1500}{173{,}7178}}}
ϕ = R D q = R D ln ( 10 ) 400 = R D 173,717 8 {\displaystyle \phi =\mathrm {\mathrm {RD} } \cdot q=\mathrm {RD} \cdot {\tfrac {\ln(10)}{400}}={\frac {\mathrm {RD} }{173{,}7178}}}

Dadurch werden viele willkürlich erscheinende Parameter in den Berechnungen vermieden.

Ziel ist es, nun die Werte eines Spielers ( μ , ϕ , σ ) {\displaystyle (\mu ,\phi ,\sigma )} zu aktualisieren und durch die Werte ( μ , ϕ , σ ) {\displaystyle (\mu ',\phi ',\sigma ')} zu ersetzen. Es wird angenommen, dass er gegen m {\displaystyle m} Gegner ( μ 1 , ϕ 1 ) , , ( μ m , ϕ m ) {\displaystyle (\mu _{1},\phi _{1}),\dots ,(\mu _{m},\phi _{m})} spielt und hierbei die Ergebnisse s 1 , , s m {\displaystyle s_{1},\dots ,s_{m}} erzielt, wobei s j { 0 , 1 2 , 1 } {\displaystyle s_{j}\in \{0,{\tfrac {1}{2}},1\}} für das Ergebnis des Spieles j (Niederlage, Unentschieden oder Sieg) steht.

Die Schwankung σ j {\displaystyle \sigma _{j}} der Gegner wird für die Ermittelung der neuen Werte nicht benötigt.

Schritt 3

v = ( j m g ( ϕ j ) 2 E ( μ , μ j , ϕ j ) ( 1 E ( μ , μ j , ϕ j ) ) ) 1 = ( j m g j 2 E j ( 1 E j ) ) 1 {\displaystyle v=\left(\sum _{j}^{m}g(\phi _{j})^{2}\cdot E(\mu ,\mu _{j},\phi _{j})\cdot \left(1-E(\mu ,\mu _{j},\phi _{j})\right)\right)^{-1}=\left(\sum _{j}^{m}g_{j}^{2}\cdot E_{j}\cdot \left(1-E_{j}\right)\right)^{-1}}

Hierbei sind

E ( μ , μ j , ϕ j ) = 1 1 + e g ( ϕ j ) ( μ μ i ) = E j {\displaystyle E(\mu ,\mu _{j},\phi _{j})={\frac {1}{1+e^{-g(\phi _{j})(\mu -\mu _{i})}}}=E_{j}} die Gewinnwahrscheinlichkeit in Form eine Logistischen Verteilung (Erwartungswert) und
g ( ϕ j ) = 1 1 + 3 π 2 ϕ j 2 = g j {\displaystyle g(\phi _{j})={\frac {1}{\sqrt {1+{\frac {3}{\pi ^{2}}}\phi _{j}^{2}}}}=g_{j}} ein Gewichtungsfaktor, der die Varianz der Verteilung, die π 2 3 g j 2 = π 2 3 + ϕ j 2 {\displaystyle {\frac {\pi ^{2}}{3g_{j}^{2}}}={\frac {\pi ^{2}}{3}}+\phi _{j}^{2}} beträgt, beeinflusst.

Schritt 4

Δ = v j m g ( ϕ j ) ( s j E ( μ , μ j , ϕ j ) ) = j m g ( ϕ j ) ( s j E ( μ , μ j , ϕ j ) ) j m g ( ϕ j ) 2 E ( μ , μ j , ϕ j ) ( 1 E ( μ , μ j , ϕ j ) ) = j m g j ( s j E j ) j m g j 2 E j ( 1 E j ) {\displaystyle \Delta =v\cdot \sum _{j}^{m}g(\phi _{j})\cdot \left(s_{j}-E(\mu ,\mu _{j},\phi _{j})\right)={\frac {\sum _{j}^{m}g(\phi _{j})\cdot \left(s_{j}-E(\mu ,\mu _{j},\phi _{j})\right)}{\sum _{j}^{m}g(\phi _{j})^{2}\cdot E(\mu ,\mu _{j},\phi _{j})\cdot \left(1-E(\mu ,\mu _{j},\phi _{j})\right)}}={\frac {\sum _{j}^{m}g_{j}\cdot \left(s_{j}-E_{j}\right)}{\sum _{j}^{m}g_{j}^{2}\cdot E_{j}\cdot \left(1-E_{j}\right)}}}

Schritt 5

Für σ {\displaystyle \sigma '} soll gelten:

σ 2 ( Δ 2 ϕ 2 v σ 2 ) 2 ( ϕ 2 + v + σ 2 ) 2 = 1 τ 2 ln ( σ 2 σ 2 ) {\displaystyle {\frac {\sigma '^{2}(\Delta ^{2}-\phi ^{2}-v-\sigma '^{2})}{2(\phi ^{2}+v+\sigma '^{2})^{2}}}={\frac {1}{\tau ^{2}}}\cdot \ln \left({\frac {\sigma '^{2}}{\sigma ^{2}}}\right)}

mit σ 2 = e x {\displaystyle \sigma '^{2}=e^{x}} ergibt sich

e x ( Δ 2 ϕ 2 v e x ) 2 ( ϕ 2 + v + e x ) 2 = 1 τ 2 ln ( e x σ 2 ) {\displaystyle {\frac {e^{x}(\Delta ^{2}-\phi ^{2}-v-e^{x})}{2(\phi ^{2}+v+e^{x})^{2}}}={\frac {1}{\tau ^{2}}}\cdot \ln \left({\frac {e^{x}}{\sigma ^{2}}}\right)}

Zur Bestimmung des neuen σ {\displaystyle \sigma '} muss nun numerisch die Nullstelle folgender Funktion ermittelt werden.

f ( x ) = e x ( Δ 2 ϕ 2 v e x ) 2 ( ϕ 2 + v + e x ) 2 x ln ( σ 2 ) τ 2 = 0 {\displaystyle f(x)={\frac {e^{x}(\Delta ^{2}-\phi ^{2}-v-e^{x})}{2(\phi ^{2}+v+e^{x})^{2}}}-{\frac {x-\ln(\sigma ^{2})}{\tau ^{2}}}=0}

Hierfür wird das Illinois-Verfahren eingesetzt. Dafür werden zu Beginn zwei Startwerte A {\displaystyle A} und B {\displaystyle B} ermittelt, sowie eine Konvergenzradius ε = 10 6 {\displaystyle \varepsilon =10^{-6}} festgelegt.

A = a = ln ( σ 2 ) {\displaystyle A=a=\ln(\sigma ^{2})}

Falls Δ 2 > ϕ 2 + v {\displaystyle \Delta ^{2}>\phi ^{2}+v} ist, wird B = ln ( Δ 2 ϕ 2 v ) {\displaystyle B=\ln(\Delta ^{2}-\phi ^{2}-v)} angenommen, andernfalls muss ein k > 0 , k N {\displaystyle k>0,k\in \mathbb {N} } gefunden werden, so dass f ( a k τ ) > 0 {\displaystyle f(a-k\tau )>0} ist.

Mit B = a k τ {\displaystyle B=a-k\tau } gilt jetzt A < ln ( σ 2 ) < B {\displaystyle A<\ln(\sigma '^{2})<B} .

s o l a n g e   | B A | ε :     [ C := A A s   m i t   s = f B f A B A f C := f ( C ) f a l l s   f C f B < 0 :     [ A := B ,   f A := f B ,   B := C ,   f B := f C f a l l s   f C f B > 0 :     [ f A := 1 2 f A ,   B := C ,   f B := f C ,   A   bleibt s o n s t :     [ A := C ,   f A := f C ,   B := C ,   f B := f C   nimm  A  als Näherung für  x {\displaystyle \!\,{\begin{array}{l}{\mathsf {solange}}~|B-A|\geq \varepsilon :\\~~\left[{\begin{array}{l}C:=A-{\frac {A}{s}}~\mathrm {mit} ~s={\frac {f_{B}-f_{A}}{B-A}}\\f_{C}:=f(C)\\{\mathsf {falls}}~f_{C}\cdot f_{B}<0:\\~~\left[A:=B,~f_{A}:=f_{B},~B:=C,~f_{B}:=f_{C}\right.\\{\mathsf {falls}}~f_{C}\cdot f_{B}>0:\\~~\left[f_{A}:={\frac {1}{2}}\cdot f_{A},~B:=C,~f_{B}:=f_{C},~A~{\text{bleibt}}\right.\\{\mathsf {sonst}}:\\~~\left[A:=C,~f_{A}:=f_{C},~B:=C,~f_{B}:=f_{C}\right.\\\end{array}}\right.\\~\\{\text{nimm }}A{\text{ als Näherung für }}x^{*}\end{array}}}

So gilt für den Spieler jetzt ein aktualisierter Wert für die Schwankung σ {\displaystyle \sigma } .

σ = e A σ 2 = e A {\displaystyle \sigma '={\sqrt {e^{A}}}\iff \sigma '^{2}=e^{A}}

Schritt 6

Jetzt kann eine vorläufige Abweichung ϕ {\displaystyle \phi ^{\ast }} bestimmt werden.

ϕ = ϕ 2 + σ 2 ϕ 2 = ϕ 2 + σ 2 {\displaystyle \phi ^{\ast }={\sqrt {\phi ^{2}+\sigma '^{2}}}\iff \phi ^{\ast 2}=\phi ^{2}+\sigma '^{2}}

Schritt 7

Jetzt lassen sich ϕ {\displaystyle \phi '} und μ {\displaystyle \mu '} ermitteln:

ϕ = 1 1 ϕ 2 + 1 v 1 ϕ 2 = 1 ϕ 2 + 1 v = 1 ϕ 2 + σ 2 + 1 v {\displaystyle \phi '={\frac {1}{\sqrt {{\frac {1}{\phi ^{\ast 2}}}+{\frac {1}{v}}}}}\iff {\frac {1}{\phi '^{2}}}={\frac {1}{\phi ^{\ast 2}}}+{\frac {1}{v}}={\frac {1}{\phi ^{2}+\sigma '^{2}}}+{\frac {1}{v}}}
μ = μ + ϕ 2 j m g ( ϕ j ) ( s j E ( μ , μ j , ϕ j ) ) = μ + ϕ 2 j m g j ( s j E j ) {\displaystyle \mu '=\mu +\phi '^{2}\cdot \sum _{j}^{m}g(\phi _{j})\cdot \left(s_{j}-E(\mu ,\mu _{j},\phi _{j})\right)=\mu +\phi '^{2}\cdot \sum _{j}^{m}g_{j}\cdot (s_{j}-E_{j})}

Hat der Spieler im Wertungszeitraum nicht gespielt, ändern sich seine Werte für μ {\displaystyle \mu } und σ {\displaystyle \sigma } nicht. Anders sein Wert für ϕ {\displaystyle \phi } . Diese entspricht dann dem errechneten ϕ {\displaystyle \phi ^{\ast }}

ϕ = ϕ = ϕ 2 + σ 2 {\displaystyle \phi '=\phi ^{\ast }={\sqrt {\phi ^{2}+\sigma ^{2}}}}

Schritt 8

Zum Schluss können die Glicko-2-Werte noch in die bekannten Glicko-Werte umgerechnet werden.

r = q 1 μ + 1500 = ln ( 10 ) 400 μ + 1500 = 173,717 8 μ + 1500 {\displaystyle r'=q^{-1}\cdot \mu '+1500={\tfrac {\ln(10)}{400}}\cdot \mu '+1500=173{,}7178\cdot \mu '+1500}
R D = q 1 ϕ = ln ( 10 ) 400 ϕ = 173,717 8 ϕ {\displaystyle \mathrm {RD} '=q^{-1}\cdot \phi '={\tfrac {\ln(10)}{400}}\cdot \phi '=173{,}7178\cdot \phi '}
  • 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

Einzelnachweise

  1. Chess Rating Systems. In: Lichess. Abgerufen am 27. Februar 2024 (englisch). 
  2. Wie funktionieren die Ratings auf Chess.com? Chess.com, 10. November 2022, archiviert vom Original am 28. September 2023; abgerufen am 27. Februar 2024 (Beschreibung des genutzten Systems: Glicko-1). 
  3. http://www.glicko.net/glicko.html