리그오브레전드의 승률 예측 모델을 이용한 챔피언 임베딩 시각화
지난 포스트에서 승률 예측 모델을 만들었다. 이번에는 해당 모델의 챔피언 임베딩을 시각화해보자.
학습했던 모델은 챔피언을 기반으로 승률을 예측하는 모델이고, 챔피언 임베딩은 그 과정에서 나온 값이다. 그래서 챔피언 임베딩이 정확히 어떤 의미라고 말하기는 어려운데, 그래도 어느정도는 강한 상황, 자주 쓰이는 조합에 따라 챔피언들이 묶일거라 예상할 수 있다.
우선, 200,000+개의 게임에서 500번 이상 해당 라인으로 플레이된 챔피언들을 선별했다. 그 후 10,000+개의 게임에서 학습된 모델 가중치에서 라인별 임베딩을 추출한 뒤 PCA를 돌려 plotly.js로 시각화해봤다.
200,000개의 데이터가 있는데 왜 10,000개의 게임에서 학습한 모델을 사용해 시각화하냐면.. 나도 이건 모델을 다시 학습해서 시각화하면 당연히 더 좋은 결과일거라고 예상하는데.. 개인 시간을 써서 짬짬히 하는만큼 빠르게 결과를 볼 수 있는 방법을 만들고 개선하는 걸 선호하는 편이다.
어느정도는 예상한대로 묶여있고, 몇몇 챔피언들은 예상하지 못한 곳에 묶여있었다. 예시로 미드 챔피언 임베딩 플롯에서는 라이즈, 카사딘, 블라디미르 등등 후반에 강한 AP 미드 챔피언들이 묶여있는 것을 볼 수 있다. 비슷하게 벨베스, 리신, 크산테, 레넥톤, 루시안, 아크샨 등등 미드 AD 챔피언들도 한 곳에 묶여있다.
물론 예상하지 못한대로 묶여있는 챔피언도 많다. 탑 챔피언 중 판테온과 사이온이 묶여있는 것을 볼 수 있는데, 이건 비슷한 조합에서 많이 쓰이는 챔피언이었을까? 그리고 오른/초가스도 묶여있는데, 탱커 역할이라는 것은 비슷하지만 싸우는 경향이 아예 달라서 예상치 못했던 부분이다.
단순 10,000+개의 데이터(정확히는 17,000개 정도로 기억한다)로 학습한 모델이라 정확도는 높지 않고 차원을 줄여서 시각화하는 만큼 왜곡된 부분도 많을 것이다. 그래서 더 큰 모델을 만들고 패치 버전 별로 분리해본다면 더 재밌는 결과가 나올 것 같다.