LAN 파티
- 16년 동안 매년 친구들과 LAN 파티를 개최해 왔음.
- 파티는 4-5일 동안 진행되며, 최대 12명이 참여함.
- 주로 Dota 2를 플레이하지만, Counter-Strike, Warcraft 3 등 다양한 게임도 즐김.
- 팀 선택이 어려워 자동화 시스템을 개발하게 됨.
Dota 2
- Dota 2는 5v5로 진행되며, 불균형한 팀은 게임의 재미를 떨어뜨림.
- 참가자들의 실력 차이가 커서 팀 선택이 어려움.
팀 선택 방법
- 두 명의 리더가 번갈아 가며 팀원을 선택하는 방식 사용.
- 그러나 이 방식은 시간이 많이 걸리고, 비슷한 팀이 자주 만들어져 지루함.
수동 팀 선택의 문제점
- 시간이 많이 걸리고 지루해짐.
- 비슷한 팀이 자주 만들어짐.
- 리더 역할을 맡고 싶어하는 사람이 없음.
- 불균형한 팀이 자주 만들어짐.
코드로 해결하기
- 데이터 수집 후 Colab에서 Elo 레이팅 시스템을 사용하여 팀을 자동으로 생성함.
- 각 플레이어는 1000 Elo 포인트로 시작하며, 승리 시 20 포인트를 얻고 패배 시 20 포인트를 잃음.
개선 1: 데이터 여러 번 통과
- Elo 시스템에서 더 높은 Elo를 가진 플레이어를 이기면 더 많은 포인트를 얻음.
- 여러 번 데이터를 통과하여 Elo를 계산함.
개선 2: ML 모델처럼 만들기
- Elo를 모델로 사용하여 팀 승리 확률을 예측함.
- L2 손실 함수를 정의하고, 백프로파게이션을 통해 모델을 최적화함.
개선 3: 역사적 결과를 확률적으로 만들기
- 과적합을 방지하기 위해 역사적 게임의 승리 확률을 75% 또는 95%로 설정함.
- 이를 통해 모델이 모든 게임을 암기하지 않고 일반화할 수 있도록 함.
결과
- 새로운 시스템은 불균형한 팀 크기에서도 승리 확률을 예측할 수 있음.
- 다음 LAN 파티를 위한 첫 번째 라인업이 준비됨.