The Way

Elo Rating System (엘로 평점 시스템) 본문

잡정보

Elo Rating System (엘로 평점 시스템)

Jeonggyun 2018. 5. 31. 20:48

Elo Rating System은 각종 게임이나 바둑, 체스 등 실력을 점수화시키는 곳이라면 널리 쓰이는 평점 시스템이다.


기본적으로 다음과 같은 가정을 만족시키도록 설계되었는데,


"A가 B를 10배 많이 이기고, B가 C를 10배 많이 이기면 A가 C를 100배 많이 이긴다"


다시 말해, A가 B가 11경기를 했을 때 10:1이고, B가 C와 11경기를 했을 때 10:1이면 A와 C는 101경기를 했을 때 100:1이 되도록 설계된 것이다.


이길 확률인 '승률'과는 미묘하게 차이가 있음을 확인하자.

승률끼리의 곱인 $\frac{10}{11} * \frac{10}{11} = \frac{100}{121}$를 만족하지는 않는다는 것에 유의.


이길 확률이 10배 차이날 때의 점수차를 400점으로 한다. (여기서 이길 확률이 10배라는 것은, 승률은 10/11 = 90.9%가 됨을 다시 한 번 기억하자)

이 때 점수차가 400점인 사람들은 이길 확률이 무조건 10배가 나오도록 설계되었다. 이러한 성질을 만족하는 것은 당연히, 로그를 사용하는 것이다.


즉, 각 점수를 $R_A$, $R_B$라 했을 때

$$400\log_{10}{\frac{P(B가 승리)}{P(A가 승리)}} = R_B - R_A$$

에서


$$\frac{P(B가 승리)}{P(A가 승리)} = 10^{(R_B-R_A)/400}$$

이 성립한다.


$P(A가 승리) + P(B가 승리) = 1$이므로 대입해 계산하면


$$P(A가 승리) = \frac{1}{1 + 10^{(R_B-R_A)/400}}$$

임을 알 수 있다.


점수의 조정은, (실제 승리 횟수 - 예상 승리 횟수)에 상수 k를 곱해 빼거나 더해준다.

k는 보통 32, 24, 16 등의 값을 쓰는데 점수대가 높을수록 작은 값을 쓴다. 이는 급격한 변동을 막기 위해서이다.

참고로 비겼을 때는 0.5승으로 처리한다.


예를 들어, 1600점과 1700점이 경기를 할 때, 1700점의 예상 승리 횟수는 위 공식에 대입하면 0.64회이다.

실제로 1700점이 이겼다고 했을 때, 대결 후 점수는 1700 + 32(1 - 0.64) = 1712점이 된다.


여러 명의 플레이어들이 같이 게임을 할 경우도 비슷하게 계산한다.


예를 들어 1613점인 플레이어가 총 5경기를 하는데,

1609점한테 지고, 1477점과 비기고, 1388점에게 이기고, 1586에게 이기고, 1720점에게 졌다고 해보자.


실제 승리 횟수는 2승 1무 -> 2.5회이다.

예상 승리 횟수는 각각 계산해보면 0.51회, 0.69회, 0.79회, 0.54회, 0.35회이므로 합하면 2.88회이다.


따라서 최종 점수는 1613 + 32(2.5 - 2.88) = 1601점이 된다.



1대1 게임이 아닌 여러 명이 동시에 플레이하는 경우는 어떨까?


가령 카트라이더 그랑프리 같은 경우가 있겠다. 8명이 동시에 게임을 해서 1등~8등까지 순위가 매겨진다고 하자.

여러 방법이 있겠지만, 이 경우

1등은 2~8등에게 이겼다고 (7승),

2등은 1등에게 지고 3~8등에게 이겼다고 (6승),

3등은 1~2등에게 지고 4~8등에게 이겼다고 (5승),

...

8등은 1~7등에게 모두 졌다고 (0승) 가정하고 계산할 수 있겠다. 뭐, 다른 방법이 있을 수도 있다.


가령 카트라이더 그랑프리 같은 경우 '리타이어'가 생기면 점수가 더 많이 오르므로, 약간의 또다른 가중치가 있을 수도 있다.

또, 400이라는 값이나 k값 등도 바뀔 수 있으니 정확한 공식은 세우기 나름일 것이다.

Comments