스탯 기반 가상농구 MVP 예측 모델 만들기

가상농구에서 MVP를 예측한다는 말은 그날, 그 주, 혹은 시즌의 특정 슬레이트에서 가장 높은 기여를 보여줄 선수를 사전에 가려낸다는 뜻에 가깝다. 현장에서 이 작업을 해보면 이름값이나 하이라이트보다 숫자의 결이 중요하다는 사실을 금방 배운다. 숫자의 해석은 맥락에 달려 있고, 맥락은 그날의 마감 시간과 라인업 공지, 상대 수비의 로테이션 습관처럼 작고 빠르게 변하는 것들로 채워진다. 결국 모델은 두 가지를 동시에 해야 한다. 한편으로는 스탯의 구조적 패턴을 배우고, 다른 한편으로는 변칙과 공백을 견디는 탄력성을 확보해야 한다.

우리가 예측하려는 MVP의 정의부터 세우기

가상농구에서 MVP의 정의는 리그 규칙에 따라 크게 달라진다. 몇 시즌을 운영하면서 느낀 핵심은 목표를 처음에 좁고 명확하게 규정할수록 모델이 빨리 안정된다는 점이다. 예를 들어 두 가지 버전의 목표 정의가 있다.

    슬레이트 MVP: 특정 경기일의 모든 출전 선수 중 판타지 포인트가 최상위 1명 혹은 상위 1%에 드는 선수. 팀 MVP: 같은 날 단일 팀에서 가장 높은 판타지 포인트를 기록한 선수.

슬레이트 MVP는 희귀 사건 예측의 성격이 짙다. 확률은 몇 퍼센트 이하지만 보상은 크다. 팀 MVP는 분산이 낮고 데이터가 풍부해 초기 학습과 검증에 적합하다. 실무에서는 팀 MVP 모델로 토대를 다지고, 그 위에 슬레이트 MVP를 추가로 학습시키는 계층형 접근이 효율적이었다. 전자는 상위 꼬리의 정밀도가 중요하고, 후자는 팀 내 역할과 사용률 변화를 민감하게 잡아내야 한다.

MVP 스코어의 산식도 명확히 합의해야 한다. 보통은 플랫폼의 판타지 포인트 규칙을 그대로 쓴다. 득점, 리바운드, 어시스트, 스틸, 블록, 3점, 턴오버에 계수를 곱한 합. 그런데 이 합만 쓰면 보정의 필요가 생긴다. 쓰루풋이 높은 팀과 낮은 팀의 페이스 차이, 가비지 타임에서의 분 모수 증가, 연장전 편향까지 섞인다. 그래서 나는 판타지 포인트를 기본 목표로 하되, 페이스 보정 지표와 사용률 변화를 보조 타깃으로 함께 예측해 멀티태스크 구조를 만든다. 이렇게 하면 스코어가 같아도 맥락이 다른 두 선수를 모델이 구분하기 시작한다.

데이터 설계, 어느 지점부터가 충분한가

데이터는 크게 세 갈래에서 온다. 박스스코어와 플레이 바이 플레이, 라인업 및 부상 리포트. 여기에 베팅 시장의 라인과 소셜 신호가 첨가재로 붙는다. 가상축구나 가상경마, 가상개경주처럼 규칙이 다른 종목을 다뤄본 입장에서 공통의 교훈이 하나 있다. 원천 데이터가 정확하고 갱신 주기가 빠를수록 복잡한 모델보다 간결한 모델이 더 좋은 결과를 낸다. 업데이트 주기를 분 단위로 관리하고, 변경 로그를 남기는 체계가 필요하다.

스키마를 설계할 때는 세 수준으로 나눠 적재한다. 시즌 레벨의 누적값, 경기 레벨의 컨텍스트, 포제션 레벨의 이벤트. 실무에서 자주 쓰는 조인은 선수-경기 키를 기준으로, 그 앞뒤 N경기의 이동평균과 분산을 붙인다. 과거 7경기와 30경기를 쌍으로 쓰면 단기 컨디션과 장기 실력을 동시에 잡을 수 있다. 한 시즌이 시작된 지 얼마 안 된 기간에는 과거 시즌의 가중치를 점진적으로 줄인다. 보통 첫 10경기까지는 지난 시즌 지표의 잔존 가중치를 40에서 50까지 주다가, 20경기를 지나면 10 이하로 떨어뜨린다.

라벨 누수 방지 장치도 초기에 심어야 한다. 라인업이 잠금되기 전 시점의 정보만 피쳐로 들어가야 한다. 나는 저장 시각을 기준으로 피쳐 스냅샷을 생성하고, 그 시각 이후 발생한 변경 사항은 별도 테이블로 적재한다. 실수로 경기 종료 후 정정된 스탯이 훈련 데이터에 들어가면 평가 지표가 허황해진다.

image

피쳐 엔지니어링, 숫자에 맥락을 심는 과정

피쳐 엔지니어링은 예측 성능의 절반 이상을 좌우한다. 가상농구에서 MVP 후보를 가르는 요인을 쪼개보면 역할, 사용률, 효율, 분당 가상경마 생산성, 출전 시간 안정성 같은 주제들이 반복된다.

사용률은 단순한 공격 점유율뿐 아니라, 특정 조합에서의 공격 비중을 함께 본다. 동시 출전 2인 또는 3인 조합별로 페널티를 주거나 보너스를 준다. 예를 들어 볼도미넌트 가드와 함께 뛸 때의 어시스트 비중, 코트에 림 프로텍터가 없을 때의 페인트존 시도 증가 비율 같은 것들이다. 플레이 바이 플레이에서 라인업 상태를 추출해 구간별로 온오프 분해를 하면 된다. 첫 구축 가상축구 때는 온오프 정규화가 헷갈릴 수 있다. 비대칭 샘플 문제를 줄이기 위해 가중 평균을 쓰고, 공수 분리 지표를 만든 뒤 종합 스코어에 혼합한다.

페이스 보정은 필수다. 팀 포제션당 득점, 48분 환산, 그리고 상대 팀의 최근 5경기 페이스 변화를 함께 고려한다. 달리는 팀은 연속 원정에서 페이스가 떨어지는 경향이 있고, 두 번째 백투백에서는 코치가 로테이션을 넓게 가져가며 스타의 사용률을 줄이기도 한다. 이 부분을 모델이 배우도록 백투백, 이동 거리, 시차, 경기 시작 시간 슬롯을 파생 변수로 반영한다.

슈팅 효율은 단일 시즌 값이 요동친다. 그래서 샷 퀄리티 기반 지표를 혼합하는 편이 안정적이다. 제일 먼저 시도해볼 만한 것은 샷 존별 기대 득점. 링 주변, 미드레인지, 코너 3점, 탑 3점으로 나눠 리그 평균 대비 기대 득점을 계산한다. 샷 선택이 좋아졌는지 나빠졌는지를 측정하면, 단기 슬럼프와 장기 퇴보를 어느 정도 구분할 수 있다.

출전 시간 예측은 MVP 확률에 결정적이다. 이탈 변수, 파울 트러블 성향, 매치업 리스크, 가비지 타임 위험 같은 요소를 함께 본다. 특히 중반 이후에는 로테이션 패턴이 굳는다. 코치의 교체 시점과 라인업 선호는 팀마다 다르고 시즌 중 바뀐다. 플레이 바이 플레이에서 타임스탬프 기준 교체 이벤트를 뽑아 평균 교체 시점과 분산을 추정하면, 분배 곡선이 나온다. 거기에 체력 변수를 겹친다. 최근 7일간 누적 출전 시간, 고강도 분당 활동량, 접촉 빈도 같은 피지컬 프록시를 추가하면 갑작스러운 분량 축소를 조금 더 일찍 감지한다.

상대 수비 매치업은 디테일이 좋을수록 성능이 오른다. 포지션별 수비 효율뿐 아니라, 특정 유형 선수 상대로 허용한 플레이 타입을 본다. 예를 들어 픽앤롤 볼핸들러 방어에 약한 팀은 볼 스크린을 많이 쓰는 가드를 상대로 추가 가중치를 줘야 한다. 이때 플레이 타입 태깅이 없다면, 스크린 이벤트와 드리블 이후의 드라이브를 조합해 대략적인 태그를 생성할 수 있다.

마지막으로 노이즈를 견디는 요령이 필요하다. 다중 윈도우 이동평균, 분산, 누적 합을 함께 쓰고, 극단값은 윈저라이징으로 완만하게 자른다. 표본이 적은 루키나 롤플레이어는 베이지안 수축을 적용해 리그 평균으로 살짝 당겨놓는다. 이렇게 하면 초반 과대평가나 과소평가를 줄일 수 있다.

모델링 전략, 한 번에 큰 모델보다 계층형으로

의사결정 트리 기반의 그래디언트 부스팅은 가상농구에서 늘 기본값처럼 작동했다. 결측 허용, 비선형, 변수 상호작용 포착에 강하다. 다만 극단 꼬리를 예측해야 하는 슬레이트 MVP에서는 칼리브레이션이 흔들리기 쉽다. 그래서 두 가지 설계를 함께 쓴다. 첫째, 팀 MVP를 예측하는 회귀 모델로 분당 판타지 포인트와 출전 시간을 각각 예측한 뒤 곱해 총점을 얻는 방식. 둘째, 슬레이트 MVP를 위한 순위 학습 모델. 랭크 손실을 쓰거나 득점 상위권으로의 확률 질량을 키우는 목적식으로 미세 조정하면 상위 1%를 잡는 감도가 올라간다.

바이너리 분류로 상위 1%를 직접 라벨링하면 표본 불균형 문제가 크다. 언더샘플링은 정보 손실이 크고, 오버샘플링은 과적합 위험이 있다. 경험상 효율적인 방법은 라벨을 다단계로 쪼개는 것이다. 상위 20, 상위 5, 최상위 1로 구간을 나눠 각각의 확률을 예측하고, 마지막에 연쇄적으로 곱해 최상위 확률을 만든다. 이렇게 하면 모델이 중상위와 최상위를 구분하는 경계에서 학습을 충분히 한다.

베이지안 계층 모델도 쓸모가 많다. 선수, 가상농구 팀, 코치, 시즌을 계층으로 삼아 분당 생산성의 사전 분포를 잡으면 초반 데이터 부족 문제를 자연스럽게 해결한다. 특히 트레이드 직후나 주전 부상으로 역할이 확 바뀌는 시기에 안정적이다. 다만 추론 시간이 길어 실시간 예측에는 부담이 된다. 그래서 나는 베이지안 모델로 역할 사전치를 주기 단위로 갱신하고, 실전 예측은 부스팅 회귀가 맡는 하이브리드 구조를 쓴다.

신경망을 쓰고 싶다면, 시계열 변동과 라인업 상호작용을 다루기에 시퀀스 모델이 자연스럽다. 그러나 피쳐 엔지니어링이 잘 된 부스팅 기반 모델이 대체로 더 빠르고 쉽게 이긴다. 신경망을 쓴다고 해도 멀티헤드 출력으로 분당 생산성과 출전 시간을 분리해 예측하는 구성이 효율적이었다. 입력으로는 최근 경기들의 윈도우 스택과 부상 상태의 토큰화 벡터를 넣는다.

학습과 검증, 시간을 존중하는 설계

가상농구는 시간 순서가 모델의 생명줄이다. 랜덤 셔플 교차검증은 금물이다. 롤링 윈도우 방식으로, 특정 구간을 훈련하고 다음 구간을 검증한다. 예를 들어 1주차에서 6주차로 학습하고 7주차를 검증, 2주차에서 7주차로 학습하고 8주차를 검증하는 식으로 구간을 전진시킨다. 이렇게 하면 피쳐의 시간이 뒤섞이지 않고, 실제 운영과 동일한 환경을 재현한다.

평가 지표는 목적에 따라 달라야 한다. 팀 MVP 모델은 평균 절대 오차나 스피어만 순위 상관계수가 유용하고, 슬레이트 MVP는 프리시전 앳 K, 상위 K명 내 실제 MVP 포함 비율, 로그 손실과 브리어 스코어의 칼리브레이션까지 본다. 운영자 입장에서는 상위 후보 5명 중 실제 최상위가 존재할 확률이 가장 직관적 지표다. 로스터 락 직전에 후보군을 좁히는 데 바로 쓰일 수 있다.

백테스트는 시즌 단위 시뮬레이션이 핵심이다. 가상의 운영 규칙을 코드로 박아두고, 각 날짜별로 모델 점수에 따라 후보를 선정한 후 실제 결과를 기록한다. 이때 재학습 주기를 주간으로 둘지, 매일 갱신할지에 따라 결과가 달라진다. 매일 갱신은 과적합 위험이 올라가고, 주간 갱신은 반응 속도가 느려진다. 리그의 변동성이 높은 초반에는 주 2회, 중반 이후에는 주 1회를 기본값으로 두는 것이 좋았다.

칼리브레이션은 종종 과소평가된다. MVP는 희귀 사건이라 확률의 절대값이 작다. 2, 5, 10 같은 숫자 구간에서 예측 빈도와 실제 빈도를 맞추는 작업을 해야 한다. 온도 조정이나 아이소토닉 회귀를 후처리로 붙이면 사용자가 체감하는 신뢰도가 높아진다.

해석과 의사결정, 숫자를 사람에게 건네는 법

현업에서 가장 많이 받는 질문은 왜 그 선수가 상위에 올랐는가다. 모델이 정답을 말하는 순간, 사람은 설명을 원한다. 글로벌 설명보다 개별 추론 단위의 지역 설명이 유용하다. SHAP 가치를 활용해 그날 그 선수의 점수를 밀어 올린 변수 상위 5개를 보여주면, 데이터팀과 운영팀의 대화가 빨라진다. 예를 들어 이렇게 요약한다. 상대 팀의 드랍 커버리지 빈도가 높고, 해당 선수가 미드레인지 풀업 성공률을 최근 10경기 기준으로 6%포인트 끌어올렸으며, 동시 출전하는 빅맨이 빠져서 롤맨 주목도가 낮아졌다. 이런 설명은 수치와 전술의 언어가 자연스럽게 섞여 신뢰를 만든다.

시각화는 리더에게 크게 먹힌다. 분당 생산성의 분포와 예상 출전 시간의 불확실성을 두 개의 박스플롯으로 그려 함께 보여주면, 평균 하나만 본 리스크 착각을 줄일 수 있다. 종종 평균이 같아도 범위가 넓은 후보는 피해야 하는 날이 온다. 락 직전에 의사결정자가 취할 수 있는 액션은 둘 중 하나다. 확률이 얕게 넓은 옵션을 여러 명 조합해 리스크를 분산하거나, 깊고 뾰족한 한 명에 베팅하되 보험 라인업을 하나 더 만든다. 모델은 확률뿐 아니라 분산 추정까지 제공할 때 진짜 가치를 낸다.

운영 환경, 실시간의 제약을 모델이 이해하도록

락 타임 60분 전부터는 뉴스가 쏟아진다. 주전 결장, 워크아웃 이후 컨디션 불확실, 연장전 관리 예고. 이 신호를 피쳐에 흡수하는 방법은 세 단계다. 먼저, 의무 리포트와 팀 비트 라이터의 트윗 같은 구조화되지 않은 문장을 엔티티 단위로 추출해 상태 코드를 만든다. 둘째, 상태 코드마다 과거 영향을 통계적으로 추정해 사전 편향치를 만든다. 셋째, 실시간 입력이 들어오면 해당 사전치를 즉시 반영해 예측을 갱신한다. 이때 지나친 반응을 막기 위해 이동 평균 기반의 관성 항을 둔다. 갑작스런 결장 확정이 아니면 변화량을 절반만 반영한다 같은 규칙을 박아두면 모델이 덜 흔들린다.

시스템은 두 계층으로 쪼개는 게 안전하다. 배치 학습으로 매일 새벽 전체 파라미터를 재적합하고, 실시간 계층에서 라인업 뉴스와 라인 이동을 흡수해 경량 업데이트를 한다. 경량 업데이트는 몇 초 안에 끝나야 한다. 트래픽이 몰릴 때를 대비해 가상개경주 캐시 레이어를 두고, 동일한 입력에 대한 결과를 일정 시간 유지한다. 실무에서는 30에서 60초 TTL이 적당했다.

데이터 품질과 규정, 회색지대를 통과하는 방법

가상농구는 정식 스포츠 데이터의 파이프라인을 활용하되, 가상의 게임 규칙에 맞게 해석을 바꿔 사용한다. 그래서 저작권과 사용 허가를 명확히 해야 하고, 공공 API의 속도 제한과 지연 시간도 계약 단계에서 합의할 필요가 있다. 베팅 라인은 시장 신호로 유용하지만, 규정상 활용이 제한된 경우가 있다. 내부 규정 문서에 데이터 출처와 활용 범위를 기록하고, 릴리즈마다 변경 사항을 감사 로그로 남기는 습관이 결국 회사를 지킨다.

품질 측면에서는 피드 간 불일치가 종종 발생한다. 예를 들어 실시간 피드에서는 리바운드가 특정 선수에게 기록되었지만, 경기 종료 후 정정되며 다른 선수로 넘어가는 경우다. 이를 대비해 사후 정정 테이블을 유지하고, 학습 데이터생성 파이프라인은 락 타임 스냅샷과 사후 정정 버전을 분리해 저장해야 한다. 어떤 지표를 쓸지 사전에 정의하고 일관되게 유지하면 모델 평가가 흔들리지 않는다.

사례로 보는 피쳐 효과, 짧은 메모 몇 가지

몇 시즌을 돌리며 남은 메모를 공유한다. 플로어 제너레이터가 빠졌을 때, 남은 볼핸들러의 사용률은 평균 5에서 8포인트 상승했다. 그러나 분당 생산성은 평균 2에서 3 포인트만 늘었다. 효율 하락이 동반되기 때문이다. 반대로 롤맨이 빠졌을 때는 볼핸들러의 어시스트 기댓값이 오히려 줄어들었다. 주로 코너 스팟업으로 공이 더 많이 빠지기 때문이다. 스윙맨이 결장할 때 코너 3점 시도가 늘며 특정 슈터의 기대 득점이 미세하게 올라갔고, 이 변화는 팀 페이스가 낮은 경기에서 더 분명했다.

백투백 두 번째 날, 원정에서 홈으로 복귀한 팀의 롤플레이어는 출전 시간이 늘어도 효율이 흔들리는 비율이 높았다. 코치는 스타를 보호하고 롤플레이어를 더 쓰지만, 해당 선수들의 샷 퀄리티가 떨어지는 경향이 있었다. 이런 차이는 선수군을 스킬셋별로 묶어 처리하면 모델이 더 쉽게 배운다. 예를 들어 캐치 앤 슛 위주 슈터, 자가 창출형 윙, 롤 중심 빅, 페이싱 없는 빅 같은 군집을 만든다. 단순한 원핫 포지션보다 강력하다.

리그 규칙의 차이, 모델의 목적도 달라진다

가상농구라고 해도 플랫폼 규칙이 다르면 최적의 전략이 바뀐다. 일부 리그는 3점 보너스가 크고, 어떤 곳은 더블더블, 트리플더블 보너스를 크게 준다. 파울과 턴오버 페널티가 큰 리그에서는 하이유스 슈터의 변동성이 커져 상위 꼬리의 확률이 낮아진다. 이런 구조 차이는 타깃 함수를 직접 수정하는 것으로 반영한다. 가능하다면 훈련 시에 여러 규칙 버전을 병렬 학습하고, 운영 시점에 토글하는 식으로 구현한다. 동일한 피쳐 세트로 규칙만 바꿔 재학습하도록 설계하면 유지보수가 편하다.

다른 종목으로의 전이도 흥미롭다. 가상축구에서는 포제션 정의가 애매하고 이벤트 간 상관이 크다. 그래서 시퀀스 모델의 이점이 더 커진다. 가상경마나 가상개경주는 레이스 컨텍스트와 개체 특성이 중심이 되며, 교차 상호작용이 제한적이라 베이지안 수축이 더 훌륭히 작동한다. 반면 가상농구는 라인업 상호작용이 복잡해 부스팅 기반 모델의 민감한 분기 처리가 강점을 보인다. 종목이 달라도 공통의 원칙은 같다. 목표를 엄밀히 정의하고, 시간 누수를 막고, 칼리브레이션으로 사용자 신뢰를 쌓는다.

구현 순서, 최소 기능 제품을 빠르게 검증하기

    데이터 파이프라인 구축: 박스스코어, 플레이 바이 플레이, 라인업, 부상 리포트를 시간 스냅샷과 함께 적재한다. 초기 피쳐 세트 정의: 분당 생산성, 출전 시간, 페이스 보정, 사용률, 온오프 분해, 최근 N경기 이동평균을 만든다. 팀 MVP 회귀 모델: 분당 생산성과 출전 시간을 각각 예측한 뒤 곱으로 총점을 산출하고, 팀 내 순위를 검증한다. 슬레이트 상위 확률 모델: 상위 20, 상위 5, 최상위 1의 다단계 확률을 학습하고 칼리브레이션을 맞춘다. 백테스트와 대시보드: 롤링 윈도우 검증, 프리시전 앳 K, 분산 추정 시각화, SHAP 기반 설명을 붙인다.

이 다섯 단계만 제대로 돌려도, 릴리즈 초기에 운영팀이 체감할 성과를 낸다. 이후의 개선은 안정성을 해치지 않는 범위에서 한 번에 하나씩 추가한다.

함정과 예외, 모델이 자주 넘어지는 순간

    시즌 초반 과적합: 프리시즌과 첫 5경기에서 나온 극단 수치를 곧이곧대로 반영하면 이후 한 달간 성능이 요동친다. 사전 분포와 윈저라이징으로 초반을 억제하라. 부상 복귀의 과장: 스타 복귀 시 동료들의 사용률 하락을 충분히 반영하지 않으면 과대평가가 쌓인다. 복귀 후 3경기까지는 과거 분당 생산성에 감쇠를 적용하라. 가비지 타임 착시: 대승 또는 대패 경기에서 분당 생산성이 급등한 롤플레이어를 다음 경기에서 과신하기 쉽다. 점수 차와 Q4 출전 비중을 조정 변수로 필수 반영하라. 연장전 후 피로 누적: 연장전을 치른 뒤 백투백 두 번째 날은 스타의 사용률은 유지돼도 효율이 떨어지는 편이다. 연장전 분량을 체력 변수에 가중해서 넣어라. 시장 라인의 후행성: 베팅 라인은 유용하지만 뉴스 반응이 빠를 뿐 근본적인 롤 변화에는 후행적일 때가 있다. 라인 이동을 절대값보다 변화율과 타이밍으로 해석하라.

이 다섯 가지는 현장에서 반복적으로 확인되는 함정이라, 코드 주석으로라도 강조해두면 다음 시즌의 과오를 줄인다.

성능의 기준선, 어느 정도면 쓸 만한가

슬레이트 규모가 10경기 내외인 평일 저녁을 기준으로, 상위 후보 5명 안에 실제 최상위 선수가 들 확률이 55에서 65 사이면 실전에서 분명한 체감이 온다. 팀 MVP는 상위 1위 적중률이 40에서 50을 넘어가면 운영에 확실히 쓰인다. 물론 리그 규칙과 시즌 국면에 따라 달라진다. 올스타 브레이크 전후, 트레이드 데드라인, 플레이오프 경쟁이 치열한 팀과 탱킹 팀의 교차 지점에서는 수치가 깔끔하지 않다. 이런 국면에서는 불확실성 지표를 전면에 내세워 의사결정자가 안전장치를 마련할 수 있게 돕는 편이 낫다.

image

데이터팀과 운영팀의 호흡, 릴리즈 이후가 진짜 시작

모델 배포 후 한 달은 관찰의 시간이다. 지표만 보지 말고 운영팀의 피드백 채널을 열어두라. 왜곡이 발생하는 지점은 현장에서 가장 먼저 느낀다. 예를 들어 특정 팀의 로테이션이 주중과 주말에 다르게 운용된다는 미세한 패턴은 자동화가 놓치기 쉽다. 운영팀이 현장에서 적어주는 주석 한 줄이 다음 버전에서 큰 성능 차이를 만든다. 데이터팀은 이 피드백을 반영한 실험 가지를 따로 만들어, 프로덕션과 분리된 환경에서 검증한다. 성능이 안정되면 메인 파이프라인에 합친다.

모델 거버넌스도 중요하다. 주요 하이퍼파라미터 변경, 피쳐 추가나 삭제, 데이터 소스 교체는 모두 변경 요청 문서로 남기고, 롤백 계획을 함께 써둔다. 예외 상황 대비 킬 스위치도 하나 있어야 한다. 피드 장애나 규칙 변경으로 예측이 무의미해진 날에는 과감히 모델 출력을 숨기고, 휴리스틱 기반의 안전 모드로 전환한다.

마지막으로, 숫자와 감은 적이 아니다

현장에서 뛰는 운영자는 평생 쌓인 감이 있다. 모델은 그 감에 구조를 붙여주는 도구다. 과거 나는 프로젝션이 높게 나온 롤플레이어를 밀다가, 코치가 루키에게 예고 없이 12분을 더 주는 바람에 전부 틀린 적이 있다. 그날 이후로 나는 대시보드에 코치의 최근 경기 교체 시점 평균과 분산, 그리고 루키의 분당 생산성 확률 분포를 항상 붙였다. 그 작은 변화가 운영자에게 경고로 다가와, 우리는 대체 라인업을 한 묶음 준비하는 습관을 들였다. 모델의 숫자는 결정을 대신하지 않는다. 좋은 숫자는 좋은 결정을 빠르게 만든다.

가상농구 MVP 예측 모델은 단기간에 완성되지 않는다. 타깃 정의, 데이터 파이프라인, 피쳐 엔지니어링, 계층형 모델링, 시간 일관 검증, 칼리브레이션, 해석 가능성, 운영 자동화로 이어지는 긴 호흡의 작업이다. 그 과정을 묵묵히 누적하면, 어느 순간부터 표면의 노이즈가 잦아들고 패턴이 선명해진다. 그때부터는 숫자가 말해준다. 오늘은 이 선수에게 기회가 왔다고. 그리고 당신의 경험은 그 숫자에 맥락을 더해준다. 이 팀은 백투백이고, 코치는 교체를 서두르는 편이며, 상대 센터는 파울 트러블이 잦다고. 모델과 사람이 나란히 걸을 때, 가상농구의 MVP는 예측 값 그 이상을 의미하게 된다.