롤토토에서 데이터 과적합 피하기: 작은 표본의 함정

롤토토를 수치로 풀어보면, 금세 한계가 드러난다. 리그 일정은 촘촘하지 않고, 패치 주기는 짧다. 팀은 시즌 내내 같은 전력을 유지하지 않으며, 베스트5조차 언제든 흔들린다. 여기에 한 팀의 최근 10경기, 특정 조합의 7경기, 특정 패치의 3주 구간 같은 쪼개진 데이터가 겹친다. 모델을 돌리든, 단순 지표로 판단하든, 작은 표본이 만드는 착시가 수익곡선을 망가뜨리는 지점이 바로 여기다. 과적합은 이런 틈에서 자란다. 표면적으로는 설득력 있는 논리처럼 보이지만, 다음 주, 다음 패치, 다른 리그로 넘어가는 순간 손익이 뒤집힌다.

경험적으로 수익이 났던 사람들도 언젠가 같은 문제를 만났다. 특정 패치에서 후반 스케일링 조합이 강하게 보였고, 오브젝트 우선권이 초반 설계에 의존한다는 해석이 많았다. 다음 패치에서 사소해 보이던 정글 챔피언 체력 조정 하나가 맵 주도권을 바꿔버렸고, 그간의 상관관계가 의미를 잃었다. 수치가 틀렸다기보다, 수치가 설명하던 세계가 바뀐 셈이다. 작은 표본은 이 변화를 더 크게 왜곡한다. 과적합을 피하는 일은 결국, 표본의 한계를 인정하고 그 틀 안에서 의사결정을 설계하는 일과 같다.

과적합을 직관적으로 이해하기

과적합은 과거 데이터의 우연을 구조로 착각하는 순간 시작된다. 모델이든 직관이든, 설명 가능한 패턴보다 잡음에 더 반응하기 시작하면 성능이 좋아 보인다. 훈련 데이터에서는 예측률이 높아지지만, 새로운 경기에서는 오답이 늘어난다. 작은 표본은 우연의 여지가 크기 때문에, 과적합이 더 쉽게 발생한다.

롤토토 맥락에서 예를 들면, 특정 팀의 바론 컨트롤 성공률이 최근 5경기에서 100%라고 하자. 표면적으로는 굉장히 강한 신호처럼 느껴지지만, 바론 시도 자체가 많지 않았거나 상대 전력이 약했거나, 경기 승리로 인해 자연스럽게 오브젝트 우선권을 가진 결과일 수 있다. 이때 그 수치에 가중치를 과하게 주면, 다음 경기에서 비슷한 결과가 나올 것이라 착각한다. 본질은 팀의 전반적 레벨과 상대 전력, 메타 적합도, 드래프트 탄력성인데, 우리는 최근 5경기의 특정 장면 수치에 매달리는 셈이다.

작은 표본이 특히 위험한 이유

롤 대회는 패치가 자주 바뀐다. 메이저 리그 기준으로 하나의 패치가 유지되는 기간은 길어야 4주 남짓, 토너먼트는 더욱 가변적이다. 한 팀이 그 패치에서 치르는 경기는 보통 6경기에서 15경기 사이이며, 세트 스코어로 쪼개면 특정 조합 구간은 3세트 내외로 줄어든다. 이렇게 작은 단위에서 계산한 지표는 분산이 크다. 팀의 진짜 실력이 아니라, 매치업이나 일정, 드래프트 코인플립이 결과를 좌지우지한다.

표본이 작을수록 극단적인 값이 나타난다. 골드 격차, 퍼스트드래곤, 케일이나 카사딘 같은 스케일 챔피언의 승률은 상대와 조합, 경기 길이에 민감하다. 특정 주간에 그 조합이 과하게 터지면 승률 80% 같은 숫자가 찍힌다. 다음 주에 그대로 따라가면 반대 성적이 나오는 이유가 여기에 있다. 같은 선수, 같은 코치진이라도 하루 이틀 사이에 달라지는 것은 실행과 준비상태다. 수치만 보면 커브를 타고 올라가는데, 실제로는 요동치는 파도 위다.

현장에서 자주 보는 착시

실제 운용에서 자주 만나는 사례들이 있다. 모델을 고도화했다며 변수를 늘렸더니 백테스트가 60% 이상을 친다. 시장 대비 엣지라기보다, 특정 리그에서만 통하는 특수 변수로 과거를 설명한 결과인 경우가 많다. 예를 들어 라인전 10분 골드차, 15분 전령 전투 참여도, 바텀 듀오의 초반 웨이브 관리 지표 같은 디테일을 한 리그 한 시즌 데이터에 맞추면 놀라운 적중률이 나온다. 그런데 같은 변수셋을 다른 리그에 적용하면 성능이 급락하거나, 패치가 바뀐 시점부터 잔고가 줄어든다. 변수들이 공교롭게 과거 일정에 일치했던 것이다.

반대로, 단순 지표만 쓰는 접근에서도 문제가 생긴다. 팀의 KDA, 팀파이트 승률, 오브젝트 우선권 같은 종합 지표를 평균으로만 비교해도 과오가 생긴다. 동일 팀의 평균이 상위권이라도, 세트별 분산이 클 수 있다. 강팀 상대로는 수동적이고 약팀 상대로는 공격적으로 나오는 팀이 대표적이다. 평균은 좋은데, 하한이 취약한 팀이다. 이 팀을 박빙 매치에서 과신하면 마진이 날아간다.

신뢰구간을 숫자로 체감하기

분산을 머리로만 이해하면 판단이 흐려진다. 대략적인 숫자를 잡아두면 도움이 된다. 예를 들어 어떤 팀의 실제 승률이 55%라고 가정하자. 20경기만 보면, 이 팀이 12승 8패를 할 확률은 꽤 높지만 8승 12패도 드물지 않다. 이항분포의 표준오차는 대략 sqrt(p(1-p)/n)이므로 p = 0.55, n = 20일 때 표준오차는 약 0.11 수준이다. 95% 신뢰구간을 단순히 p ± 2*SE로 잡으면 33%에서 77% 사이가 된다. 표본 20경기로는 이 팀의 진짜 승률이 55%인지, 50%인지, 60%인지 분간하기 어렵다는 얘기다.

승률이 아니라 이벤트성 지표는 더 요동친다. 퍼스트블러드, 퍼스트드래곤, 퍼스트타워 같은 초기 이벤트는 한 경기당 기회가 1회라서 표본이 느리게 쌓인다. 최근 10경기 퍼블 성공률이 70%로 찍혀도, 다음 10경기에서는 40%로 떨어질 수 있다. 모델은 이런 요동을 학습하면 안 된다. 학습하더라도 불확실성이 크다는 사실을 숫자로 반영해야 한다.

검증 설계가 데이터의 반이다

과적합을 피하려면 검증을 현실처럼 만들어야 한다. 교차검증을 하더라도 시간 순서를 섞으면 의미가 없다. 과거를 보고 미래를 맞히는 구조여야 한다. 롤토토에서는 패치 단위나 스플릿 단위로 블록을 나누고, 블록 앞부분으로 학습해서 뒷부분을 평가하는 식이 잘 맞는다. 리그 간 전이도 유혹적이지만, 메타와 플레이 스타일 차이가 크면 학습이 방해가 된다. 이때는 상위 레벨의 공통 변수만 유지하고, 리그 고유 변수는 가중치를 낮추는 편이 안전하다.

백테스트에서도 베팅 가능한 실제 조건을 반영해야 한다. 당일 업데이트에 접근 가능한 정보, 라인업 확정 타이밍, 코치 인터뷰, 비자 이슈 같은 외생 변수를 어느 정도 포함할 수 있는지 선을 그어야 한다. 실제로 접근 불가능한 정보를 뒤늦게 모델에 넣으면, 과거의 자신에게 유리한 정보를 준 셈이 된다. 같은 데이터셋이라도 시점에 따라 관측 가능 정보와 사후 정보가 나뉜다. 이 경계를 엉키게 만들면 검증은 스코어를 부풀리고, 실전에서는 성능이 떨어진다.

변수 선택과 데이터 누수

롤 데이터는 스코어보드 지표, 맵 오브젝트, 라인전 분할, 전투 로그 등 층위가 복잡하다. 그중 일부는 경기의 결과와 동전의 양면처럼 붙어 있어서, 결과를 슬쩍 엿보는 꼴이 된다. 예컨대 롤토토 20분 이후의 골드 차, 바론 시도 횟수, 넥서스 주변 교전 지표 같은 값은 사실상 승패를 확정지은 뒤에야 안정적으로 관측된다. 이런 변수로 승패 모델을 만들면 훈련 성능이 과도하게 높게 나온다. 실제로 베팅 시점에는 접근 불가능한 시그널이었기 때문이다.

변수는 경기 시작 전에 확정 가능한 정보, 혹은 초반 몇 분의 맥락에서 유도 가능한 정보에 무게를 둬야 한다. 드래프트 단계에서의 챔피언 조합, 이전 패치에서의 해당 조합 성과, 라인전 상성 매트릭스, 팀의 초반 적극성 지표 정도가 현실적이다. 다만 드래프트 변수도 주의가 필요하다. 픽률과 밴률은 메타를 반영하지만, 메타가 변할 때는 그 의미가 급격히 바뀐다. 이럴 때는 조합 성과를 패치별로 분리해서, 오래된 패치의 성과를 현재 평가에 강하게 반영하지 않도록 가중치를 조정한다.

간단한 규칙 체크리스트

    시간 순서가 뒤섞인 교차검증을 쓰지 않는다. 패치 블록 단위의 시계열 검증을 표준으로 삼는다. 베팅 시점에 관측 불가능한 변수는 제외하거나 강하게 패널티를 준다. 표본이 30 이하인 조합 통계에는 베이지안 보정이나 가중치 하향을 적용한다. 최근 2주 성과와 시즌 전체 성과의 가중치를 구분하고, 패치 전환 시 가중치를 재설정한다. 모델 성능은 적중률보다 수익률과 변동성, 최대낙폭을 함께 본다.

정규화와 보정의 역할

과적합을 줄이는 가장 단순한 방법은 모형을 덜 복잡하게 만드는 일이다. 로지스틱 회귀에 L2 정규화를 걸어 변수의 가중치가 과도하게 커지지 않도록 막으면, 작은 표본에서 튀는 신호를 과소평가하는 방식으로 안정성을 얻는다. L1 정규화는 변수 선택에 유리하지만, 변수 간 상관이 높은 환경에서는 비슷한 신호를 가진 변수들 중 일부만 남기고 나머지를 0으로 보내 버린다. 신호가 여러 조합에 얇게 퍼져 있을 때는 L2가 더 부드럽다.

베이지안 계층모형은 팀, 리그, 패치 같은 그룹 단위로 부분 결합을 제공해준다. 예를 들어 팀의 진짜 실력을 추정할 때, 팀별 승률을 리그 평균으로 수축시키는 사전분포를 설정하면, 10경기밖에 치르지 않은 팀의 극단 승률을 중립으로 끌어온다. 조합 승률도 마찬가지다. 특정 챔피언 조합의 표본이 12세트뿐이라면, 그 승률을 그대로 쓰지 않고 전체 챔피언군의 성과, 라인 상성 평균을 끌어와 혼합한다. 이 수축이 바로 작은 표본에서 발생하는 착시를 완화하는 장치다.

이와 함께 범주형 변수의 고카디널리티 문제를 줄이려면 임베딩이나 해시 기법을 쓸 수 있지만, 롤토토 환경에서는 지나친 자유도를 경계해야 한다. 드래프트 조합 임베딩을 쓰는 경우에도, 패치 전환 시 재학습 지연과 드리프트를 모니터링해야 한다. 간단한 집계 통계와 계층 수축만으로도 실제 수익 곡선이 더 매끈해지는 경우가 많다.

표본을 넓히는 현실적 방법

표본 부족을 원천적으로 해결하려면 더 많은 경기, 더 긴 기간을 써야 한다. 문제는 메타가 빠르게 변한다는 점이다. 이 딜레마를 풀려면 공통 구조와 특수 구조를 분리해야 한다. 라인전 단계의 기본 상성, 한타에서의 역할 기대치, 글로벌 경제처럼 메타가 달라도 완전히 뒤집히지 않는 요소를 상위 레벨로 두고, 패치 특수성은 하위 레벨에서 보정한다. 이렇게 하면 과거 데이터 대부분을 버리지 않으면서도, 최신 패치의 특징을 반영할 수 있다.

image

리그 간 전이도 같은 원리다. LCK와 LPL의 경기 템포, 한타 빈도, 오브젝트 트레이드 성향은 다르다. 그렇다고 서로의 데이터를 전혀 섞지 못하는 것은 아니다. 팀별 기초체력 같은 개념, 예를 들어 라인전 손해를 받아낼 수 있는 운영력이나 시야 장악의 체계는 리그를 넘어 유효한 신호로 남는다. 이때는 리그별 상수항을 두거나, 리그별 랜덤효과를 추가해 전이를 통제한다.

베팅 단가와 켈리 가중치, 그리고 불확실성

모형에서 나오는 승률 추정은 항상 오차를 동반한다. 표본이 작을수록 오차분산이 커진다. 켈리 기준을 그대로 적용하면, 과대 추정된 승률에 과한 베팅 비중이 실린다. 실전에서는 프랙셔널 켈리를 쓰거나, 승률 추정값을 보수적으로 수축한 뒤 비중을 산정하는 편이 낫다. 예를 들어 모델이 팀 A의 승률을 57%라고 추정하고, 시장이 52%로 가격을 매겼다면 겉보기로는 5% 포인트 엣지다. 하지만 추정의 표준오차가 3% 포인트 이상이라면, 절반 켈리 혹은 그 이하로 줄여서 포지션을 잡는다. 크기를 줄이는 것만으로도 과적합의 손실을 흡수할 쿠션이 생긴다.

더 나아가 승률 추정을 단일 값이 아니라 분포로 다루면 의사결정이 정교해진다. 베이지안 업데이트로 포스터리어 분포를 얻고, 이 분포 전체에서 기대 로그수익을 적분해 최적 비중을 구하면, 불확실성이 큰 구간에서 자연스럽게 베팅 크기가 줄어든다. 계산이 다소 복잡해 보이지만, 결과는 단순하다. 확신이 없을수록 덜 건다. 확신이 생기면 늘린다. 표본 크기가 베팅 크기에 직접 연결되는 구조다.

시장과의 상호작용을 읽는 법

모델이 아니라 시장의 움직임이 더 빠른 경우가 많다. 라인업 정보, 선수 컨디션, 스크림 소문은 시장을 먼저 흔든다. 이럴 때는 모델의 기계적 판단보다 시장의 방향을 먼저 체크한다. 마감 배당이 초기보다 어느 쪽으로 흘렀는지, 리그별 평균적인 움직임과 비교해 어떤 정도의 강도로 이동했는지, 정보 유출이 의심되는 패턴은 없는지 확인한다. 마감 배당 대비 수익이 꾸준히 플러스라면, 모델이 시장 공분산 구조를 어느 정도 따라가고 있다는 뜻이고, 반대로 마감과 역방향으로만 베팅해 마이너스가 누적되면 데이터 가중치나 정보 지연을 점검해야 한다.

경험적으로, 마감 1시간 전부터 10분 전 사이 움직임은 노이즈와 정보가 섞여 있다. 변동 폭이 크지만 의미 없는 진동도 많다. 같은 기간에 반복적으로 특정 팀이나 특정 구간에서만 강하게 움직이는 흐름이 보이면, 그 구간의 변수들이 모델에 과소 반영되었을 가능성이 있다. 예를 들어 특정 팀의 서포터 교체가 공식 발표 이전에 시장에 반영됐다면, 다음에는 라인업 불확실성에 대한 사전 페널티를 모델에 포함해 손실을 줄일 수 있다.

드래프트 데이터의 함정과 해석

롤토토 분석에서 가장 매력적인 영역이 드래프트다. 조합 승률, 라인 상성 그래프, 초반 파워 커브, CC 밀도, 포크 압박 같은 변수를 수치화하면 모델이 살아난다. 동시에 가장 과적합이 심한 영역이기도 하다. 그 이유는 명확하다. 드래프트 성과는 금방 뒤집힌다. 패치 하나로 챔피언의 가치가 바뀌고, 프로 팀이 해법을 찾는 속도가 빠르다. 특정 조합이 공개되면 일주일 안에 카운터 픽이 정리되고, 밴픽 순서만 바꿔도 성능이 달라진다.

현실적인 절충이 필요하다. 드래프트 가중치는 패치 단위로 리셋하고, 표본 20세트 이하 조합은 조합 승률보다 라인별 상성 평균과 팀의 운영력 지표를 더 신뢰한다. 또한, 챔피언의 절대 승률이 아니라, 팀이 그 챔피언을 쓸 때의 실행력 변동을 반영한다. 어떤 팀은 룰루, 잔나 같은 보호형 서포터에서 이니시에이팅 타이밍이 흔들리고, 다른 팀은 레나타를 잡아야 한타 설계가 매끈하다. 같은 챔피언이라도 팀 적합도는 다르다. 이 차이를 드래프트 지표에 섞어주면, 과적합을 줄이고 실전성과를 높인다.

작은 사례, 숫자와 함께 보는 판단 교정

한 시즌 동안 특정 리그에서 승패 모델을 운영했다. 입력변수는 팀의 최근 15경기 라인전 골드차, 10분 CS 디프, 오브젝트 비중, 드래프트 조합의 패치별 가중 승률, 리그 평균 대비 경기 길이, 교전 빈도 같은 값이었다. 초기 백테스트에서는 적중률 58%, ROI 3% 내외가 나왔다. 실전 6주차에 들어가니 성적이 급락했다. 원인을 뜯어보니, 패치 전환 직후 드래프트 가중치가 과했다. 조합 표본이 10세트를 넘지 못하는 동안, 모델이 조합 승률에 쏠려 팀 기본 전력 신호를 놓쳤다.

이후 조합 승률을 계층 수축으로 바꾸고, 표본 20세트 미만 조합에는 상한을 걸어 드래프트 기여도를 최대 2% 포인트로 제한했다. 동시에 라인업 불확실성에 -1% 포인트의 사전 페널티를 추가했다. 조정 후 4주 기간의 성적은 적중률 55%대, ROI 1.2%로 안정됐고, 변동성이 줄었다. 절대 수익률은 낮아 보이지만, 최대낙폭이 절반 이하로 낮아졌고, 마감 배당 대비 성과도 플러스로 돌아섰다. 작은 표본의 신호를 작게 만들자, 전체가 살아났다.

데이터 품질과 라벨의 경계

수집 단계에서 생기는 노이즈는 과적합의 또 다른 연료다. 동일 경기라도 제공사에 따라 라인전 종료 타이밍의 정의가 다르고, 포지션 스왑이나 정글 경로의 분류 기준이 엇갈린다. 이런 차이는 변수의 일관성을 무너뜨린다. 데이터를 합칠 때는 정의를 통일하거나, 정의가 다른 변수는 별개의 특성으로 취급한다. 특히 라벨에 가까운 이벤트성 변수는 조심해야 한다. 바론 시도 성공률을 단일 숫자로 쓰기보다, 시도 시각, 시도 당시의 골드 격차, 시야 점유율을 함께 보정해 맥락을 포함시켜야 한다. 그렇지 않으면 결과의 흔적을 그대로 옮겨와 훈련지표로 쓰게 된다.

경고 신호, 이렇게 나타난다

    훈련 기간을 늘릴수록 백테스트 성능이 더 좋아진다. 반대로 최신 구간만 보면 성능이 무너진다. 특정 리그, 특정 팀에서만 성능이 나온다. 리그를 바꾸면 ROI가 0에 수렴한다. 드래프트가 확정된 경기에서만 예측이 잘 맞고, 사전 배팅에서는 성과가 없다. 적중률은 높은데 마감 배당 대비 성과가 음수다. 시장이 정보를 더 빨리 반영하고 있다. 손실이 날 때 베팅 크기가 과하게 컸다. 승률 추정의 불확실성을 반영하지 않았다.

운영 측면의 리듬과 기록

모형을 다듬는 일만큼이나 중요한 것이 운영의 리듬이다. 패치가 바뀔 때는 자동으로 가중치를 재설정하고, 한 주 동안 누적된 결과를 요약해 변수를 재평가한다. 이때 지나치게 빠른 손보기는 변동성을 실력으로 착각하는 실수를 낳고, 너무 느린 반응은 메타 전환기에 손실을 키운다. 보통 2주 롤링 윈도우에서 신호의 안정성을 점검하고, 4주 단위로 구조적 변경을 고려하는 리듬이 무난하다.

기록은 디테일하게 남겨야 한다. 베팅 시점의 정보셋, 라인업 확정 시각, 시장의 초기와 마감 배당, 모델의 승률 분포, 최종 베팅 크기, 결과와 사후 코멘트까지 한 장에서 볼 수 있게 구성한다. 몇 달이 지나야 비로소, 반복해서 실수하는 패턴이 눈에 들어온다. 예를 들어 여행일정이 빡빡한 원정 주간, 특정 코치진의 밴픽 경향, 낮 경기에서 컨디션이 처지는 팀 같은 잡다한 사실들이 반복적으로 손익에 반영된다. 이런 것들은 외부 데이터 공급자가 정리해주지 않는다. 운영자가 현장에서 쌓아야 할 지식이다.

트레이드오프를 이해하는 태도

과적합을 막는 장치는 대부분 보수적이다. 수익 잠재력을 깎아내리는 대가로 변동성을 낮춘다. 모든 사람이 같은 선택을 할 필요는 없다. 자본 규모, 한 경기당 베팅 한도, 기대 체류시간, 리스크 허용치에 따라 최적점은 달라진다. 다만 작은 표본이 늘어놓는 달콤한 숫자는 단기적인 유혹일 뿐이라는 사실만은 변하지 않는다. 표본이 작을수록, 신호를 믿지 말고 구조를 보자. 드래프트가 아니라 팀의 운영력, 조합 승률이 아니라 라인별 상성의 본질, 최근 5경기가 아니라 지난 몇 달 동안의 밑바닥 지표를 우선한다.

롤토토에서 승률 몇 퍼센트의 차이는 쌓이면 크다. 하지만 그 몇 퍼센트의 근거가 단단해야 한다. 표본의 한계를 수치로 인정하고, 검증을 현실에 맞추고, 변수의 누수를 줄이고, 불확실성을 베팅 크기에서 흡수하면, 과적합의 덫에서 벗어날 수 있다. 계속 수익을 내는 사람들은 대부분 화려한 모델 대신 이런 기본기를 지키는 데서 앞서간다. 그리고 그 기본기는 작은 표본의 함정을 견디는 장치로, 시즌 끝까지 남는다.