User:Annoxqrystal/Wikipedysta:Annoxqrystal/System oceny Glicko

System rankingowy Glicko i system rankingowy Glicko-2 to metody oceny siły gracza w grach zręcznościowych, takich jak szachy i Go. System ratingowy Glicko został wynaleziony przez Marka Glickmana w 1995 roku jako ulepszenie systemu ratingowego Elo i początkowo miał być używany głównie jako system ratingowy w szachach. Głównym wkładem Glickmana w pomiary jest "wiarygodność ocen", zwana RD, dla odchylenia ocen.

Przegląd
Mark Glickman stworzył system oceny Glicko w 1995 roku jako ulepszenie systemu ratingowego Elo.

Zarówno system Glicko, jak i Glicko-2 są własnością publiczną i zostały zaimplementowane na serwerach gier online, takich jak Pokémon Showdown, Pokémon Go, Lichess, Free Internet Chess Server, Chess.com, Online Go Server (OGS), Counter-Strike: Global Offensive, Quake Live, Team Fortress 2, Dota 2, Dota Underlords, Guild Wars 2, Splatoon 2 i 3, Dominion Online, [https://tetr.io/ TETR. IO] i konkurencyjnych konkursach programistycznych.

Odchylenie wiarygodności (RD) mierzy dokładność oceny gracza, gdzie RD jest równe jednemu odchyleniu standardowemu. Na przykład gracz z oceną 1500 i RD równym 50 ma rzeczywistą siłę między 1400 a 1600 (dwa odchylenia standardowe od 1500) z 95% pewnością. Dwukrotnie (dokładnie: 1,96) RD jest dodawane i odejmowane od jego oceny, aby obliczyć ten zakres. Po grze, wielkość zmiany oceny zależy od RD: zmiana jest mniejsza, gdy RD gracza jest niski (ponieważ jego ocena jest już uważana za dokładną), a także gdy RD przeciwnika jest wysoki (ponieważ prawdziwa ocena przeciwnika nie jest dobrze znana, więc niewiele informacji jest zdobywanych). Sam RD zmniejsza się po rozegraniu gry, ale będzie powoli wzrastać wraz z upływem czasu bezczynności.

System ratingowy Glicko-2 ulepsza system ratingowy Glicko i dodatkowo wprowadza zmienność ratingu σ. Bardzo nieznacznie zmodyfikowana wersja systemu rankingowego Glicko-2 została wdrożona przez Australijską Federację Szachową.

Krok 1: Określenie odchylenia ocen
Nowe odchylenie ocen ($$RD$$) jest obliczane na podstawie starego odchylenia ocen ($$RD_0$$):

$$RD = \min\left(\sqrt{{RD_0}^2 + c^2 t},350\right)$$

gdzie $$t$$ to ilość czasu (okresów rankingowych) od ostatnich zawodów, a "350" to RD gracza bez ratingu. Jeśli kilka gier miało miejsce w jednym okresie rankingowym, metoda traktuje je jako rozegrane jednocześnie. Okres oceny może być tak długi, jak kilka miesięcy lub tak krótki, jak kilka minut, w zależności od tego, jak często organizowane są gry. Stała $$c$$ opiera się na niepewności umiejętności gracza w określonym czasie. Można ją wyprowadzić z dokładnej analizy danych lub oszacować, biorąc pod uwagę czas, jaki musiałby upłynąć, zanim odchylenie oceny gracza wzrosłoby do poziomu gracza bez oceny. Jeśli założymy, że potrzeba 100 okresów ratingowych, aby odchylenie ratingu gracza powróciło do początkowej niepewności 350, a typowy gracz ma odchylenie ratingu 50, wówczas stałą można znaleźć, rozwiązując $$350 = \sqrt{50^2 +100c^2}$$ dla $$c$$.

Lub

$$c = \sqrt{(350^2 - 50^2)/100} \approx 34.6$$

Krok 2: Określenie nowej oceny
Nowe oceny, po serii $$m$$ gier, są określane przez następujące równanie:

$$r = r_0 + \frac{q}{\frac{1}{RD^2} + \frac{1}{d^2}}\sum_{i=1}^{m}{g(RD_i)(s_i-E(s|r_0,r_i,RD_i))}$$

gdzie:

$$g(RD_i) = \frac{1}{\sqrt{1 + \frac{3 q^2 (RD_i^2)}{\pi^2} }}$$

$$E(s|r_0,r_i,RD_i) = \frac{1}{1+10^{\left(\frac{g(RD_i)(r_0-r_i)}{-400}\right)}}$$

$$q = \frac{\ln(10)}{400} = 0.00575646273$$

$$d^2 = \frac{1}{q^2 \sum_{i=1}^{m}{(g(RD_i))^2 E(s|r_0,r_i,RD_i) (1-E(s|r_0,r_i,RD_i))}}$$

$$r_i$$ reprezentuje oceny poszczególnych przeciwników.

$$RD_i$$ reprezentuje odchylenia ratingowe poszczególnych przeciwników.

$$s_i$$ reprezentuje wynik poszczególnych gier. Wygrana to 1, remis to $$\frac{1}{2}$$, a przegrana to 0.

Krok 3: Określenie nowego odchylenia ocen
Funkcja wcześniejszego obliczania RD polegała na odpowiednim zwiększeniu RD w celu uwzględnienia rosnącej niepewności co do poziomu umiejętności gracza w okresie braku obserwacji przez model. Teraz RD jest aktualizowany (zmniejszany) po serii gier:

$$RD'=\sqrt{\left(\frac{1}{RD^2}+\frac{1}{d^2}\right)^{-1}}$$

Algorytm Glicko-2
Glicko-2 działa w podobny sposób do oryginalnego algorytmu Glicko, z dodatkiem zmienności oceny $$\sigma$$ która mierzy stopień oczekiwanych wahań w ocenie gracza, w oparciu o to, jak nieregularne są jego występy. Na przykład, zmienność ratingu gracza byłaby niska, gdy osiągałby on stały poziom, a wzrosłaby, gdyby osiągał wyjątkowo dobre wyniki po tym okresie stałości. Poniżej przedstawiono uproszczone wyjaśnienie algorytmu Glicko-2:

Krok 1: Oblicz wielkości pomocnicze
W jednym okresie rankingowym, gracz z aktualnym ratingiem $$\mu$$ i odchyleniem ratingu $$\phi$$ gra przeciwko $$m$$ przeciwnikom, z ratingami$$\mu_1,...,\mu_m$$ i RD $$\phi_1,...,\phi_m$$ ,co daje wynik $$s_1,...,s_m$$. Najpierw musimy obliczyć wielkości pomocnicze $$v$$ i $$\Delta$$:

$$v = \left[ \sum_{j=1}^m g(\phi_j)^2 E(\mu,\mu_j,\phi_j) \{1 - E(\mu,\mu_j,\phi_j)\} \right]^{-1}$$

$$\Delta = v \sum_{j=1}^m g(\phi_j) \{s_j - E(\mu,\mu_j,\phi_j)\}$$

gdzie:

$$g(\phi_j) = \frac{1}{\sqrt{1 + 3\phi_j^2/\pi^2}},$$

$$E(\mu,\mu_j,\phi_j) = \frac{1}{1 + \exp\{-g(\phi_j)(\mu - \mu_j)\}}.$$

Krok 2: Określ nową zmienność ratingu
Następnie musimy wybrać małą stałą $$\tau$$ która ogranicza zmienność w czasie, na przykład $$\tau$$ = 0.2 (mniejsze wartości $$\tau$$ zapobiegają dramatycznym zmianom oceny po zdenerwowaniu). Następnie, dla

$$ f(x) = \frac{1}{2}\frac{e^x(\Delta^2 - \phi^2 - v - e^x)}{(\phi^2 + v + e^x)^2} - \frac{x-\ln({\sigma^2})}{\tau^2},$$

musimy znaleźć wartość $$A$$ która spełnia warunek $$f(A)=0$$. Skutecznym sposobem rozwiązania tego problemu byłoby użycie algorytmu Illinois, zmodyfikowanej wersji procedury regula falsi. Po zakończeniu tej iteracyjnej procedury ustalamy nową zmienność ratingu $$\sigma'$$ jako

$$\sigma' = \exp\{A/2\}.$$

Krok 3: Określenie nowego odchylenia i oceny ratingowej
Następnie otrzymujemy nowy RD

$$\phi' = 1\Big/\sqrt{\frac{1}{\phi^2 + \sigma'^2} + \frac{1}{v}},$$

i nową ocenę

$$\mu' = \mu + \phi'^2 \sum_{j=1}^m g(\phi_j) \{s_j - E(\mu,\mu_j,\phi_j)\}.$$

Te oceny i RD są w innej skali niż w oryginalnym algorytmie Glicko i musiałyby zostać przekonwertowane, aby prawidłowo porównać te dwa algorytmy.

Zobacz też

 * system rankingu ELO

Linki zewnętrzne

 * Strona internetowa Glicko profesora Glickmana
 * System oceny TrueSkill firmy Microsoft zapożycza wiele pomysłów od Glicko.
 * implementacja forwardloop/glicko2s Glicko-2 dla JVM
 * Implementacja RobKohr/glicko JavaScript Glicko-2.
 * mmai/glicko2js Implementacja javascript i node.js po stronie klienta Glicko-2
 * deepy/glicko2 Implementacja Pythona Glicko-2.
 * sublee/glicko2 Implementacja Pythona Glicko-2.
 * Implementacja PlayerRatings R Glicko autorstwa Aleca Stephensona i Jeffa Sonasa.
 * scala-glicko2 Implementacja Scala Glicko-2.
 * Implementacja dimos/glicko2 Glicko-2 dla Scala i Scala.js