Jag hade detta ursprungligen publicerat på StackOverflow eftersom det kan vara ett fel i implementeringarna , men vissa föreslog att jag skulle skriva till matematik. Jag hittade just denna stackexchange och jag tänkte vem som är bättre? Vissa av er kanske känner till utan att det verkar riktigt eller inte utan behov av felsökning. Alla länkar till online-miniräknare eller alternativa klassificeringsmetoder är välkomna.
Glicko-2 är ett klassificeringssystem som används i schack men kan användas i många andra situationer. Glicko-2 är en förbättring av Glicko-1, som tog upp problem med den äldre ELO-klassificeringen.
Det som gör Glicko-2 speciellt i jämförelse med version 1 är att den innehåller en högre betygsavvikelse (RD) längre har någon varit inaktiv. Det görs med tanken på en systemkonstant som relaterar till tids- / betygsperioder.
Ett exempel som skrivs upp från författaren finns här: http://www.glicko.net/glicko/glicko2.pdf .
Inom detta dokument förklarar han:
Glicko-2-systemet fungerar bäst när antalet spel under en betygsperiod är måttligt till stort, säg i genomsnitt minst 10-15 spel per spelare under en betygsperiod. Längden på tiden för en betygsperiod bestäms av administratören.
Antar att en grupp aktiva schackspelare spelar 10-15 matcher i genomsnitt under en månadsperiod skulle administratören sedan uppdatera betyg i slutet av varje månad.
Jag behövde en PHP-implementering av klassificeringssystemet Glicko-2 och stötte på följande:
Implementering av JavaScript för Glicko-2
- JavaScript hade ett litet fel, i vilket inte det matchade det tekniska uppskrivningsexemplet, författaren tyckte att det var tillräckligt nära och inte brydde sig om att felsöka.
- PHP-implementeringen plågades av många buggar, men det var inte uppenbart om du inte gjorde mer än en betygsperiod (som den tekniska skrivningen upp nev er visar förväntade värden på)
- Slutligen verkade Excel-kalkylatorn vara felfri och den mest professionella, gjord av någon i schacksamhället. När JavaScript-felet var löst matchade JavaScript och Excel-kalkylatorn väldigt nära varandra (om än inte perfekt, kunde vara inom avrundningsfel)
Jag hade rättat till buggarna (och skickat problem / patchar till författarna) Jag kunde hitta på PHP- och JavaScript-versionerna för att matcha så nära Excel-kalkylatorn
Nu är jag 99% säker på att jag har en korrekt Glicko-2-implementering (mellan 3 av dem) för analys och det är då jag stötte på något konstigt och ämnet för denna diskussion.
Med tanke på den föreslagna standard för Glicko-2 för en ny spelare:
Rating: 1500 RD: 350 Volatility: 0.06
Om du möter en genomsnittlig motståndare med betyg 1378 och RD 99 ( Källa ) bara en gång varje betygsperiod (1 månad) för de kommande 12 perioderna (ett år) kommer du att ha ackumulerat en antagen Nationell klass A (1800-1999) betyg 1852 när du i verkligheten har slog bara 12 genomsnittliga spelare under 12 månader.
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 〃
Om du möter 2 genomsnittliga motståndare varje betygsperiod, kan du komma till National Class A cirka 4-5 månader och bara möta 8-10 genomsnittliga motståndare.
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 〃
Är dessa antaganden korrekta? Finns det ett fel i min miniräknare?
Om det inte är ett fel, vilka är några sätt att motverka detta förutom:
- Betrakta ”sann bedömning” som nedre gräns för avvikelsen (Betyg – RD)
- Visa inte inaktiva användares betyg
- Visa inte användare med mindre än N-spel
Kommentarer
Svar
Jag arbetade med en Scala-implementering för några månader sedan, även om den var lite opolerad – jag borde gå tillbaka för att avsluta den. Jag fick åtminstone några rimliga resultat från det.
Om du vinner varje spel du spelar, ja, kommer ditt betyg att bli ganska hög även om du bara spelar mot spelare med lågt betyg. Sannolikheten att du kommer att vinna varje match mot en sådan motståndare är förmodligen om vad en klass A-spelare skulle uppnå (även om det antagligen jag är lite uppblåst på grund av den relativt höga RD, fortfarande).
Det bästa sättet att motverka, enligt min mening, är att inte betrakta någon med en RD över ett visst belopp som ett stabilt betyg – dvs. anser att det är ”provisoriskt”. För att faktiskt vinna en titel, åtminstone i USCF, har de ett system med normer, där du måste prestera på en viss nivå i en turnering om 4 spel eller mer (4 gånger tror jag), vilket gör sannolikheten att spela mot ~ 1378 för hela turneringen [fyra gånger] mycket osannolikt.
Är ditt mål att använda detta för schack? Vad är ditt användningsfall?
Uppdatering: FICS hanterar det genom att bara överväga personer med en RD på < 80 aktiva. (De använder fortfarande Glicko-1, tror jag.) http://www.freechess.org/Help/ficsfaq.html#Q005.003
Och av sättet använder Glicko-1 också RD / tidsförfall. Glicko-2: s främsta förbättring var ”volatilitet” -faktorn, som gör det möjligt för personer med oregelbundna resultat eller stabila resultat att beräknas mycket lite annorlunda. Jag tror att det är en mycket liten tweak till Glicko-1 som orsakar betydande extra beräkning – som du var jag fortfarande intresserad av att beräkna den. Jag frågade faktiskt Glickman själv om några ytterligare datapunkter för testning, men han var för upptagen för att kunna leverera dem just då.
Kommentarer
- FYI, a USCF-klassnivåtitel kräver att man tjänar en norm i fem turneringar.
Svar
Alla klassificeringssystem har problem med verkliga livet. I bästa fall kan ingen av dem göra mer än att ungefär gissa på din förmåga.
De kommer att klara sig bättre på GM-nivån eftersom dessa spelare är mer konsekventa och tenderar att spela mer GM: er; medan vi andra är mer inkonsekventa och tenderar att spela ett bredare utbud av spelare med lägre betyg som också är mer inkonsekventa. Och nya spelare tenderar att förbättra sig mycket snabbare när de spelar i färre turneringar vilket ytterligare snedvrider alla betyg. Och på alla nivåer har vissa spelare lediga dagar eller försöker inte lika hårt om det inte ändrar sin position i slutresultatet.
Att försöka finjustera betyg så mycket som att Glicko2 är ett dåraktigt ärende.
En annan faktor som förvärrar problemet är att spelare tenderar att spela samma spelare. Om det fanns ett världsomspännande obligatoriskt schweiziskt system som spelade tillräckligt med omgångar skulle det bli en stor skakning i de flesta spelares betyg. En världsomspännande dubbel omgång skulle göra några fler förändringar men schweizern skulle vara en bra start för att fixa betygsfel – åtminstone i mitten med etablerade spelare. Du har fortfarande problemet med att nya spelare snedvrider betyg.