Ik had dit oorspronkelijk gepost op StackOverflow omdat het een bug in de implementaties zou kunnen zijn , maar sommigen stelden voor om op wiskunde te posten. Ik heb net deze stackexchange gevonden, en ik dacht: wie kan er beter? Sommigen van jullie weten misschien van de vleermuis dat dit juist lijkt of niet, zonder dat er foutopsporing nodig is. Alle links naar online rekenmachines of alternatieve beoordelingsmethoden zijn welkom.
Glicko-2 is een beoordelingssysteem dat bij schaken wordt gebruikt, maar kan in veel andere situaties worden gebruikt. Glicko-2 is een verbetering ten opzichte van Glicko-1, die problemen van de oudere ELO-classificatie heeft aangepakt.
Wat Glicko-2 speciaal maakt in vergelijking met versie 1, is dat het een hogere beoordelingsafwijking (RD) langer is iemand inactief geweest. Het doet dit met het idee van een systeemconstante die betrekking heeft op tijd / beoordelingsperioden.
Een voorbeeld van een artikel van de auteur is hier te vinden: http://www.glicko.net/glicko/glicko2.pdf .
In dit document legt hij uit:
Het Glicko-2-systeem werkt het beste wanneer het aantal spellen in een beoordelingsperiode gemiddeld tot groot is, zeg een gemiddelde van minstens 10-15 games per speler in een beoordelingsperiode. De tijdsduur voor een beoordelingsperiode is ter beoordeling van de beheerder.
Aannemen dat een groep actieve schakers 10-15 spellen speelt gemiddeld in een periode van 1 maand, zou de beheerder de beoordelingen aan het einde van elke maand bijwerken.
Ik had een PHP-implementatie nodig van het Glicko-2-beoordelingssysteem en kwam het volgende tegen:
Glicko-2 JavaScript-implementatie
- Het JavaScript had een kleine fout, waardoor het niet overeenkwam met het technische voorbeeld, de auteur vond het dichtbij genoeg, en nam niet de moeite om debug.
- De PHP-implementatie werd geplaagd door veel bugs, maar dat was niet duidelijk tenzij je meer dan één beoordelingsperiode deed (die de technische tot nev er toont verwachte waarden van)
- Eindelijk leek de Excel-rekenmachine foutloos en de meest professionele, uitgevoerd door iemand in de schaakgemeenschap. Nadat de JavaScript-bug was opgelost, kwamen de JavaScript- en Excel-rekenmachine zeer nauw met elkaar overeen (hoewel niet perfect, kan binnen afrondingsfout zitten)
Ik had de bugs verholpen (en problemen ingediend / patches voor de auteurs) die ik in de PHP- en JavaScript-versies kon vinden om zo goed mogelijk overeen te komen met de Excel Calculator
Nu ben ik er 99% zeker van dat ik een nauwkeurige Glicko-2-implementatie heb (tussen de 3 van hen) voor analyse en toen kwam ik iets vreemds tegen, en het onderwerp van deze discussie.
Gezien de voorgestelde standaard voor Glicko-2 voor een nieuwe speler:
Rating: 1500 RD: 350 Volatility: 0.06
Als je tegenover een gemiddelde tegenstander met rating 1378 en RD 99 ( Source ) slechts één keer per ratingperiode (1 maand) voor de komende 12 periodes (1 jaar) heeft u een veronderstelde Nationale klasse A (1800-1999) beoordeling van 1852 terwijl u in werkelijkheid versloeg slechts 12 gemiddeld beoordeelde spelers over een periode van 12 maanden.
Month Rating RD Volatility Class 1 1625 259 0.059999 National Class B 2 1682 225 0.059998 〃 3 1718 205 0.059997 〃 6 1784 174 0.059994 〃 12 1852 148 0.059988 National Class A 24 1922 127 0.059976 〃
Als je elke ratingperiode tegen 2 gemiddelde tegenstanders speelt, kun je ongeveer 4-5 maanden naar Nationale Klasse A gaan, met slechts 8-10 gemiddelde tegenstanders.
Month Rating RD Volatility Class 1 1672 215 0.059999 National Class B 2 1733 183 0.059997 〃 3 1770 166 0.059995 〃 4 1797 154 0.059993 〃 5 1819 146 0.059992 National Class A 6 1836 140 0.059991 〃
Zijn deze aannames juist? Zit er een fout in mijn rekenmachine?
Als het geen bug is, wat zijn dan enkele manieren om dit tegen te gaan, behalve:
- Beschouw “ware beoordeling” als ondergrens van de afwijking (Rating – RD)
- De beoordeling van inactieve gebruikers niet weergeven
- Gebruikers met minder dan N games niet weergeven
Reacties
- chess.com/forum/view/general/chess-ratings—glicko-vs-elo bekijk dit eens
- chesschat.org/showthread.php?t=13621
Antwoord
Ik heb een paar maanden geleden aan een Scala-implementatie gewerkt, hoewel het een beetje ongepolijst was – ik zou terug moeten gaan om het af te maken. Ik heb in ieder geval redelijke resultaten behaald met het.
Als je elk spel dat je speelt wint, ja, zal je rating behoorlijk hoog worden, zelfs als je alleen tegen laaggewaardeerde spelers speelt. De kans dat je elk spel tegen zon tegenstander wint, is waarschijnlijk over wat een klasse A-speler zou bereiken (hoewel het waarschijnlijk i s een beetje opgeblazen vanwege de relatief hoge RD, toch).
De beste manier om dit tegen te gaan, is naar mijn mening door iemand met een RD boven een bepaald bedrag niet als een stabiele beoordeling te beschouwen, d.w.z. beschouw het als “voorlopig”. Om daadwerkelijk een titel te behalen, in ieder geval in USCF, hebben ze een normensysteem, waarbij je op een bepaald niveau moet presteren in een toernooi van 4 of meer games (4 keer, denk ik), wat de kans dat je het hele toernooi [vier keer] tegen ~ 1378 speelt, is zeer onwaarschijnlijk.
Is het je doel om dit voor schaken te gebruiken? Wat is uw use-case?
Update: FICS behandelt het door alleen mensen met een RD van < 80 actief te beschouwen. (Ze gebruiken Glicko-1 nog steeds, geloof ik.) http://www.freechess.org/Help/ficsfaq.html#Q005.003
En door Overigens gebruikt Glicko-1 ook RD / tijdverval. De belangrijkste verbetering van Glicko-2 was de factor “vluchtigheid”, waardoor mensen met grillige resultaten of stabiele resultaten heel iets anders kunnen worden berekend. Ik denk dat het een heel kleine aanpassing is aan Glicko-1 die aanzienlijke extra berekeningen veroorzaakt – maar net als jij was ik nog steeds geïnteresseerd in het berekenen ervan. Ik heb Glickman zelf om wat extra datapunten gevraagd om te testen, maar hij had het op dat moment te druk om ze te leveren.
Opmerkingen
- Ter info, een USCF klassenniveau titel vereist het behalen van een norm in 5 toernooien.
Antwoord
Alle beoordelingssystemen hebben problemen met echte leven. In het beste geval kan geen van hen meer doen dan een schatting maken van je bekwaamheid.
Ze zullen het beter doen op GM-niveau aangezien die spelers consistenter zijn en de neiging hebben om meer GMs te spelen; terwijl de rest van ons meer inconsistent is en de neiging heeft om tegen een breder scala aan spelers met een lagere rating te spelen die ook inconsistent zijn. En nieuwe spelers hebben de neiging om veel sneller te verbeteren terwijl ze in minder toernooien spelen, waardoor alle beoordelingen nog verder scheeftrekken. En op elk niveau hebben sommige spelers vrije dagen of proberen ze niet zo hard als het hun positie in de eindresultaten niet verandert.
Proberen om beoordelingen zo goed als Glicko2 te verfijnen, is een dwaze boodschap.
Een andere factor die het probleem verergert, is dat spelers de neiging hebben om tegen dezelfde spelers te spelen. Als er een wereldwijd verplicht Zwitsers systeem zou zijn dat genoeg rondes speelde, zou er een grote opschudding zijn in de ratings van de meeste spelers. Een wereldwijde dubbele round robin zou nog wat meer veranderingen aanbrengen, maar de Zwitsers zouden een goed begin zijn om ratingfouten op te lossen – tenminste in het midden met gevestigde spelers. Je hebt nog steeds het probleem met nieuwe spelers die de beoordelingen vervormen.