{{위키데이터 속성 추적}}
'''글리코 평점 시스템''' 및 '''글리코-2 평점 시스템'''은 [[체스]] 및 [[바둑]]과 같은 2인 게임에서 플레이어의 실력을 평가하는 방법이다. [[엘로 평점 시스템|엘로 등급 시스템]]을 개선하기 위해 Mark Glickman에 의해 발명되었으며 처음에는 [[체스 평가 시스템|체스 평점 시스템]]에 주로 사용되었다. 측정에 대한 Glickman의 주요 기여는 RD(Ratings Deviation, 평점 편차)라는 "평점 신뢰도"의 도입이다.

== 개요 ==
글리코 및 글리코-2 평점 시스템은 모두 공개 도메인(public domain)에 있으며 온라인 [[게임 서버]] (예: [[포켓몬스터|Pokémon Showdown]], [[Lichess]], [[프리 인터넷 체스 서버|Free Internet Chess Server]], [[Chess.com]], OGS(Online Go Server),<ref>{{웹 인용|url=https://forums.online-go.com/t/ogs-has-a-new-glicko-2-based-rating-system/13058|제목=OGS has a new Glicko-2 based rating system!|날짜=7 August 2017|확인날짜=2020-04-19}}</ref> [[카운터-스트라이크: 글로벌 오펜시브]], [[팀 포트리스 2]],<ref>{{웹 인용|url=https://store.steampowered.com/oldnews/38643|제목=Team Fortress 2 Update Released|성=Valve|확인날짜=29 June 2021}}</ref> [[도타 언더로드]], [[길드워 2]],<ref>{{웹 인용|url=https://www.guildwars2.com/en/news/finding-the-perfect-match/|제목=Finding the perfect match|성=Justin|이름=O'Dell|확인날짜=16 January 2015}}</ref> [[스플래툰 2]],<ref>{{웹 인용|url=https://oatmealdome.me/blog/an-in-depth-look-at-the-splatoon-2-ranking-system/|제목=An In-Depth Look at the Splatoon 2 Ranking System|성=OatmealDome|웹사이트=oatmealdome.me|언어=en-US|확인날짜=2021-06-16}}</ref> [[도미니언 (카드 게임)|Dominion Online]], TETR. IO, Gods Unchained<ref>{{웹 인용|url=https://twitter.com/ChrisClayPlays/status/1091089344264204289|제목=ChrisClay on Twitter: "We're using a Glicko style system for MMR."|성=Clay|이름=Chris|날짜=31 January 2019|웹사이트=Twitter|url-status=live|확인날짜=7 December 2020}}</ref> ), 경쟁 프로그래밍 대회 등에서 사용된다. 시스템에 사용된 공식은 Glicko 웹사이트에서 찾을 수 있다.

RD는 플레이어 평점의 정확도를 측정하며, 하나의 RD는 하나의 표준 편차와 같다. 예를 들어, 등급이 1500이고 RD가 50인 플레이어는 95% 신뢰로 1400에서 1600(1500에서 표준 편차의 2배) 사이의 실제 실력을 갖는다. 이 범위는 평점에서 RD의 2배(정확히는 1.96배) 더하고 빼서 계산한다. 게임 후 평점 변경량은 RD에 따라 다른데, 플레이어의 RD가 낮을 때(자신의 평점이 이미 정확한 것으로 간주되기 때문에) 또는 상대의 RD가 높을 때(상대방의 실제 평점이 정확하지 않기 때문에 게임 결과로 얻는 정보가 거의 없기 때문에) 변화가 적다. RD 자체는 게임을 한 후 감소하지만, 비활성 시간이 지날수록 서서히 증가한다.

글리코-2 평점 시스템은 글리코 평점 시스템을 개선하고 ''평점 변동성'' σ를 추가로 도입한다.<ref name=":0"/> 글리코-2 평점 시스템의 아주 약간 수정된 버전은 [[호주 체스 연맹]]에 의해 구현되었다.<ref>{{웹 인용|url=https://auschess.org.au/wp-content/uploads/2018/09/ACF-Ratings-By-Law.pdf|제목=Australian Chess Federation Ratings By-Law|확인날짜=17 January 2019}}</ref>

== 글리코 알고리즘 ==

=== 1단계: 등급 편차 결정 ===
새로운 등급 편차 <math>RD</math>는 이전 등급 편차 <math>RD_0</math>로부터 얻는다.

<math>RD = \min\left(\sqrt{{RD_0}^2 + c^2 t},350\right)</math>

이때 <math>t</math>는 마지막 대회 이후부터 흐른 시간(평가 기간)이며, 평가되지 않은 플레이어의 RD는 350으로 가정한다. 하나의 평가 기간 내에 여러 게임이 발생한 경우 동시에 발생한 것으로 처리한다. 평가 기간은 게임을 얼마나 자주 편성하느냐에 따라 길게는 몇 개월, 짧게는 몇 분 정도로 짧게도 사용할 수 있다. 상수 <math>c</math>는 일정 시간 동안 측정된 플레이어의 기술의 불확실성을 기반으로 정해진다. 이는 철저한 데이터 분석으로부터 계산하거나, 또는 플레이어의 등급 편차가 등급이 지정되지 않은 플레이어의 등급 편차로 증가하기까지 경과해야 하는 시간을 고려하여 추정할 수 있다. 예를 들어, 플레이어의 평점 편차가 초기 불확실성 350으로 되돌아가는데 100 평가 기간이 걸린다고 가정하고 일반적인 플레이어의 평점 편차가 50인 경우, <math>350 = \sqrt{50^2 +100c^2}</math>를 풀어<math>c = \sqrt{(350^2 - 50^2)/100} \approx 34.6</math>를 얻을 수 있다.<ref>{{웹 인용|url=http://www.glicko.net/glicko.html|제목=Welcome to Glicko ratings}}</ref>

=== 2단계: 새 평점 결정 ===
일련의 게임을 <math>m</math>회 진행한 후 새로운 평점은 다음 방정식에 의해 결정된다.

<math>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))}</math>

식에 사용되는 각 변수의 값은 다음과 같이 결정된다.

<math>g(RD_i) = \frac{1}{\sqrt{1 + \frac{3 q^2 (RD_i^2)}{\pi^2} }}</math>

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

<math>q = \frac{\ln(10)}{400} = 0.00575646273</math>

<math>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))}}</math>

<math>r_i</math>는 각 상대의 평점을 나타낸다.

<math>RD_i</math>는 각 상대의 등급 편차를 나타낸다.

<math>s_i</math>는 각 게임의 결과를 나타내고, 승리는 1, 무승부는 <math>\frac{1}{2}</math>, 패배는 0이다.

=== 3단계: 새로운 등급 편차 결정 ===
1단계에서의 RD 계산의 기능은 모델에 의해 관찰되지 않는 기간 동안 플레이어의 기술 수준에서 증가하는 불확실성을 설명하기 위해 RD를 적절하게 증가시키는 것이었다. 3단계에서는 일련의 게임 후에 RD를 갱신(감소)한다.

<math>RD'=\sqrt{\left(\frac{1}{RD^2}+\frac{1}{d^2}\right)^{-1}}</math>

== 글리코-2 알고리즘 ==
글리코-2는 원래 글리코 알고리즘과 유사한 방식으로 작동하고,  플레이어의 경기력이 얼마나 불규칙한지에 따라 플레이어의 평점이 예상되는 변동 정도인 평점 변동성 <math>\sigma</math>가 추가되었다. 예를 들어, 플레이어의 평점 변동성은 일관된 수준의 실력을 보일 때 낮을 것이고, 그 일관성을 갖는 기간 후에 예외적으로 강력한 결과를 얻을 때 증가할 것이다. 글리코-2 알고리즘에 대한 간략한 설명은 다음과 같다.<ref name=":0"/>

=== 1단계: 보조량 계산 ===
한 평가 기간 동안, 현재 평점이 <math>\mu</math>이고 평점 편차가 <math>\phi</math>인 플레이어가, 평점이 <math>\mu_1,...,\mu_m</math>이고 평점 편차가 <math>\phi_1,...,\phi_m</math>인 상대 <math>m</math>와 게임을 하여 결과적으로 점수 <math>s_1,...,s_m</math>를 얻었다고 가정한다. 먼저 보조량 <math>v</math>, <math>\Delta</math>를 계산한다.

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

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

식에서 쓰인 함수는 다음과 같다.

<math>g(\phi) = \frac{1}{\sqrt{1 + 3\phi^2/\pi^2}},</math>

<math>E(\mu,\mu_j,\phi_j) = \frac{1}{1 + \exp\{-g(\phi_j)(\mu - \mu_j)\}}.</math>

=== 2단계: 새로운 평점 변동성 결정 ===
시간 경과에 따른 변동성을 제한하는 작은 상수 <math>\tau</math>를 선택한다. 예를 들어, <math>\tau=0.2</math>를 선택할 수 있다. <math>\tau</math>가 작을수록 결과가 뒤집혔을 때 급격한 평점 변화를 막는다. 함수

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

에 대해, <math>f(A)=0</math>를 만족하는 값 <math>A</math>를 찾는다. 이를 해결하는 효율적인 방법은 ''[[레귤라 거짓|regula falsi]]'' 절차의 수정된 버전인 Illinois 알고리즘을 사용하는 것이다. 이 반복 절차가 완료되면 새로운 등급 변동성을 <math>\sigma' = \exp\{A/2\}</math>으로 설정한다.

=== 3단계: 새로운 평점 편차 및 평점 결정 ===
플레이어는 새로운 평점 편차와 평점을 얻는다.

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


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

이러한 평점과 평점 편차는 기존의 글리코 알고리즘과 다른 척도에 있으며, 둘을 적절하게 비교하려면 변환 과정을 거쳐야 한다.<ref name=":0">{{웹 인용|url=http://www.glicko.net/glicko/glicko2.pdf|제목=Example of the Glicko-2 system|성=Glickman|이름=Mark E.|날짜=November 30, 2013|웹사이트=Glicko.net|확인날짜=January 27, 2020}}</ref>

== 같이 보기 ==

* 체스 평가 시스템

== 참고 문헌 ==
<references />

== 외부 링크 ==
* [http://www.glicko.net/glicko.html Glickman 교수의 Glicko-웹사이트]
* Microsoft의 TrueSkill [https://www.microsoft.com/en-us/research/publication/trueskilltm-a-bayesian-skill-rating-system/] 등급 시스템은 Glicko의 많은 아이디어를 차용합니다.
* [https://github.com/forwardloop/glicko2s forwardloop/glicko2s] JVM용 Glicko-2 구현
* [https://github.com/RobKohr/glicko RobKohr/glicko] JavaScript Glicko-2 구현.
* [https://github.com/mmai/glicko2js mmai/glicko2js] 클라이언트 측 javascript 및 node.js Glicko-2 구현
* [https://github.com/deepy/glicko2 deepy/glicko2] Python Glicko-2 구현.
* [https://github.com/sublee/glicko2 sublee/glicko2] Python Glicko-2 구현.
* Alec Stephenson과 Jeff Sonas의 [https://cran.r-project.org/web/packages/PlayerRatings PlayerRatings] R Glicko 구현.
* [https://github.com/andriykuba/scala-glicko2 scala-glicko2] Scala Glicko-2 구현.
* [https://github.com/mrdimosthenis/glicko2 dimos/glicko2] Scala 및 Scala.js를 위한 Glicko-2 구현

[[분류:체스 등급 제도]]