본문으로 건너뛰기

Kaggle March Machine Learning Mania 2023 우승 솔루션 분석

CPA 출신 RustyB가 2018년 베이스라인 모델을 개선하여 NCAA 농구 토너먼트 예측 대회에서 1위를 차지한 XGBoost 기반의 심플한 전략을 공유한다.

챕터별 상세

00:00

배경 및 자기소개

RustyB(Steve Bratz)는 전문 데이터 사이언티스트가 아닌 공인회계사(CPA)로 활동하며 취미로 Kaggle에 참여해왔다. 엑셀로 처리하기 힘든 대용량 회계 데이터를 다루기 위해 Python과 Pandas를 업무에 활용하며 데이터 분석 역량을 쌓았다. 이번 대회 우승을 통해 Kaggle Expert 등급과 함께 금, 은, 동메달을 모두 보유하게 되었다.
02:18

모델 개요 및 성능

2018년 우승자 Raddar의 모델을 기반으로 한 XGBoost 모델을 사용했다. 전체 모델 실행 시간은 230초(약 4분) 미만으로 매우 효율적이며 가벼운 구조를 가졌다. 복잡한 아키텍처 대신 소수의 핵심 피처를 활용하여 모델의 견고함을 유지했다.
03:05

피처 엔지니어링 전략

총 45개의 피처를 사용했으며 대부분 정규 시즌 경기 결과의 평균값이다. 팀 간의 시드 차이(Seed Diff), 각 팀의 시드 번호, 팀 퀄리티(Team Quality), 정규 시즌 득점 차이 평균 등이 주요 변수로 포함됐다. 특히 최근 14일간의 승률을 통해 팀의 상승세를 반영하는 피처를 추가했다.
04:20

변수 중요도 분석

SHAP 값을 통해 분석한 결과 시드 차이가 예측 결과에 가장 압도적인 영향력을 미쳤다. 그 뒤를 이어 팀 퀄리티와 정규 시즌 득점 차이 평균이 주요 변수로 확인됐다. 턴오버(Turnover) 관련 지표들은 다른 변수들에 비해 상대적으로 낮은 중요도를 보였다.
06:41

학습 방법 및 데이터 구성

Cauchy 커스텀 손실 함수를 적용한 XGBoost 모델을 학습시켰다. 타겟 변수는 두 팀 간의 점수 차이를 기반으로 설정했다. 서로 다른 랜덤 스테이트(Random State)로 3번 학습한 모델의 예측값을 평균 내어 최종 제출물을 생성함으로써 결과의 변동성을 줄였다.
python
import xgboost as xgb

# Cauchy custom loss function
def cauchy_loss(preds, dtrain):
    labels = dtrain.get_label()
    c = 5000 # Constant for Cauchy distribution
    x = preds - labels
    grad = x / (x**2 + c**2)
    hess = (c**2 - x**2) / (x**2 + c**2)**2
    return grad, hess

# Model training with different random states
seeds = [42, 123, 999]
final_preds = []
for s in seeds:
    model = xgb.train(params, dtrain, num_boost_round=100, obj=cauchy_loss, seed=s)
    final_preds.append(model.predict(dtest))

# Averaging predictions
submission = sum(final_preds) / len(final_preds)

Cauchy 커스텀 손실 함수를 정의하고 서로 다른 시드값으로 학습된 모델의 결과를 앙상블하는 핵심 로직

08:21

2018년 베이스라인의 개선 사항

Raddar의 2018년 R 코드를 Python 버전으로 변환하여 사용하며 몇 가지 핵심적인 수정을 가했다. 팀 퀄리티 계산 시 무한대 값을 유발하던 지수 함수(np.exp)를 제거하여 모델의 수치적 안정성을 확보했다. 또한 상위 시드 팀이 하위 시드 팀을 무조건 이긴다고 가정하는 강제 오버라이드 로직을 삭제하여 모델이 데이터에 기반해 판단하도록 했다.
14:30

결과 분석 및 Q&A

이번 대회는 남녀 토너먼트가 통합된 첫 사례였으며 여성부 경기의 낮은 이변 발생률이 모델 안정성에 기여했다. RustyB는 여성부 예측에서 99.9 퍼센타일의 성적을 거둔 반면 남성부에서는 50 퍼센타일에 머물렀으나 통합 점수에서 1위를 차지했다. 단순히 복잡한 모델을 만드는 것보다 데이터의 특성을 이해하고 검증된 로직을 적절히 수정하는 것이 승리의 열쇠였다.

용어 해설

엑스지부스트(XGBoost)
결정 트리 기반의 앙상블 머신러닝 알고리즘으로, 그래디언트 부스팅 프레임워크를 효율적으로 구현하여 속도와 성능이 뛰어나다. 정형 데이터 예측 대회에서 가장 널리 사용되는 도구 중 하나이다.
샤플리 값 분석(SHAP)
게임 이론을 바탕으로 머신러닝 모델의 출력 결과에 각 피처가 기여한 정도를 수치화하여 설명하는 기법이다. 모델의 블랙박스 특성을 해소하고 변수 중요도를 직관적으로 파악하게 돕는다.
마치 매드니스(March Madness)
미국 대학 체육 협회(NCAA)가 매년 3월에 개최하는 대학 농구 토너먼트로, 단판 승부 방식이라 이변이 매우 많이 발생한다. 데이터 분석가들에게는 높은 변동성을 예측해야 하는 도전적인 과제이다.
피처 엔지니어링(Feature Engineering)
원시 데이터로부터 머신러닝 알고리즘의 예측 성능을 높이기 위해 새로운 변수를 생성하거나 기존 변수를 가공하는 과정이다. 도메인 지식을 데이터에 녹여내는 핵심적인 단계이다.
손실 함수(Loss Function)
모델의 예측값과 실제 정답 사이의 오차를 측정하는 함수이다. 학습 과정에서 이 값을 최소화하도록 모델 파라미터를 조정하며, 문제의 특성에 따라 적절한 함수를 선택하는 것이 중요하다.
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 02. 25.수집 2026. 02. 25.출처 타입 YOUTUBE

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.