- 다양한 주제에 대해 자유롭게 글을 작성하는 게시판입니다.
Date | 17/06/03 15:58:25 |
Name | 스카이저그 |
File #1 | Elo.zip (531.0 KB), Download : 114 |
Subject | (스타1)Elo 레이팅, 선수들의 실력, 맵 밸런스 |
스타 경기를 보며 선수들의 승률에 관심을 갖던 시기가 있었다. 나는 게임을 못해서 주로 선수들의 데이터와 맵 밸런스를 분석하며 놀았다. 당연히 승률에 대해서도 잘 알고 있다고 생각했었다. 그러던 어느날 나는 내가 확률에 대해 까막눈이라는 사실을 갑자기 알게 되었다. 숫자와 확률은 다르다. 이 단순한 사실을 모르고 있었다는 것에 놀란적이 있었다. 확률과 숫자는 다르다. 승률 70% 를 가진 선수와 승률 60% 가진 선수가 있다고 할때 둘의 차이를 단순히 10% 라고 말 할 수 있을까? 바로 이 질문이였다. 전에는 나 역시 10%라고 말했지만 그게 아니라는 걸 알았다. 이렇게 생각해보자 승률 60% 선수와 승률 60% 선수가 경기한다면 같은 실력이라고 할 수 있으니 50% 즉 5:5 승부를 예상할 수 있다. 70% 선수는 60% 선수보다 10% 높으니 +10%를 해주는 것이 옳지 않을까? 따라서 승률 70% 선수와 승률 60% 선수가 경기한다면 A선수 60% B선수 40% 이것이 합리적이다는 것이다. 둘의 차이는 10% 차이가 아니라 20% 다. 너무 간단하기 때문에 어설퍼 보일 수 있지만 실은 괜찮은 방법이다. 나중에 알게된 방법이지만 제대로 계산하려면 체스나 바둑에서 쓰는 Elo 공식을 사용해야 한다. 하지만 거기 쓰이는 복잡한 공식을 이용한 결과와 거의 같다. 1% 차이 밖에 없다. 승률 40~70% 영역에서 사용할 수 있고 가장 차이가 많이 나는 경우에도 오차는 2% 정도다. 범위를 벗어나면 오차가 커지겠지만 선수들의 승률은 거진 저 범위안에 있으니 그럭저럭 쓸만한 방법이다. 그런데 6대 4라는 결과는 20% 차이가 아니라 50% 차이라고도 말할 수 있다. 둘이 10번 경기한다면 A가 6번 B가 4번을 이길테니 A 선수가 1.5배 잘한다. 둘 사이의 실력차이는 1.5배다. 즉 50% 차이가 있다 라고도 할 수 있다. 하지만 승률에 관심 있는 사람이라면 경험과 조금 다르다는 것도 알 것이다. 경험에 비추어 보면 둘의 차이는 더 크다. 데이터의 한계 때문이다. 게임은 보통 진 선수는 탈락하고 이긴 선수는 상위라운드로 올라가는 구조로 되어 있다. 상위 라운드로 갈 수록 더 강한 선수를 만날테니 당연히 승률이 떨어진다. 내가 얻을 수 있는 데이터는 상위라운드 효과로 실제보다 승률이 많이 떨어진 값 이다. 다행히 보정해주는 방법이 있다. Elo 공식을 해석하면 1라운드 위로 갈 수록 120.4점 높은 상대와 만난다고 예상할 수 있고 이걸 이용하면 계산이 가능하다. 보정 전에는 60% : 40% 지만 상위라운드 효과를 보정해 주면 70.4% : 29.6 % 로 예측할 수 있다. 경험에 비추어 보면 보정값이 더 현실적임을 알 수 있다. 보정 전에도 50% 차이가 있지만 상위라운드 효과까지 보정해주면 둘의 차이는 133%로 커진다. 확률을 숫자처럼 보고 두 선수의 승률 차이를 단순히 10%라고 읽는 것은 실제보다 차이를 훨씬 작게 보는 것이다. 실제 차이가 크다. 라는건 직관으로도 간단히 느낄 수 있지만 그게 얼마만큼인지 정확히 살펴보려면 아무래도 수학적 도구가 필요하다. 별을 보기 위해서 망원경을 쓰고 작은 세포를 보기 위해서 현미경을 쓰는 것과 마찬가지다. Elo 공식이라걸 사용하면 가능하다. 게임의 통계나 승률에 관심 있는 사람이라면 Elo 공식을 한번쯤 봤을 것이다. 래더점수나, 게임어 매칭 시스템은 미국의 물리학자이자 체스 플레이어인 Arpad Elo 교수님이 만든 Elo 레이팅 시스템이라는 걸 사용한다. 바둑, 체스를 비롯해 여러 게임에 널리 쓰인다. Elo 레이팅 시스템에서 확률을 계산하는 공식이 Elo 공식이다. 그걸 사용하는 것이다. Elo 공식을 소개하기 전에 일단 준비 운동이 필요할 것 같다. 앞에서 말한 것 처럼 대부분의 사람들은 확률의 세계에 익숙하지 못하기 때문이다. 먼저 이런 질문을 해볼 수 있다. 승률 55%인 선수가 50%인 선수와 경기한다면? 승리 확률은? 70% 인 선수와 50%인 선수일때의 승리 확률은 맨 처음 소개한 것 처럼 55% 라고 해도 되지만 여기서는 약간 다른 방식으로 접근해 볼까 한다. 50% 라는 것은 가장 평균적인 선수를 의미하는 것일 테니 당연히 55% 70% 역시 마찬가지다. 애초에 70%라는 확률이란게 평균값을 의미하는 것일테니 평균적인 선수와 경기한다면 이길 확률은 70% 일 것이다. 만약 90% 선수와 50% 선수가 대결한다면? 90%:10% 다. 숫자와 확률이 다르다는 감각이 약간 필요하다. 다만 지금 여기서 사용하는 승률값은 현실에서 얻을 수 없는 값이다. 물리학에서 공식을 유도하기 위해 '마찰이 없는 상태' 혹은 '공기가 없는 상태(진공)' 혹은 '이상상태' 라고 부르는 것들을 가정해야 하는 것 처럼 이상적인 승률값을 가정한 값이다. 한 선수가 모든 선수와 같은 횟수로 수백번 수천번씩 경기해서 얻은 승률 값이 있다면 이상적일 것이다. 이걸 이상적인 승률, 혹은 이론상의 승률 이라고 할 수 있는데 당연히 세상에 존재하지 않는다. 하지만 이론적으로 따질때는 이걸 사용하려 한다. 두번째 질문도 할 수 있다. 승률 1% 선수와 승률 2% 선수는 2배 차이라고 표현해도 무방해 보인다. 그런데 승률 99% 인 선수와 98%인 선수가 있다고 하자. 둘의 차이를 1% 라고 하는 것과 2배 차이라는 표현 중 어떤 쪽이 더 합리적일까? 승률 99% 선수가 50% 선수와 경기한다면 50%의 선수의 승리 확률은 1% 일것이다. 98% 선수와 50% 선수가 대결한다면 50% 선수의 승리 확률은 2%가 나올 것이다. 어떻게 보는 것이 옳을까? 세번째는 승률 50%인 선수와 55%인 선수의 5% 차이와 승률 80% 선수와 85% 선수의 5% 차이 중 어느 쪽이 더 클까? 이다. 쓸데 없는 걸로 머리 아프게 하지 말고 빨랑 Elo 공식이나 설명해! 라는 소리가 들리는 거 같긴 하지만 나는 승률이라는 것을 이해하기 위해 저런 질문을 수십개도 넘게 던졌었고 그 중 일부다. 감각을 익히라는 의미에서 설명한 것 뿐이니 너무 머리 쓸 필요는 없다. 하지만 아쉽게도 Elo 공식을 설명하기 전에 소개해야 할 것이 아직 한가지 더 남아있다. 다행히 이번에 소개할 것은 문제가 아니라 열쇠다. 위에 열거한 것을 포함 수 많은 질문들과 상대하는 과정에서 해결의 열쇠를 찾았다. 승률 값의 의미를 이해하고 Elo 공식을 이해하는데도 이것이 핵심이 된다. 너무 간단하기 때문에 아무렇지도 않게 보일 수 있겠지만 승률 논리에는 거의 항상 이 개념이 깔려 있다. 알고 나면 쉬워보일 수도 있지만 여기까지 도달하는 과정은 쉽지 않았다. 승률을 이해하고 Elo 값을 이해하는 열쇠는 간단하다. 승리 확률 나누기 패배할 확률이다. 승리확률/패배확률 이걸 실력지수 라고 이름 붙이고 s 값 이라고 하자. 승률 60% 라면 s=60%/40%= 1.5 승률 80% 라면 s=80%/20%= 4 공식으로 쓰면 어떤 선수의 승률이 x 라고 할때 패배확률은 (1-x) 이니 실력지수 s 는 s=x/(1-x) 이 숫자는 이런 의미를 갖고 있다. 요즘 잘나가는 임홍규 선수와 알파고(김성현) 선수가 스폰빵을 30번 했을때 스코어가 10대 20이였다면 s 값은 s(임홍규)=10/20 = 1/2 s(알파고)=20/10 = 2 실력 값의 의미는 '알파고 선수가 이길 확률이 2배 높다. 반대로 임홍규 선수가 이길 확률은 절반(1/2) 이다.' 정확한 표현은 아니지만 사용하기 좋은 표현도 있다. 좀 잔인한 표현이지만 '알파고 선수가 2배 잘한다.' (임홍규 선수보다) 반대로 임홍규 선수의 실력은 알파고 선수의 절반이다. 이렇게 표현할 수도 있다. 이것이 실력지수의 뜻이다. 마지막으로 (1-x) 라는 값에 대해서다. 여확률이라고 하고 x' 이라고 표현한다. 미분 표현이 아니다. x'=(1-x) 자주 나오는 표현이기에 소개한다. 실력지수를 여확률 표현을 이용하면 s=x/x' 이 된다. 실력지수 s 를 기억해 두고 Elo 공식에 들어가자. Elo공식 고민하지 말자 파일로 첨부한 엑셀에 있다. Elo 값으로 승부 예측이라는 것에 나온다. Elo 공식의 원본은 사실 이 식이다. R(나)-R(상대) = 400 log (x/(1-x)) x는 내가 이길 확률을 뜻한다. Elo 레이팅 점수는 대문자 R 을 주로 쓴다 (내 Elo 레이팅 점수)-(상대 Elo 레이팅 점수)= 400 log (x/(1-x)) 그런데 s=x/(1-x) 결국 R(나)-R(상대) = 400 log s 이 식을 필요에 따라 변형한 것이 Elo 공식이니 반대로 이 공식을 변형하면 다시 Elo 공식이 나온다. s 값의 의미는 위에 표현한 그대로니 공식의 의미는 상대 보다 10배 잘하면 랭킹점수가 400 점 높게 나온다는 뜻이다. 식을 보고 보고 바로 저 의미를 읽을 수 있다면 아마 학창시절 수학 1등급들을 수학으로 뚜까 패고 다니던 수학 깡패였을 것이다. 식을 사용하는 방법을 살펴 보겠다. 승률->랭크값 이다. Elo 50%(이론상 승률) 승률을 가진 사람이 기준이다. 그 사람에게 Elo 레이팅 1000을 준다. 따라서 레이팅 점수는 R = 1000+ 400 log (x/(1-x)) 라고 할 수 있다. 승률 80% 인 선수가 있다면 80% 레이팅 점수를 R(80%) 이라고 하면 R(80%) = 1000 + 400 log (80%/20%) R(80%) = 1240.82 승률 80% 인 선수의 Elo 점수다. 그렇다면 75% 인 선수의 레이팅 점수를 R(75%) 이라고 하면 R(75%) = 1000 + 400 log (75/25) R(75%) = 1190.85 승률로 레이팅 점수를 낼 수 있다. Elo 공식을 사용해서 두 선수를 계산해 주면 확률이 57.1%가 나온다. (Elo 값으로 승부 예측이라는 엑셀에 있다.) 이게 두 선수가 경기한다고 할때 80% 선수가 승리할 확률이다. 더 쉬운 방법도 있다. s값 즉 실력지수만 계산해도 된다. 80% 선수가 50% 선수와 경기할때 s 값은 4 75% 선수가 50% 선수와 경기할때 s 값은 3 두 값을 나누기 해주면 된다. 원하는 s 값은 s=4/3 이것이 답이다. 실력이 4배인 사람이 실력이 2배인 사람보다 2배 잘한다고 할 수 있다. 여기서는 실력지수 4와 3이니 4/3배 잘한다. 라고 할 수 있다. s 값만 구하면 승률값은 바로 나온다. x=s/(1+s) (s=x/(1-x) 정리해주면 나온다.) x=(4/3)/(1+4/3)=4/7=57.1% 답은 같지만 지수 로그 계산이 필요 없기 때문에 이쪽이 편해서 주로 이 공식을 사용한다. 위에 써 놓은 원본 Elo 공식을 이용하면 증명할 수 있다. ------------------------ R(1) = 1000 + 400 log s(1) R(2) = 1000 + 400 log s(2) 두 식을 빼주면 R(1) - R(2) = 400 log (s(1)/s(2)) 두 선수가 경기한다고 할때 R(나)-R(상대) = 400 log s 따라서 1,2 두 선수가 경기한다고 할때 원하는 s값은 s = s(1)/s(2) ------------------------ 사실 이 개념이 Elo 공식의 핵심이다. 언어로 표현하면 '2배 잘하는 선수 보다 2배 잘하는 선수는 4배 잘한다고 말할 수 있다.' 이다. ??????? 유치원생 장난 같아 보일 수 있지만 바로 이것이 Elo 공식의 핵심이다. 우리가 %로 보던 것들을 실력지수 s 값으로 고쳐서 보면 껍질을 벗겨서 알맹이를 볼 수 있다는 뜻이다. 실력지수 300 인 사람과 실력지수 150 이 경기한다면? 300/150=2 , 즉 실력차이가 2배라는 뜻이다. 따라서 둘이 30번 경기하면 20:10 정도를 기대할 수 있다. 이런 뜻이다. Elo 공식이 복잡해 보이는 것은 실력차이가 10배 날때 400점 차이난다. 라는 걸 수학적으로 쓰려다 보니 지수 로그란 옷을 입혔기 때문이다. Elo 공식과 s값은 수학적으로 같다. 실력지수로 Elo 공식을 보면 쉽게 이해할 수 있다. 여기서는 Elo 점수로 접근하는 법을 먼저 설명하고 s 값을 사용하는 방법을 나중에 말했지만 사실 내가 알게된 순서는 반대다. 둘이 같은 방법이란건 나중에 알게 됐다. 그래서 개인적으로는 s 값을 사용하는 것이 더 익숙하다. 이 글은 Elo 공식을 주제로 다루니 Elo 점수로 접근하기로 한다. 하지만 Elo 공식을 이런 방식으로 사용하는 경우를 볼 수 없다. 거기엔 충분히 그럴만한 사정이 있다. 여기서 사용한 승률은 우리가 현실 데이터로 얻을 수 있는 승률이 아니다. 위에서 말한 것 처럼 이론상의 승률 혹은 이상적인 승률값이다. 실제 데이터는 상위라운드 효과 때문에 이론상의 승률 보다 훨씬 낮아진다. 상위라운드 효과는 어떻게 계산할 수 있는가? 다행히 계산 방법이 존재한다. 1 라운드 올라갈 때 마다 상대의 레이팅 점수에 +120.4를 해주면 된다. 그리고 오차를 줄이는 방법으로 반복 계산을 해주면 된다. 실제 계산은 약간 복잡한다. 엑셀에 있다. 상위라운드 보정 어쩌고 적혀있는 엑셀이다. (방송 기준인 32강, 시드권 반영) 어떤 선수의 승률이 75% (실력 3) 이라면? 상위라운드 효과를 고려해 보정해 주면 그 선수의 진짜 실력은 95%(실력 20, Elo 랭크 1512.5)로 추정할 수 있다. 추가적으로 승률 75% 선수의 결승 진출 확률 79.6%, 결승전에서 승리할 확률은 58.3%, 우승확률 46.5% ,기대 경기수 14.4 (승리 10.8, 패배 3.6) 이런 것들을 추론해낼 수 있다. 당연히 엑셀에 있다. 재미있긴 하지만 Elo 공식을 응용한 수학적 장난에 불과하다. 계산에 빠지다 보면 지금 숫자로 다루는 것이 물건이 아니라 따뜻한 체온이 있고 숨도 쉬는 사람이라는 점을 자주 깜빡한다. 아직 신인이라 미숙한 시절이 있었고 당시 유행하던 전략 흐름도 있고 개인적인 컨디션 차이도 있다. 나이가 들고 전경기가 지나 실력이 줄어드는 것이 사람이다. 데이터의 소스 역시 한계가 있다. 32강 스타리그 계산했지만 실제로는 프로리그 경기 결과와 섞여 있다. 프로리그에서는 이영호,이제동 선수 같은 선수를 상대할 때는 어차피 질꺼? 하면서 일부러 약한 선수를 내보낸다. 현실적으로 얻을 수 있는 자료는 프로리그 전적과 상위라운드 효과가 있는 개인리그 전적이 섞여 있는 것이다. 이런 점을 감안한 것이 바로 Elo 시스템이다. 수학적으로는 오차 보정법이다. Elo 시스템에 대해서는 이미 설명한 글이 많으니 내가 쓴다 해도 같은 내용일 뿐이다. 다른 분들이 정말 잘 설명해 주었으니 참고해 보면 쉽게 알 수 있을 것이다. 얼마전 Elo 에 대해 생각나는 일이 있었다. 알파고가 Elo 레이팅을 사용해서 실력을 표현했기 때문이다. 이런데 쓰이는게 Elo 시스템이다. 체스의 경우 Elo 2500점 이상이면 그랜드 마스터를 준다. Elo 랭이팅 2600점의 뜻은 실력 지수로 s값이 1만이라는 뜻이다. 전투력 1만 이런 느낌이랄까? 레이팅 3000점이면 전투력 10만(실력지수 10만) 이세돌이 대충 10만 정도다. 이세돌과 대결했던 알파고 1.8의 Elo 레이팅 추정치가 4500 이였다. Elo 규칙을 사용한다면 당시 알파고의 전투력은 5억 6234만 이였다. 레이팅 점수에서 1000 점을 빼준 후 400을 나누고 그 값에 10의 n 승 해주면 된다. 알파고의 n 값은 8.75 다. (R = 1000 + 400 log s 그냥 앞에 소개했던 이 공식이다.) 5억 6234만 vs 10만 이니 .. 알파고 1.8은 이세돌 선수 보다 5623.4배 잘했던 놈이였다. 스타리그 역시 이런 방식으로 접근할 수 있다. 은별님 자료를 실력지수로 고처주면 2017/6/2 이영호(10.1),김택용(8.2),김민철(6.3),김정우(6.3),김성현(3.9) 조기석(3.7),염보성(3.4),도재욱(3.2),이영한(2.9),김승현(2.6) 김윤중(2.6),최호선(2.4),윤용태(2.3),임진묵(2.3),김명운(2.3) 박성균(2.2),이제동(2.2),조일장(2.1),김재훈(1.8),윤찬희(1.6) 이재호(1.5),정윤종(1.4),박수범(1.4),고석현(1.2),김경모(1.1) 한두열(1.1),송병구(1.1),진영화(1.1),임홍규(1.0),김건욱(1.0) 박성준(1.0),유영진(1.0),구성훈(0.9) ASL 결승을 예상해 보면 10.1/2.9=3.5 나온다. 이영호 선수가 3.5배 잘한다고 할 수 있고 승률로 고치면 이영호 선수의 승리확률은 3.5/4.5=77.8% 다. (x=s/(s+1)) Elo 시스템 때문에 Elo 점수를 사용하지만 계산은 s값으로 하는게 편하다. 다만 이건 단판전 승리 확률이다. 실제로는 5판 3승 이다. 이영호 선수의 승리 확률을 X라고 하면 이영호 선수의 결승전 승리 확률은 X³+3X³X'+6X³X'² = 92.37% 로 계산할 수 있다. 많은 문제점이 알려져 있지만 현실적으로는 Elo레이팅을 이용한 측정법이 아직까진 가장 합리적이다. 하지만 Elo 레이팅을 제공하는건 실제로는 정말 힘든 일이다. 노가다라고 해야할 만큼 많은 데이터 정리와 계산이 필요하다. PGR에서 은별님이 이 작업을 하고 계신다. 데이터가 축적되어야 하기에 시간이 정말 많이 걸리는 작업이다. 나 역시 응원하고 있다. 빨리 스타 1에도 Elo 레이팅 시스템을 사용할 수 있는 날이 왔으면 좋겠다. Elo 공식은 맵을 대상으로도 적용할 수 있다. 쉽게 말해 맵 밸런스를 추정할 수 있다. 개인적으로도 승률에 대해 깊이 생각하기 시작한 것은 맵 밸런스 때문이였다. 보통 다른 경기는 Elo 레이팅만으로도 충분하지만 종족의 차이도 있고 맵의 차이도 있다. 맵 밸런스에선 Elo 보단 s 값을 이용하면 설명이 쉽다. Elo 공식을 이해하기 전에 만든 것이기 때문에 맵 밸런스는 s 값을 사용해서 만들어져 있다. 맵 밸런스의 논리도 간단하다. 테란의 알파고 김성현 선수가 저그의 황제 임홍규 선수 보다 2배의 실력을 갖고 있는데 1.5배 유리한 맵에서 경기한다면? 2*1.5=3 // 알파고 선수는 홍규의 3배의 실력을 보여줄 것이다. 바로 이런 접근이다. 알파고 선수의 예상 승률은 3/4=75% 사실 이 글을 쓰게된 동기와도 관련 깊다. 아주 예전에 맵 밸런스에 대해 글을 쓰고 맵밸런스 계산기 라는 것을 만들어 올린적이 있었다. 워낙 인기 없던 글이라 묻혔지만 시간이 지났음에도 잊지 않아 주신 분이 계셨다. http://pgr21.com/?b=6&n=55995 링크의 '이치죠 호타루'라는 분이다. Special Thanks to 의 펠릭스가 바로 나다. ^^; 좀 엉뚱하게 나무위키의 파이썬 글 읽다가 우연히 알게 됐는데 내가 제공했던 계산툴을 이용해 200개가 넘는 맵 밸런스를 계산해 주신 거였다. 이치죠 님께서 수백개의 맵을 해석한 결과는 흔히 알고 있던 상식과 같다. 테뻔뻔, 프징징, 저묵묵이 맞더라. 프로토스는 상상 이상으로 암울하더라. 밸런스가 좋다는 맵이 실제로도 좋더라. 그리고 이영호 선수는 본좌에 오른 선수중 가장 맵빨을 받지 않았던 선수였더라 이런 내용들이다. 차이가 있다면 저것을 수치로 볼 수 있다는 점? 프로토스의 경우 실제로는 정말 불리한데 전적이나 맵 데이터에는 나타나지 않는다. 그래도 이 방식에서는 그 점이 잘 드러난다는 점이 다른 방법들과의 차이다. 계산도 편하고 이론적 배경도 탄탄한 편이다. 링크의 '이치죠 호타루' 호타루 님게선 당시 내가 만들었던 계산기가 잘 작동하긴 했지만 원리가 궁금하셨던 것 같다. 시계를 분해한 다음 작동 원리를 파악하듯 식을 파악했다. 이해는 안되지만 합리적이긴 하다. 라고 결론내셨던 것 같다. 사실 원리는 앞에서 말했듯 2배의 실력을 가진 선수가 1.5배 유리한 맵에서 경기한다면 3배의 실력을 보여줄 것이다. 이것이다. Elo 공식의 원리기도 하다. 공식은 결과물이기 때문에 그것가지고는 원리까지 추청하는건 당연히 불가능하다. 하지만 너무 오래전 일이라 내 입장에선 로스트 테크놀러지가 된 상태였다. 세부적으로 파고 들어가면 약간 복잡한게 있기 때문이다. 지금에 와선 오히려 내가 '이치죠 호타루' 님이 분석한 공식을 보고 예전 내용을 복원해 낼 수 있었다. 나 역시 '이치죠 호타루' 님께 Special Thanks 를 보낸다. Elo 공식을 맵에 영역으로 확장하려면 내용이 복잡하기 때문에 다음에 글을 써서 따로 설명하겠지만 승률로 실력 값을 내는 방법 말고 s 값을 접근하는 다른 방법도 존재한다. 그 맵에서 어떤 종족의 실력값은 그 종족의 출전수의 역수다.라는 식이다. 이 부분에 대해 구밀복검 님이 댓글로 남긴 비유가 적절한데 '9클래스 만렙을 찍은 토스들만 간신히 본선무대까지 살아남아, 고작해야 5~6 클래스에 머무르는 테란이나 저그들과 겨우겨우 엄할 승부를 하다가, 7클래스 이상의 테란이나 저그들이 출현하면 쳐발리기 바빴다.' 이것이다. 실제 식은 이렇게 된다. 실력이 2배인 선수가 1.5배 유리한 맵에서 싸우면 3배의 실력을 보여줄 것이다. 이걸 공식으로 바꾼 것이다. s(종족)*s(맵)=s(기록) s(맵)=s(기록)/s(종족) (단 여기서 종족 값은 그 맵에서의 종족 값이다. 맵값과 종족값은 따로 분리되지 않는다.) 실제 식은 간단하다. 어떤 맵에서 테저 전 테란이 몇배 유리한가? s(테저전 테란)=(테란승리/저그승리)*(테란 총 출전/저그 총 출전) 서킷 브레이커의 경우 테저전 전적 50:50 , 테란 총 출전수 293, 저그 총 출전 238 s=(50/50)*(293/238)=1.23 서킷은 테저전에서 테란이 1.23배 유리하다. 이런 뜻이다. 예전에 올렸던 계산기의 α β γ 값이 바로 이 뜻이였다. 테란이 불리한 맵이라면 저 값이 0.89 , 0.5 이런 식으로 1 이하 값으로 나온다. 서킷을 계산해 보면 (엑셀참조) 서킷브레이커 TZ 55.18% 44.82% 테저 테란 1.23배 ZP 48.67% 51.33% 저프 플토 1.05배 PT 46.60% 53.40% 프테 테란 1.15배 테저전에서 테란이 1.23배 유리한 맵이다. 이런 뜻이다. 단순 전적으로 테프전이 비슷하다고 알려져 있지만 실제로는 테란이 약간 유리한 맵인데 가려져 있던 부분이다. 예전 올렸던 계산기와 달라진 점이 있다. 예전 계산기는 전적수가 적은 상태에서 계산하기 위해 +5를 해줬지만 이제는 그게 필요 없기에 뺐다. (테란 총 출전/저그 총 출전)^0.5 에서 ^0.5 부분도 뺏다. ^0.5 해주는게 더 합리적으로 보일 수 있고 글 올려주신 분께서도 합리적이라고 칭찬 한 부분이지만 실은 당시의 한계였다. 테란 x , 저그 y , 플토 z 라고 할때 테란의 총 출전수(실제 데이터) = 2x²+2xy+2xz = 293 라는 공식이 성립하는데 실제로 우리가 알 수 있는 데이터는 2x²+2xy+2xz 지 x가 아니다. 테란 저그 플도 모두 문자를 바꿔서 식이 성립하는데 저 공식에서 x,y,z를 찾아낼 방법을 찾지 못했기 때문에 좀 더 쉬운 버전을 사용할 수 밖에 없었다. 당시 유도한 공식은 동족전 데이터가 없는 버전 까지였다. 지금은 이 문제를 해결했고 ^0.5 가 필요 없다는 결론이 나왔다. 다른 맵들도 찾아 보면 와이고수 자료 안드로메다 TZ 34.88% 65.12% 테저 저그 1.87 Elo 108.45 ZP 66.25% 33.75% 저프 저그 1.96 Elo 117.15 PT 60.20% 39.80% 프테 플토 1.51 Elo 71.87 아웃사이더SE 2.2 TZ 48.39% 51.61% 테저 저그 1.07 Elo 11.21 ZP 61.57% 38.43% 저프 저그 1.60 Elo 81.92 PT 67.37% 32.63% 프테 플토 2.07 Elo 125.97 이번 시즌 맵 밸런스를 보면 역시 이영호 선수다.라고 찬양할 수 밖에 없다. 안드로메다의 맵 값을 적용하면 저그가 1.87배 유리하게 싸울 수 있는 전장이라는 결론이 나온다. 따라서 3.5/1.87=1.88 , 기대값은 1.88/2.88 = 65.3% 즉 안드로메다라는 맵에서 이영호 선수의 승리 확률이 65.3% 이라고 추정해줄 수 있다. 저그쪽 Elo 값에 +108.45 해주고 계산해도 같은 결과가 나온다. 하지만 아무래도 이 방식은 지수 로그 계산이 필요하기 때문에 좀 불편하다. 재미 있는 결론이지만 그냥 Elo 레이팅을 활용해서 계산해본 것에 불과하다. 아직 스타쪽은 Elo 레이팅이 정립되지 않은 상태고 더군다나 종족이라는 개념도 있다. 아직 레이팅 시스템이 만들어지는 과정이니 현재로써는 계산 장난일뿐 실제로는 큰 의미가 없다. 수치에 나와 있는 Elo 값은 유리한 종족의 레이팅에 저 만큼 + 해주면 된다.는 뜻이다. SSL에서 사용하는 맵도 살펴보면 블루스톰 1.2 TZ 48.00% 52.00% 테저 저그 1.08 Elo 13.93 ZP 52.72% 47.28% 저프 저그 1.11 Elo 18.89 PT 47.60% 52.40% 프테 테란 1.10 Elo 16.68 네오제이드 TZ 47.71% 52.29% 테저 저그 1.10 Elo 15.92 ZP 59.79% 40.21% 저프 저그 1.49 Elo 68.92 PT 51.83% 48.17% 프테 플토 1.08 Elo 12.69 다만 결과는 총 전적이다. 사실 맵 역시 흐름이라는 것이 있고 전술의 변화라는 것이 있다. 때문에 이런 계산 보다는 Elo시스템에 의한 계산이 더 좋다. 그래도 이런 접근이 가능하다는 것은 맵 역시 사람 처럼 Elo 시스템으로 레이팅 계산이 가능하다는 뜻이다. 이해하기 어렵다 보니 Elo 공식을 응용하거나 활용하는건 전혀 본적이 없는거 같다. 보통 번역을 통해 간신히 이해한 정도거나 Elo 시스템의 메뉴얼대로 계산 하는 정도다. 하지만 보여주었듯이 Elo 공식이나 s값을 활용하면 할 수 있는게 많다. Elo 공식은 s 값만 인정하면 따라오는 것이다. s 값의 규칙 2배보다 2배 잘한다는 것은 4배 잘한다는 것이다. 이것만 인정하면 자연스럽게 나온다. 하지만 여기서 짚고 넘어갈 것이 하나 있다. 왜 저 규칙이 성립하는 거지? 내가 s 값을 실력지수 혹은 전투력 이라고 이름 붙였던 것은 쓰기 편한 인터페이스를 제공해주자는 차원에서 이름 붙인 것이다. 수학적 표현 보다는 2배 잘하네 3배 잘하네 라는 일상표현으로 바꿔주면 규칙을 쉽게 인지하고 사용할 수 있기 때문이다. 충분한 경험이 있기 때문에 저렇게 표현해도 오류 나지 않는다는 것을 지금은 알지만 실제로 존재하는건 아니다. 실제로 존재하는 것은 알파고:홍구 20:10 알파고 선수가 이길 확률이 2배 높다. 이것 뿐이다. 앞에서도 s 값을 이용하는 방법만 설명했지 막상 s 값에 대해서는 설명을 피했다. Elo 식에 저 규칙이 있다는 것만 보여줬을 뿐이다. 구체적으로는 Elo 식에서 R(나)-R(상대) = 400 log s 핵심은 공식의 빼기 하나다. 하지만그 빼기 하나가 다른 것들을 합친 것들 보다 훨씬 어렵다. 저 빼기 하나가 성립한다는 내용을 쓰려면 이 글과 비슷한 분량의 글이 필요하고 정말 이해할 수 있을 지도 모르겠다. 하지만 어떻게 보면 크게 필요 없는 내용이다. 대부분의 사람들은 자동차의 가격이나 운전하는 방법만 알면 되지 자동차를 만드는 방법까지 알 필요는 없기 때문이다. 저 빼기 하나에 대한 내용 보다는 맵 밸런스나, Elo 시스템 관련 내용들을 필요로 하는 사람들이 더 많을 것이다. 나도 끄쪽 글을 먼저 써보고 싶다. 그 글들이 끝나면 저 빼기와 관련된 글도 한번 써 보고 싶다. 수학적 증명 보다는 저 결론까지 도착하기 위해 떠났던 여행기라고 하는 쪽이 옳을 듯 싶다. 지금은 Elo 공식이란걸 알지만 당시에는 정말 아무 힌트가 없었다. 책도 없었다. 등불 없이 손으로 짚으면서 헤메던 것과 같은 상태에서 더듬거리며 찾은 것이다. 그때 만났던 것들에 대해 언젠간 써보고 싶다. 대단한 것 처럼 말했지만 실은 계산 노가다일 뿐이다. 어렵지도 않을 것이다. 이 글을 본 사람은 이미 스포당한 상태기 때문이다. s=x/x' 는 실력지수다. 이 말이 사실 '절름발이가 범인이다.' 라는 말과 같은 것이다. 이 글을 본 사람들은 저 숫자를 실력지수 혹은 전투력? 이라고 인식할 수 있다. 바로 그게 답이였다. 답을 알고 보는 것과 힌트가 없는 상태에서 찾는 것은 난이도의 차원이 다르다. 그때 내가 가졌던 힌트는 이것 하나였다. 승률 80%인 선수가 승률 50%인 선수가 경기한다면? 80% 일꺼야. 그런데 80% 인 선수가 60% 선수와 경기한다면?? 뭐라고 말해야 하지 ?????????????????????????????????? 상대가 50% 일때를 빼고는 아무 답을 할 수 없다는 걸 알았다. 내가 확률에 대해 모른다는걸. 알게 된 순간이였었다. 첨부 파일에 Spred32.exe 라는 프로그램은 엑셀이다. 600kb 라고 무시하지 말자. http://www.byedesign.co.uk/ 에서 다운 받아도 된다. 그냥 엑셀을 사용해도 되고 구글에서 제공하는 엑셀을 사용해도 된다. 10
|