TENSOR STUDIO
나는 개인적으로 세이버 메트릭스를 매우 좋아한다.
규격화된 스텟과 지표. 물론 그것들이 게임의 모든 것을 설명할 수 있는 것은 아니다. 하지만 피터 드러커가 말한
라는 어구처럼, 측정되는 것이야말로 사람의 손으로 관리되는 것이고, 이는 측정할 수 있어야만 비로소 관리하고 경영할 수 있다는 말이다.
하지만 이스포츠에서는 이러한 어구가 제대로 적용되지 않는다고 느낀다. 그래서 해설자들이 해설을 할 때도 자신의 경험에 비추어서 해설하고 과거의 바둑처럼 기세와 형세와 같은 추상적인 어구로 설명과 해설을 하고자 한다.
이는 어쩔 수 없다고는 생각한다. 하지만 알파고가 등장하면서 바둑도 현재 승률과 AI가 계산한 올바른 수, 그리고 메인라인(main line)등을 통하여 게임의 흐름과 형세를 구체적으로 지금 얼마나 불리한지, 얼마나 유리한지를 설명할 수 있게 되었다.
그럼 이스포츠에서도 그럴 수 있지 않을까?
일단 이를 위해서 RIOT API를 이용했다. RIOT API를 통해 약 3만 건의 챌린저 및 그랜드마스터의 매치를 수집했다. 과정은 다음과 같다.
이 둘은 상위 0.001% 게이머들로 활성 게이머 약 300만에 달하는 리그오브레전드 게이머 중 1천위 안에 드는 강자들로, 그 누구보다도 게임을 잘 이해하는 사람들이다.
일단 challengerleagues/by-queue/RANKED_SOLO_5x5 api를 및 grandmasterleaues/by-queue/RANKED_SOLO_5x5 api를 통해 현재 존재하는 챌린저와 그랜드마스터의 명단을 가져온다.
하지만 이는 summoner_id로 되어 있어서, 이를 통해 match data를 가져오려면 puuid를 이용해야 한다. 따라서 summoner/v4/summoners api를 사용해서 puuid를 가져온 다음, match/v5/matches/by-puuid api를 이용해서 각 puuid별 최근 매치 리스트의 인덱스를 가져오고, 최종적으로 매치 인덱스를 통해 매치 내용을 가져오는 식으로 매치 정보를 받아왔다.
순서대로 정리하면 다음과 같다.
이를 통해 수집한 데이터는 약 2만 1천건에 달한다. 이는 신경망을 훈련시키기에는 충분한 수치다.
케라스를 이용해서 신경망을 구성했다. 최종적으로 구성한 신경망은 다음과 같은데
각 팀별 5명이고, 팀 1, 팀 2로 구성된 (2, 5)의 챔피언 배열이 들어가기 때문에 (2, 5)의 inputLayer가 구성되었다. 간단하게 시도해 볼 학습이라 autokeras를 이용해 간단하게 신경망을 구성했다.
이를 통해 max_trial = 20, epochs = 15로 학습시켜봤는데, 결과는 다음과 같이 나왔다.
정확도는 약 60%로 높아지고 있긴 했지만, 여기서 더 에포크를 늘린다고 하더라도 검증 정확도나 val loss는 줄어들지 않는 모습을 보였기 때문에, 여기서 학습을 마쳤다.
평가해 봤을때 val accuracy는 약 0.53으로 눈 감고 찍는 것보다 약 3% 승률이 높다고 할 수 있었다.
이는 해석하기 나름이겠지만 과감하게 해석해 보자면, 조합이 숭률에 약 3% 정도 영향을 미친다고 할 수 있겠다. 물론 포스팅을 마친 이후에 데이터를 더 확인해 볼 예정이지만 이는 매우 과감한 추측인데 그 이유로는 신경망이 특정 조건(특정 조합과 특정 챔피언)만 찾아낼 수 있었을 수도 있기 때문에 SHAP 등의 도구를 이용해서 어떤 경우에 맞췄는지 확인해 봐야 할 것이다.
아무튼 이를 제쳐놓고라도, 53%라는 것은 아주 높은 수치라고 할 수 있다고 생각한다.
진행된 내 다른 연구에 의하면(나중에 정리해서 올리긴 할 거지만), 팀별로 처치한 용이 1마리 차이나면 승률이 약 2.2% 차이가 난다. 3%라면 즉 약 용 1.5개 만큼 차이난다는 의미인데…
엄청 크지 않나?
단순히 게임을 진행하기도 전에 진행된 게임의 조합 만으로도 용 1.5개 분만큼 승률이 차이난다는 의미인데 조합이 게임에 엄청나게 큰 영향을 미친다고 보는게 맞는 것 같다.
다음에는 챌린저 경기가 아닌 흔히 말하는 심해 경기, 골드, 플래티넘 구간의 경기를 검토해 봐야겠다.
의문점 및 조언이 있다면 언제나 환영한다!