courses
축구를 예측하는 일은 어렵습니다. 득점이 적은 종목이라 한 번의 굴절 슛이 결과를 바꿔 버릴 수 있고, 경기의 상당 부분은 운에 좌우됩니다. 국가대표팀 경기는 더 어렵습니다. 각 국가는 1년에 경쟁 경기를 몇 번만 치르기 때문에, 클럽 리그보다 학습할 데이터가 훨씬 적습니다.
설상가상으로, 올해 월드컵에서는 FIFA가 과제를 한층 더 어렵게 만들었습니다. 48개 팀으로 확대된 월드컵은 새 포맷을 도입해, 12개 조 각각 상위 두 팀과 더불어 12개 조 3위 중 성적이 좋은 8개 팀이 16강에 오릅니다. 그 결과 조별리그의 향방은 더욱 예측 불가능해졌습니다. 도전을 좋아하는 편이고 축구도 좋아하기에, 저는 바로 그 부분을 예측해 보기로 했습니다.
이 글은 거의 바닥부터 다시 만든 EURO 2024 예측 프로젝트의 후속편입니다. 지난번에는 전부 Jupyter 노트북에서 작업하며 경기당 가장 가능성 높은 스코어라인 하나만 예측했습니다. 이번에는 신선한 결과를 수집하고 스스로 재학습하며, 대회 전체를 10,000번 몬테카를로 시뮬레이션하는 엔드 투 엔드 MLOps 파이프라인을 구축해, 경기 단위 예측을 각 팀의 진출·우승 확률로 전환했습니다.
이 글에서는 프로젝트를 높은 수준에서 훑어보겠습니다. 데이터와 특징량, 재현성을 보장하는 MLOps 실천, 파이프라인 아키텍처, 그리고 국가대표 축구를 가장 잘 예측한 모델이 무엇인지까지요. 전체 코드는 프로젝트 저장소에서 확인할 수 있습니다. 그리고 물론, 모델이 누구의 우승을 점치는지도 알려 드리겠습니다. (스포일러: 스페인과 아르헨티나를 각각 약 16%로 선호하지만, 더 흥미로운 건 그 결론에 이르는 과정입니다.)
대회 분위기가 달아오르셨다면, 데이터와 AI가 축구를 어떻게 바꾸고 있는지 다루는 세션 시리즈 Data & AI World Cup 주간을 추천합니다. 라이브와 다시보기 모두 무료로 시청할 수 있습니다.
한눈에 보기
- 이는 2026 FIFA 월드컵을 예측하는 엔드 투 엔드 MLOps 파이프라인으로, 최신 국가대표팀 결과를 끌어와 대회 기간에는 2시간마다 Google Cloud에서 자동 재학습합니다.
- API-Football과 Elo 레이팅 데이터를 브론즈-실버-골드 메달리온 아키텍처로 처리하고, DVC로 버전 관리해 완전한 재현성을 보장합니다.
- 5개 계열의 10개 모델을 347경기 홀드아웃에서 비교한 결과 XGBoost가 근소하게 우승했습니다. 상위 5개 모델은 거의 차이가 없었고, 팀 간 Elo 차이가 예측력의 대부분을 설명합니다.
- 몬테카를로 시뮬레이션이 대회 전체를 10,000번 플레이해, 경기 단위 득점 예측을 각 팀의 진출·우승 확률로 전환합니다.
- 2026년 6월 10일 기준으로 모델의 우승 후보는 스페인과 아르헨티나(각각 약 16%)입니다. 실시간 예측은 2시간마다 새로고침되는 Streamlit 대시보드에서 확인할 수 있습니다.
예측을 받쳐 주는 데이터
예측의 품질은 결국 투입물의 품질에 달려 있습니다. 그래서 원재료부터 살펴볼 가치가 있습니다. 모델은 두 개의 실시간 데이터 소스에서 학습하며, 이를 단일하고 정돈된 특징 테이블로 변환합니다.
데이터 출처
모든 것은 두 곳에서 시작합니다. API-Football은 대진과 경기별 통계를 제공합니다. 누가 누구와 언제, 어디서 경기했고 결과가 어땠는지까지요. eloratings.net은 모든 국가대표팀의 Elo 레이팅을 제공합니다.
Elo 레이팅은 팀의 강도를 하나의 숫자로 담아냅니다. 각 팀은 일정한 스케일 상에 위치하며, 경기 후에는 레이팅이 갱신됩니다. 강한 팀을 이기면 큰 폭으로 오르고, 약한 팀에 지면 급락합니다. 체스에서 유래해 축구에도 깔끔히 적용되는 개념입니다. 전체 직관을 알고 싶다면, 이전 DataCamp 글에서 2022 월드컵 맥락으로 자세히 설명합니다.
이 두 소스를 결합해 2018년 이후 약 6,900개의 국가대표 경기를 담은 골드 데이터셋을 만들었고, 이를 학습에 사용합니다.
모델이 예측하는 것
여기서 첫 번째로 중요한 설계 선택이 나옵니다. 승·무·패를 직접 예측하는 대신, 모델은 더 미세한 수준인 각 팀의 경기당 득점 수를 예측합니다. 축구의 득점 수는 꽤 정확하게 포아송 분포를 따르는데, 이는 일정 시간 창에서 드물게 일어나는 사건의 발생 횟수를 모델링하는 표준 방식입니다.
결과가 아니라 득점을 예측하기 때문에 이후 모든 것이 가능해집니다. 일단 모델이 어떤 대진에도 그럴듯한 스코어라인을 생성할 수 있으면, 사람들이 진짜 궁금해하는 질문(누가 조별리그를 통과하고 누가 트로피를 들어 올리는가)을 그 스코어라인을 수천 번 시뮬레이션해 답할 수 있습니다.
핵심 특징량
각 경기는 작지만 신중히 고른 특징 세트로 설명됩니다.
- Elo 차이: 두 팀 간 레이팅 격차. 이는 모델에서 단연 가장 중요한 특징으로, 두 번째로 강한 특징보다 대략 두 자릿수 정도 더 중요합니다. 두 팀의 전력 차이는 다른 어떤 것보다 결과를 잘 설명한다는 직관과 맞아떨어집니다.
- Elo 합: 두 레이팅의 합으로, 대진의 전반적 수준을 나타냅니다. 차이만으로는 스페인 대 아르헨티나와 산마리노 대 안도라처럼 전력 차이는 비슷하지만 수준이 전혀 다른 두 경기를 구분할 수 없습니다. 합을 사용하면 그 정보를 복원할 수 있습니다.
- 최근 Elo 변화(최근 5경기): 각 팀 레이팅의 최근 변화량. 상대 강도를 이미 반영한 상태에서 폼을 포착합니다.
- 최근 득점/실점(최근 5경기): 각 팀의 최근 공격/수비 성과를 절대량으로 계산합니다.
- 경기 맥락: 대회 급(월드컵 본선, 예선, 네이션스리그 등), 토너먼트 여부, 중립 경기장 여부.
모든 특징은 철저히 누수(leakage) 안전합니다. 즉, 킥오프 전에 이용 가능했던 정보만 사용합니다. 당연해 보이지만, 테스트에선 그럴듯해도 실제 현장에선 무너지는 모델을 만들게 하는 가장 쉬운 실수 중 하나입니다.
채택하지 않은 아이디어도 있습니다. 인게임 통계를 클러스터링해 구축한 팀별 "플레이 스타일" 특징을 계획했는데, 이는 비지도 학습 단계입니다. 하지만 실제로는 의미 있게 구분되는 그룹이 생기지 않아, 모델에 노이즈를 주입하느니 제외했습니다. 부정적 결과도 여전히 결과입니다.
데이터 재현성 유지
두 소스에서 데이터가 순차적으로 들어오기 때문에, 원시 파일에서 모델 준비 특징까지의 경로는 매번 동일해야 합니다. 이를 제공하는 것이 메달리온 아키텍처입니다. 데이터는 세 층으로 구성됩니다.
- 브론즈: 도착한 그대로의 원시 데이터. 손대지 않습니다.
- 실버: 정리·표준화 단계. 두 소스 간 팀명 매핑(철자가 자주 다릅니다), 스키마 검증, Elo 레이팅을 경기 기록에 조인, 누락·이상 처리 등을 수행합니다.
- 골드: 모델링 레이어. 경기당 한 행으로 정돈된 테이블에 모든 특징을 계산해 학습 준비를 마칩니다.
각 층은 다음 층의 입력이므로, 이상이 보이면 전체를 한꺼번에 풀지 않고 한 단계씩 소급해 추적할 수 있습니다. 전체 경로의 재현성을 위해 DVC (Data Version Control)를 사용합니다. 새로운 결과가 들어오면 dvc repro 한 번으로 브론즈에서 실버·골드를 재생성하며, 입력이 바뀐 단계만 다시 실행합니다. 또한 산출 데이터셋에 버전을 매겨 과거 상태를 정확히 복구할 수 있게 합니다.
최적의 모델 선택
득점 예측은 이미 연구가 많은 문제이며, 단 하나의 자명한 도구가 있는 분야가 아닙니다. 그래서 한 가지 접근에 미리 고정하지 않고, 열 가지를 만들어 경쟁시켰습니다.
도전자들
열 개 모델은 다섯 계열과 간단한 기준선으로 구성됩니다. 각 모델의 내부를 알 필요는 없습니다. 골이 어떻게 나오는지에 대한 가정이 서로 크게 다르다는 점이 핵심입니다.
| 계열 | 모델 | 핵심 아이디어 |
|---|---|---|
| 기준선 | 평균률 포아송 | 모든 팀이 특징을 무시하고 장기 평균 득점을 낸다고 가정합니다. 다른 모델들이 넘어야 할 최저선입니다. |
| 통계적 | 이변량 포아송, 음이항 | 두 팀의 득점 수를 사건 계산에 특화된 분포로 직접 모델링합니다. |
| 베이지안 | 베이지안 포아송 (MCMC) | 같은 계산 아이디어지만, 각 추정치에 대한 불확실성 범위를 반환합니다. 계산량은 훨씬 큽니다. 적합 속도가 다른 모델 대비 약 100배 느립니다. |
| 시계열 | SARIMAX | 팀의 성적을 시간에 따른 순서로 보고 그 시퀀스를 앞으로 투영합니다. |
| 머신러닝 | 리지, 랜덤 포레스트, XGBoost | 고정된 방정식에 얽매이지 않고 특징에서 바로 패턴을 학습합니다. |
| 딥러닝 | LSTM, 1D CNN | 시퀀스 및 국소 패턴을 탐색하는 신경망입니다. |
평가 방식
열 가지 후보를 눈대중으로 뽑는 건 불가능합니다. 대신 각 모델은 세 단계를 거치며, 코드를 통해 다음 단계로 이동할지 결정됩니다. 이것이 코드 기반 배포의 의미입니다. 수동 튜닝이 아니라 자동 검사로 모델이 환경 간 승격되므로, 선택 과정 전체가 재현 가능하고 감사가 쉽습니다.
- 실험. 모든 모델은 2022 월드컵 이전의 국가대표 경기에만 학습됩니다. 모든 경기가 동일 가중치는 아닙니다. 최신 경기와 더 중요한 대회일수록 더 큰 가중치(시간 감쇠와 중요도 가중치)를 부여해, 오래된 친선전보다 최근의 경쟁 경기 결과가 모델을 더 많이 좌우합니다. 그런 다음 교차 검증으로 포아송 음의 로그우도(NLL)를 최소화하도록 설정을 튜닝합니다. NLL은 예측 득점률이 실제 득점과 얼마나 잘 맞았는지를 나타내는 점수로, 낮을수록 좋습니다. 그 결과 각 모델의 최적 튜닝 버전이 만들어집니다.
- 품질 보증. 튜닝된 모델은 보지 못한 경기에서 테스트합니다. 2022 월드컵과 이후 열린 6개 메이저 대회(유로, 아프리카 네이션스컵 2회, 코파 아메리카, 아시안컵, 골드컵) 등 총 347경기입니다. 여기서는 지표를 순위 확률 점수(RPS)로 바꿉니다. 패-무-승처럼 자연스러운 순서가 있는 확률 예측의 품질을 측정하며, 대체로 올바른 방향의 자신감을 보상합니다. 역시 낮을수록 좋습니다. 여기서 가장 강한 모델이 도전자가 됩니다. 팀의 향방을 예측하는 것이 목표이므로 RPS가 적절한 잣대입니다.
- 배포. 도전자는 현 챔피언과 비교합니다. 이기면 승격되고, 사용 가능한 모든 경기로 다시 적합해 대회 시작 시점에 최대한의 데이터로 학습을 마치게 합니다.
승자는 누구였나
그렇다면 어떤 접근이 최종 승자가 되었을까요? 아래는 RPS(낮을수록 좋음)로 채점한 전체 홀드아웃 리더보드입니다.
| 모델 | 홀드아웃 RPS |
|---|---|
| XGBoost | 0.18289 |
| 베이지안 포아송 | 0.18316 |
| 음이항 | 0.18373 |
| 이변량 포아송 | 0.18389 |
| 랜덤 포레스트 | 0.18392 |
| SARIMAX | 0.18583 |
| 리지 | 0.18813 |
| LSTM | 0.19299 |
| 1D CNN | 0.20916 |
| 평균률 포아송(기준선) | 0.22872 |
이 결과에서 네 가지가 눈에 띕니다.
- XGBoost가 이겼지만 근소했습니다. 상위 5개 모델(XGBoost, 베이지안 포아송, 음이항, 이변량 포아송, 랜덤 포레스트)은 RPS 약 0.0011 범위 내에 몰려 있습니다. 서로 매우 다른 접근이 이토록 가까이 모이면, 보통 천장은 모델이 아니라 데이터와 특징이 정합니다. 여기서는 Elo 차이가 워낙 많은 부분을 설명해, 모델 선택이 지표를 크게 움직이지 않습니다.
- 하나의 특징이 지배적입니다. Elo 차이는 압도적으로 가장 중요한 예측 변수였고, 다음 특징보다 약 100배가량 더 영향력이 컸습니다. 이는 놀랍다기보다 안심이 되는 결과입니다. 한 경기에서는 두 팀의 전력 격차가 이야기의 대부분이기 때문입니다.
- 딥러닝은 최하위(기준선 제외)였습니다. 1D CNN과 LSTM은 순진한 기준선을 제외하면 가장 약했습니다. 학습할 경기가 약 7,000개 수준에 불과해 매개변수가 많은 네트워크에 먹일 데이터가 충분치 않습니다. 고전적 방법이 작고 구조화된 데이터셋에서는 훨씬 잘 버팁니다.
- 고전적 모델들에서 과적합 징후 없음. 보통 모델은 보지 못한 데이터에서 약간 성능이 떨어집니다. 여기서는 거의 모든 모델(LSTM 제외)이 교차 검증보다 홀드아웃 대회에서 더 좋은 점수를 냈습니다. 그 이유는 토너먼트 축구가 일상적인 A매치 캘린더보다 더 예측 가능하기 때문일 가능성이 큽니다. 더 높은 중요도, 더 강하고 익숙한 팀, 중립 경기장이 우연성을 일부 제거합니다.
실시간 대회 운영에서는 열 개 전부를 돌리지 않습니다. 더 작은 로스터를 유지합니다. 기준선인 평균률 모델을 기준점으로 두고, 상위 세 모델을 함께 돌립니다. XGBoost와 베이지안 포아송이 명확한 상위 두 자리를 차지합니다.
3위는 사실상 동률입니다. 음이항과 이변량 포아송은 RPS 0.0002 차이 내에서 시드에 따라 순서를 바꾸기 때문에, 통계적으로 구별 불가능한 두 모델 중 축구 예측 문헌에서 더 탄탄한 정식을 가진 이변량 포아송을 선택했습니다(Karlis and Ntzoufras, 2004).
결국 로스터는 XGBoost(머신러닝), 이변량 포아송(고전 통계), 베이지안 포아송(베이지안 추론)으로 구성됩니다. 다음 섹션에서는 이 모델들이 어떻게 실행되고 재학습되며, 단일 경기 예측을 전체 대회 전망으로 바꾸는지 다룹니다.
프로덕션에 올리기
노트북 속 모델은 당신이 앞에 앉아 있는 동안에만 유용합니다. 한 달 동안 이어지는 대회에서 경기를 예측하려면, 전체가 스스로 돌아가야 합니다. 새 결과 수집, 재학습, 재시뮬레이션, 예측 갱신까지 사람이 손대지 않아야 합니다. 그 역할을 파이프라인이 맡습니다.
GCP의 2시간 간격 파이프라인
프로젝트 전체가 Google Cloud Run에서 예약 작업 하나로 동작합니다. 대회 전에는 하루에 한 번 깨우고, 6월 11일 개막 이후에는 두 시간마다 실행합니다. 각 실행은 같은 사이클을 따릅니다.
- 새 데이터 확인. 지난 실행 이후 종료된 경기가 없다면 할 일이 없으므로 조기 종료합니다.
- 수집 및 재구축. 새 결과가 들어오면 데이터 소스에서 가져와
dvc repro한 번으로 실버와 골드를 재생성해 특징을 최신 상태로 만듭니다. - 재학습, 예측, 시뮬레이션. 로스터 모델을 최신화하고(자세한 내용은 곧 설명), 예정된 모든 대진을 예측한 뒤 대회 전체를 시뮬레이션합니다.
- 스코어링. 경기가 종료되면 해당 경기의 사전 예측을 채점해, 아래 모니터링으로 전달합니다.
모든 단계가 일정에 따라 코드로 트리거되므로, 대회 중 수동 버튼 클릭은 없습니다. 새 결과가 들어오면, 새 예측이 나옵니다.
두 가지 모드: 고정 vs. 라운드별
이 프로젝트는 동시에 실험의 성격도 띱니다. 대회 기간 로스터는 두 가지 모드로 병행 실행되며, 둘의 차이는 데이터로 답을 얻고자 하는 질문과 같습니다. 대회가 진행되며 재학습하면 예측이 더 좋아질까요?
- 고정. 대회가 시작되는 순간 모델을 고정해 재학습하지 않습니다. 시뮬레이션은 업데이트된 대진에서 출발하므로 결과에는 반응하지만, 모델 파라미터 자체는 변하지 않습니다.
- 라운드별. 하이퍼파라미터(상위 설정)는 고정하되, 모델이 학습하는 파라미터는 각 조별리그 매치데이와 각 토너먼트 라운드가 끝날 때마다 사용 가능한 모든 데이터로 재적합합니다. 대회가 진행되며 계속 배우게 됩니다.
두 모드를 나란히 돌리면, 대회가 끝난 뒤 두 가지 관점에서 비교할 수 있습니다. 순수 예측 정확도, 그리고 참가 팀이 줄어들면서 불확실성이 얼마나 빨리 줄어드는가입니다. 라운드별이 이기면 주기적 재학습은 충분한 가치를 증명하고, 고정이 선전한다면 추가 장치가 필요 없을 수도 있습니다.
예측에서 대회로: 몬테카를로 시뮬레이션
단일 경기 예측은 시작점에 불과합니다. 이를 "각 팀의 우승 확률"로 바꾸는 것이 몬테카를로 시뮬레이션의 역할입니다.
먼저 추론입니다. 이미 확정된 대진만 예측하는 대신, 48개 팀의 가능한 모든 맞대결을 예측합니다. 과해 보이지만, 토너먼트에서는 어느 팀이든 토너먼트에서 누구와도 만날 수 있으므로, 모든 조합에 대한 예측을 준비해야 합니다.
다음은 규칙 인코딩입니다. 2026 포맷은 특히 까다롭습니다. 12개 조에서 상위 두 팀은 자동 진출이지만, 3위 중 성적이 좋은 8개 팀도 진출하며, 이들의 32강 슬롯은 어느 조에서 왔는지에 따라 달라집니다.
12개 중 8개 조를 고르는 경우의 수는 495가지(12C8)이며, 각 경우가 서로 다른 32강 대진을 만듭니다. 깔끔한 공식이 있는 게 아니라, FIFA가 표를 공개합니다. 그래서 저(정확히는 매우 유능한 동료 Cursor)가 공식 표를 바탕으로 495개 조합을 전부 매핑으로 하드코딩했습니다.
"best_third_mappings": {
"EFGHIJKL": {
"74": "3F",
"77": "3G",
"79": "3E",
"80": "3K",
"81": "3I",
"82": "3H",
"85": "3J",
"87": "3L"
},
"DFGHIJKL": ...
EFGHIJKL 같은 키는 3위로 진출한 8개 조를 나열하며, 값은 각 팀(3E, 3F 등)을 특정 32강 경기 번호에 배치합니다. 이는 한 항목일 뿐이고, 전체 매핑은 495개 조합만큼 반복됩니다.
개최국 세 나라(미국, 캐나다, 멕시코)는 한 가지 처리를 추가합니다. 개최국이 자국에서 열리는 경기를 치르면, 해당 경기에는 홈 어드밴티지 보정을 적용하고, 나머지는 중립 경기로 간주합니다.
예측과 규칙이 준비되면, 시뮬레이션은 대회 전체를 10,000번 실행합니다. 각 실행에서는 다음 절차를 따릅니다.
- 모델이 예측한 분포에서 홈·원정 득점을 샘플링해 모든 경기의 스코어라인을 추출
- 실제 승점 및 타이브레이크 규칙에 따라 조별리그 진행
- 베스트 3위(최고 3위) 표 계산
- 위 매핑으로 토너먼트 대진 채우기
- 결승까지 진행해 최종 우승팀 결정
10,000번의 시뮬레이션에서 어떤 팀이 결승에 오르거나 우승하는 비율이 그 팀의 확률이 됩니다. 한 번의 실행은 추정치에 불과하지만, 만 번의 실행은 전망이 됩니다.
MLflow로 전 과정을 추적
지금까지 설명한 모든 실행(두 모드 모두)은 MLflow(DagsHub에 호스팅)에 기록됩니다. 실험 추적은 각 실행의 입력, 설정, 결과, 산출물을 체계적으로 기록해 상호 비교하거나 정확히 재현할 수 있게 합니다. 그중 몇 가지는 특히 중요합니다.
- 재현성. 시뮬레이션은 토너먼트 라운드에서 파생한 고정 랜덤 시드를 사용하고, 고정/라운드별 모드가 같은 시드를 공유합니다. 따라서 두 모드 간 차이는 시뮬레이션 내부 난수의 운이 아니라 모델 자체에서 비롯됩니다. 또한 각 실행은 본 데이터 스냅샷(골드 행 수와 타임스탬프)을 기록해, 결과를 언제든 입력으로 소급할 수 있습니다.
- 실험 태그. 각 실행에는 모드(고정/라운드별)와 라이프사이클 단계(실험, QA, 라이브 추론, 재적합)가 태그로 붙습니다. 앞선 섹션의 승격 흐름을 반영합니다.
- 비교. 선택 지표인 홀드아웃 RPS를 기록하고, 계보 추적을 위해 현재 챔피언 실행에 대한 참조를 남깁니다. 적합 시간도 기록해, 베이지안 모델의 약 100배 느린 학습이 명확히 드러납니다.
학습된 모델과 예측 파일(대회 확률, 조별 순위, 경기 예측)은 실행 산출물로 저장되며, 라이브 대시보드는 바로 이 파일을 읽습니다. 이렇게 루프가 닫힙니다. 원시 결과에서 학습과 시뮬레이션을 거쳐, 온라인에서 볼 수 있는 숫자로 이어집니다.
드리프트 모니터링
마지막 구성 요소는 경기가 끝난 뒤 작동합니다. 실제 결과가 들어오면 해당 경기에 대한 사전 예측을 채점하고, 단순 평균률 기준선과 비교합니다. 팀에 대한 아무 정보도 모르는 모델보다 풀 모델의 성능이 뒤처지기 시작하면, 이는 드리프트 경고 신호입니다. 대회 전 학습한 패턴이 이제 경기장에서 벌어지는 일과 맞지 않을 수 있습니다.
이런 모니터링은 실시간 예측을 수행하는 어떤 시스템에서도 표준 관행입니다. 감지 방식은 데이터 드리프트와 모델 드리프트 가이드에서 자세히 읽을 수 있습니다.
그렇다면, 누가 월드컵을 우승하나?
이 모든 장치의 목적은 바로 이것입니다.
우승 후보
개막 전날인 2026년 6월 10일 기준으로, 모델의 최상단 평가는 뚜렷하고 그 뒤는 혼전입니다. 스페인과 아르헨티나는 각각 약 16%의 확률로 트로피를 들어 올릴 것으로 예측됩니다. 현 월드챔피언(아르헨티나)과 현 유럽챔피언(스페인)이 정상에 오른다는 결과는 모델이 현실에 발 딛고 있음을 보여주는 안도감 있는 체크입니다.
그 뒤로 프랑스, 잉글랜드, 브라질, 콜롬비아가 촘촘한 추격 그룹을 이룹니다. 이 수치는 실시간으로 변하며 실제 결과가 나오는 즉시 움직입니다. 고로 이는 6월 10일의 스냅샷이지 최종 예언이 아닙니다. 대시보드는 최대 2시간 지연으로 최신 수치를 보여줍니다.
라이브 대시보드
참고로, 이 글의 모든 수치는 파이프라인과 함께 자동 갱신되는 라이브 Streamlit 앱에서 가져왔습니다. wc2026-predictions.streamlit.app에서 열어 대회 내내 따라가 보세요. 주요 네 가지 뷰가 있습니다.
- 대회 개요: 각 팀이 어느 단계까지 갈지 한눈에 보여줍니다.
- 조별 순위: 각 조에서 팀별 1·2·3·4위 확률(3위는 베스트 3위 통과/탈락으로 구분)을 제공합니다.
- 경기 예측: 각 조별 경기의 홈 승·무·원정 승 확률과 가장 가능성 높은 토너먼트 대진을 제시합니다.
- 가장 흔한 토너먼트 대진: 시뮬레이션에서 가장 자주 생성되는 맞대결 쌍을 보여줍니다.
매치 뷰의 한 가지 특징을 짚자면, 몇몇 팀이 동시에 두 개의 32강 슬롯에 나타나는 경우가 있습니다. 버그가 아닙니다. 조가 워낙 팽팽해 모델이 그 팀의 정확한 진출 순위를 자신 있게 가르지 못할 때 발생합니다. 베스트 3위의 불확실성과 맞물리면 두 결과가 서로 다른 토너먼트 슬롯으로 이어집니다. 터키의 경우에는 16강에 두 번 나타나기도 했습니다.
아래 그래픽은 대회 개막 전에 XGBoost 모델이 투영한 최종 라운드(8강부터 결승까지)를 보여줍니다.

동전 던지기 팀: 미국
이런 모델의 재미는 눈대중과 어긋나는 팀에서 나옵니다. 가장 분명한 사례는 미국입니다. 대시보드의 대회 개요를 보면, 미국이 색으로 눈에 띄게 나타납니다.
공동 개최국으로 홈 관중 앞에서 경기를 치르므로 순조로운 출발을 기대할 수 있지만, 모델은 훨씬 신중합니다. 호주, 파라과이, 터키와 한 조로 매우 균형 잡힌 조라는 이유로, 조별리그 통과 확률을 약 54.6%로만 부여합니다. 전체 48개 팀 중 13번째로 낮은 수치입니다(팀의 3분의 2가 통과한다는 점을 기억하세요!).
흥미로운 건 그다음입니다. 간신히 조를 통과했다고 가정하면, 미국은 이후 각 라운드에서 대략 동전 던지기 수준을 맴돕니다. 그 동전 던지기들을 차곡차곡 쌓으면, 전체 우승 확률이 약 2%로 수렴하며, 이는 48개 팀 중 13번째로 높은 수치입니다.
조별리그 통과 가능성은 하위 13위권이면서, 우승 가능성은 상위 13위권인 팀이라면, 영락없는 동전 던지기 팀의 정의에 가깝습니다. 항상 압도적 강자는 아니지만, 결코 탈락권도 아닙니다.
맺음말
이 프로젝트는 많은 작업이 필요했고, 한 편의 글에 담기엔 범위가 넓습니다. 저장소에는 여기 다 싣지 못한 내용이 많습니다. 전체 후보 모델 세트, 특징 엔지니어링, 운영을 유지하는 오케스트레이션 등이 그 예입니다.
지금으로서는 모델이 선택을 마쳤고, 대회가 심판이 될 것입니다. MLOps 때문에 오셨든 축구 때문에 오셨든, 저만큼이나 흥미진진하게 지켜보시길 바랍니다. 경기가 진행되며 실시간 예측을 따라가고 예측의 견고함을 확인해 보세요.
언급한 개념을 더 자세히 보고 싶다면, 저희의 MLOps Concepts 과정을 추천합니다.