Course
Прогнозировать футбол сложно. Это малорезультативный вид спорта, где один рикошетный удар может перевернуть исход, а немалая часть любого матча зависит от удачи. Международный футбол ещё труднее: сборные играют всего несколько официальных матчей в год, поэтому данных для обучения намного меньше, чем в клубных лигах.
И как будто этого было мало, FIFA усложнила задачу на этот чемпионат мира. Расширенный до 48 команд турнир получил новый формат: из 12 групп выходят по две лучшие команды, а также восемь из двенадцати лучших, занявших третье место, — из-за чего судьбы в групповом раунде становятся непредсказуемыми. Поскольку я люблю хорошие вызовы (и футбол), именно это я и решил предсказать.
Это продолжение моего проекта прогнозирования на ЕВРО‑2024, фактически созданное заново. В прошлый раз я работал исключительно в блокнотах Jupyter и предсказывал единственный наиболее вероятный счёт для каждого матча. На этот раз я построил сквозной конвейер MLOps, который забирает свежие результаты, переобучается сам и запускает имитационное моделирование Монте‑Карло всего турнира 10 000 раз, превращая поматчевые прогнозы в вероятности прохода для каждой команды.
В этой статье я кратко проведу вас по проекту: данные и признаки, MLOps‑практики, обеспечивающие воспроизводимость, архитектура конвейера и модель, которая лучше всего предсказывает футбол на уровне сборных. Полный код доступен в репозитории проекта. И, конечно, я скажу, кого модель считает победителем. (Спойлер: ей нравятся Испания и Аргентина — примерно по 16% каждая, но интересно то, как она к этому приходит.)
Если у вас появилось настроение к турниру, рекомендую посмотреть записи наших сессий Data & AI World Cup или принять участие в нашем конкурсе FIFA World Cup 2026 Prediction. Победитель получит не только официальную игровую футболку ЧМ, но и 3‑месячную подписку на Claude Enterprise. Следите за живым лидбордом.
Прогноз ЧМ по футболу 2026
Коротко
- Это сквозной конвейер MLOps для прогнозирования ЧМ‑2026: он подтягивает свежие международные результаты и автоматически переобучается в Google Cloud, каждые два часа во время турнира.
- Данные из API-Football и рейтингов Elo проходят через медальонную архитектуру Bronze–Silver–Gold и версионируются в DVC для полной воспроизводимости.
- Десять моделей из пяти семейств сравнивались на отложенной выборке из 347 матчей; XGBoost выиграл с небольшим отрывом, первая пятёрка почти неотличима, а разница Elo между командами даёт основную долю предсказательной силы.
- Имитационное моделирование Монте‑Карло «сыграет» весь турнир 10 000 раз, превращая поматчевые прогнозы голов в шансы каждой команды на проход и победу.
- По состоянию на 10 июня 2026 года фаворитами модели являются Испания и Аргентина — примерно по 16% каждая. За живыми прогнозами можно следить на сопутствующей панели Streamlit, которая обновляется раз в два часа.
Данные за прогнозами
Качество прогноза определяется качеством входящих данных, поэтому начнём с исходников. Модель учится на двух живых источниках данных и превращает их в единую аккуратную таблицу признаков.
Откуда берутся данные
Всё строится на двух источниках. API-Football поставляет календарь и поматчевую статистику: кто с кем играл, когда, где и как всё закончилось. eloratings.net предоставляет рейтинги Elo для каждой национальной сборной.
Рейтинг Elo — это одно число, характеризующее силу команды. Каждая команда занимает место на шкале, и после каждого матча рейтинг обновляется: победите более сильного соперника — получите много очков; проиграйте более слабому — сильно потеряете. Идея пришла из шахмат и хорошо адаптируется к футболу. Если нужна полная интуиция, вот предыдущий материал DataCamp с разбором на примере ЧМ‑2022.
Вместе эти два источника дают Gold‑датасет примерно из 6900 международных матчей с 2018 года для обучения.
Что предсказывает модель
Первый важный конструкторский выбор: вместо прямого исхода — победа, ничья или поражение — модель предсказывает более детальную величину: количество голов, забитых каждой командой в матче. Число голов в футболе с хорошей точностью следует распределению Пуассона — стандартной модели для редких событий в фиксированном окне времени.
Именно прогноз голов, а не исхода, делает возможным всё остальное. Как только модель может выдать правдоподобный счёт для любой пары соперников, на вопросы, которые действительно интересуют всех — кто выйдет из группы и кто поднимет трофей — можно ответить, многократно моделируя эти счёты.
Важные признаки
Каждый матч описывается небольшим, тщательно отобранным набором признаков:
- Разница Elo: разрыв в рейтингах между командами. Это с большим отрывом самый важный признак в модели, по важности примерно на два порядка выше следующего. Это соответствует интуиции: разница в силе соперников говорит о вероятном исходе больше, чем почти что-либо ещё.
- Сумма Elo: сумма рейтингов, суррогат общего уровня матча. Одна лишь разница не различит Аргентину против Испании и Сан‑Марино против Андорры — два равных по силам матча на совершенно разных уровнях; сумма возвращает эту информацию.
- Скользящее изменение Elo (последние 5 матчей): насколько недавно изменился рейтинг каждой команды. Это отражает форму с учётом силы соперников.
- Скользящие голы за и против (последние 5 матчей): недавняя результативность в атаке и обороне в абсолютных величинах, по каждой команде.
- Контекст матча: уровень турнира (матч ЧМ отличается по весу от квалификации или Лиги наций), нокаутный ли это матч и нейтральная ли площадка.
Все признаки строго безопасны с точки зрения утечки — каждый использует только ту информацию, что была доступна до стартового свистка. Звучит очевидно, но это один из самых простых способов случайно построить модель, блестящую в тестах и разваливающуюся в реальности.
Идея, которая не вошла: я планировал признаки «стиля игры», построенные кластеризацией команд по матчевой статистике — шаг обучения без учителя. На практике команды не разделились на осмысленные группы, поэтому, чтобы не кормить модель шумом, я отказался. Негативные результаты — тоже результаты.
Как обеспечить воспроизводимость данных
Поскольку данные из двух источников приходят непрерывно, путь от сырых файлов до признаков, готовых для модели, должен быть идентичен каждый раз. Это обеспечивает медальонная архитектура. Она организует данные в три слоя:
- Bronze: сырые данные, в точности как пришли, без изменений.
- Silver: очищенные и стандартизированные. Здесь я сопоставляю названия команд между источниками (они редко совпадают по написанию), валидирую схему, присоединяю рейтинги Elo к записям матчей и обрабатываю пропуски и некорректные значения.
- Gold: слой моделирования — по одной аккуратной строке на матч со всеми рассчитанными признаками, готовыми к обучению.
Каждый слой питает следующий, поэтому, если что‑то выглядит странно, я могу отследить источник поэтапно, а не распутывать всё сразу. Чтобы сделать весь путь воспроизводимым, я использую DVC (Data Version Control). Когда приходят свежие результаты, одна команда dvc repro пересобирает Silver и Gold из Bronze, повторно выполняя шаг только при изменении входов, и версионирует итоговые датасеты, чтобы любую предыдущую версию можно было точно восстановить.
Выбор лучшей модели
Прогнозирование голов — хорошо изученная задача, и единственно очевидного инструмента нет. Поэтому вместо того, чтобы заранее выбрать один подход, я построил десять и дал им посоревноваться.
Претенденты
Десять моделей охватывают пять семейств плюс простой базовый ориентир. Не нужно знать устройство каждой; важно, что они по‑разному моделируют появление голов.
| Семейство | Модели | Суть подхода |
|---|---|---|
| Базовый | Пуассон с усреднённой скоростью | Предполагает, что каждая команда забивает своё долгосрочное среднее, игнорируя признаки. Планка, которую остальные должны превзойти. |
| Статистический | Двумерный Пуассон, отрицательное биномиальное распределение | Непосредственно моделируют оба счётчика голов с помощью распределений для счёта событий. |
| Байесовский | Байесовский Пуассон (MCMC) | Та же идея счёта событий, но возвращает полный диапазон неопределённости вокруг каждой оценки. Гораздо требовательнее вычислительно: примерно в 100 раз медленнее при обучении. |
| Временные ряды | SARIMAX | Рассматривает результаты команды как последовательность во времени и экстраполирует её вперёд. |
| Машинное обучение | Ridge, Random Forest, XGBoost | Извлекают закономерности напрямую из признаков без жёстко заданного уравнения. |
| Глубокое обучение | LSTM, 1D CNN | Нейросети, ищущие последовательные и локальные паттерны в данных. |
Как их оценивали
При десяти кандидатах выбирать «на глаз» бессмысленно. Вместо этого каждая модель проходит три стадии, и код решает, переходит ли она дальше. Это и есть code-based deployment: модели продвигаются из одной среды в следующую автоматическими проверками, а не ручной настройкой, что сохраняет воспроизводимость и облегчает аудит.
- Эксперимент. Каждая модель обучается только на международных матчах до ЧМ‑2022. Не все матчи равновесомы: более свежим играм и более значимым турнирам придаётся больший вес (временной спад и вес по важности матча), так что недавний официальный результат влияет на модель сильнее старого товарищеского. Гиперпараметры каждой модели затем настраиваются на минимизацию отрицательного логарифма правдоподобия Пуассона (NLL) с помощью кросс‑валидации. NLL — это просто метрика соответствия прогнозируемых скоростей голов фактически забитым голам: чем ниже, тем лучше. Результат — лучшая версия каждой модели.
- Контроль качества. Эти настроенные модели тестируются на невиданных ими матчах: ЧМ‑2022 плюс шесть крупных турниров после него (ЕВРО, два Кубка Африки, Копа Америка, Кубок Азии и Золотой кубок), всего 347 матчей. Здесь метрика — ранжированный вероятностный скор (RPS), который измеряет качество вероятностного прогноза при естественном порядке исходов (поражение, ничья, победа) и вознаграждает уверенность в верном направлении. Снова: ниже — лучше. Сильнейшая модель становится претендентом. RPS — правильная мера, поскольку реальная цель — предсказать, как далеко пройдут команды, а не просто суммы голов.
- Внедрение. Претендент сравнивается с действующим чемпионом. Если выигрывает, его повышают и дообучают на всех доступных матчах, чтобы он вошёл в турнир с максимумом данных.
Кто победил
Итак, какой подход оказался лучшим? Вот полный лидерборд на отложенной выборке по RPS (ниже — лучше):
| Модель | Holdout RPS |
|---|---|
| XGBoost | 0.18289 |
| Байесовский Пуассон | 0.18316 |
| Отрицательное биномиальное | 0.18373 |
| Двумерный Пуассон | 0.18389 |
| Random Forest | 0.18392 |
| SARIMAX | 0.18583 |
| Ridge | 0.18813 |
| LSTM | 0.19299 |
| 1D CNN | 0.20916 |
| Пуассон со средней скоростью (база) | 0.22872 |
Из результатов бросаются в глаза четыре момента:
- XGBoost победил, но едва. Лучшие пять моделей (XGBoost, байесовский Пуассон, отрицательное биномиальное, двумерный Пуассон и Random Forest) уложились в ~0,0011 RPS друг от друга. Когда пять очень разных методов сходятся так близко, потолок обычно задают данные и признаки, а не модель. Здесь разница Elo делает почти всю работу, так что выбор модели мало влияет.
- Один признак доминирует. Разница Elo — самый значимый предиктор с огромным отрывом, примерно в сто раз влиятельнее следующего признака. Это скорее успокаивает, чем удивляет: в отдельно взятом матче разница силы действительно объясняет почти всё.
- Глубокое обучение — на последних местах, не считая базы. 1D CNN и LSTM оказались слабейшими, помимо наивного базового. При ~7 000 матчей просто недостаточно данных, чтобы кормить сети с множеством параметров; классические методы лучше справляются с маленькими структурированными наборами.
- Признаков переобучения у классики нет. Обычно на невиданных данных модель работает чуть хуже, чем на обучении. Здесь почти каждая модель (кроме LSTM) показала результат лучше на отложенных турнирах, чем в кросс‑валидации. Вероятная причина — турнирный футбол предсказуемее обычного календаря: высокие ставки, сильные и знакомые команды, нейтральные поля — всё это убирает часть случайности.
Вживую я не запускаю все десять. Держу более короткий состав: базовый средний ориентир для сравнения плюс три лучших. XGBoost и байесовский Пуассон занимают два первых места однозначно.
Третье место — фактически ничья: отрицательное биномиальное и двумерный Пуассон идут в пределах 0,0002 RPS и меняются местами в зависимости от случайного зерна, поэтому между статистически неразличимыми моделями я выбрал двумерный Пуассон — его постановка сильнее укоренилась в литературе по прогнозированию футбола (Karlis и Ntzoufras, 2004).
В итоге в составе остаются XGBoost (машинное обучение), двумерный Пуассон (классическая статистика) и байесовский Пуассон (байесовский вывод). Далее — как эти модели запускаются, переобучаются и превращают поматчевые прогнозы в прогноз всего турнира.
Вывод в прод
Модель, живущая в блокноте, полезна лишь пока вы перед ней сидите. Чтобы предсказывать матчи на протяжении месячного турнира, всё должно работать само: подтягивать новые результаты, переобучаться, пересимулировать и обновлять прогноз без вмешательства. Это задача конвейера.
Двухчасовой конвейер в GCP
Весь проект работает как одна запланированная задача на Google Cloud Run. До турнира — раз в день; с матча открытия 11 июня — каждые два часа. Каждый запуск проходит один и тот же цикл:
- Проверка новых данных. Если с прошлого запуска не завершился ни один матч, делать нечего — задача завершается раньше.
- Загрузка и пересборка. Когда пришли новые результаты, они забираются из источников, и одна команда
dvc reproпересобирает слои Silver и Gold, чтобы признаки были актуальны. - Переобучение, прогноз, симуляция. Модели из состава обновляются (подробности ниже), прогнозируются все предстоящие пары, проводится полная симуляция турнира.
- Оценка. Как только матч завершён, сделанные по нему прогнозы оцениваются — это питает мониторинг ниже.
Поскольку каждый шаг запускается по расписанию кодом, никакого ручного «нажимания кнопок» во время турнира нет. На вход — новый результат, на выход — обновлённый прогноз.
Два режима: фиксированный и по раундам
Здесь проект ещё и эксперимент. Во время турнира состав моделей работает в двух параллельных режимах, и отличие между ними — вопрос, на который я хочу получить ответ из данных: улучшает ли переобучение по ходу турнира качество прогнозов?
- Фиксированный. Модели замораживаются в момент старта турнира и больше не переобучаются. Они всё равно реагируют на результаты, потому что каждая симуляция стартует с обновлённой сетки, но параметры моделей не меняются.
- По раундам. Гиперпараметры (высокоуровневые настройки) остаются неизменны, но обучаемые параметры переоцениваются на всех доступных данных после каждого тура группового этапа и каждого раунда плей‑офф — модели продолжают учиться по мере развития турнира.
Параллельный запуск позволяет по завершении сравнить их по двум фронтам: по точности и по скорости сходимости неопределённости по мере сужения поля. Если выигрывает режим «по раундам», регулярное переобучение себя оправдывает; если «фиксированный» не уступает, лишняя сложность может быть не нужна.
От прогнозов к турниру: симуляция Монте‑Карло
Предсказать один матч — это одно. Превратить это в «каковы шансы каждой команды выиграть турнир» — здесь и нужна симуляция Монте‑Карло.
Сначала — вывод. Вместо прогнозов только по известным уже матчам модель предсказывает все возможные пары между 48 командами. Звучит избыточно, но в турнире любая команда может встретиться с любой в плей‑офф, значит, прогноз должен быть готов для каждой пары.
Затем нужно закодировать правила — а формат 2026 особенно неудобен. В 12 группах по две команды проходят автоматически, но также проходят восемь лучших, занявших третье место, и то, в какие слоты плей‑офф они попадут, зависит от того, из каких групп они пришли.
Есть 495 способов выбрать восемь групп из двенадцати (12 по 8), и каждый даёт свой набор пар в 1/16 финала. Чистой формулы нет — 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, перечисляет, какие восемь групп дали вышедших третьих, а значения размещают каждую из этих команд (3E, 3F и т. д.) в конкретный матч 1/16. Это одна запись; полное отображение повторяет её 495 раз — по одной на комбинацию.
Три хозяйки турнира (США, Канада и Мексика) требуют дополнительной обработки. Когда хозяин играет матч в своей стране, симуляция применяет поправку на фактор своего поля для этой встречи, а остальная часть турнира считается нейтральной.
Имея прогнозы и правила, симуляция проигрывает турнир 10 000 раз. В каждом прогоне выполняется процедура:
- Сэмплировать счёт каждого матча, выбирая голы хозяев и гостей из предсказанных моделью распределений
- Сыграть групповой этап по реальным правилам начисления очков и тай‑брейков
- Определить таблицу лучших третьих
- Заполнить сетку плей‑офф на основе отображений выше
- Доиграть до единственного чемпиона.
По 10 000 симуляций доля прогонов, в которых команда доходит до финала или берёт трофей, становится её вероятностью. Один прогон — предположение; десять тысяч — прогноз.
Трекинг всего в MLflow
Каждый описанный запуск, в обоих режимах, логируется в MLflow (на DagsHub). Трекинг экспериментов — это систематическая запись входов, настроек, результатов и выходов каждого запуска, чтобы любой можно было сравнить или точно воспроизвести. Несколько моментов достойны внимания:
- Воспроизводимость. Симуляция использует фиксированное случайное зерно, зависящее от раунда, и одно и то же зерно применяется в режимах «фиксированный» и «по раундам». Значит, разница между ними идёт от моделей, а не от удачи в симуляции. Каждый запуск также логирует точный снимок данных (число строк Gold и метку времени), чтобы всегда можно было отследить результаты до входов.
- Эксперимент. Каждый запуск помечается режимом (фиксированный или по раундам) и стадией жизненного цикла — от экспериментального и QA до боевого инференса и дообучения — в зеркале потока промоушена из предыдущего раздела.
- Сравнение. В качестве метрики отбора логируется holdout RPS, вместе со ссылкой на текущий «чемпионский» запуск для родословной. Также записывается время обучения — здесь отчётливо видно, что байесовская модель обучается примерно в 100 раз дольше.
Обученные модели и сами файлы прогнозов (турнирные вероятности, таблицы групп и поматчевые предсказания) сохраняются как артефакты запусков — именно их читает живая панель. Кольцо замкнуто: от сырых результатов через обучение и симуляцию к цифрам, которые вы видите онлайн.
Мониторинг дрейфа
Последний компонент запускается после завершения матчей. По мере поступления реальных результатов поматчевые прогнозы оцениваются и сравниваются с простым базовым средним ориентиром. Если полные модели начинают уступать модели, ничего не знающей о командах, это сигнал о дрейфе: закономерности, выученные до турнира, больше не соответствуют происходящему на поле.
Следить за этим — стандартная практика для любой системы с живыми прогнозами. Подробнее о детекции — в этом руководстве по дрейфу данных и моделей.
Итак, кто выиграет чемпионат мира?
После всей этой машинерии — вот ради чего всё.
Фавориты
На 10 июня 2026 года, за день до старта, вердикт модели на вершине ясен, а сразу за ней — плотная группа преследователей. Испания и Аргентина лидируют, примерно по 16% шансов поднять трофей. То, что действующие чемпионы мира (Аргентина) и действующие чемпионы Европы (Испания) оказываются на вершине, — отрезвляющая проверка здравым смыслом: модель приземлена в реальность.
Позади — плотная погоня: Франция, Англия, Бразилия и Колумбия замыкают круг самых вероятных победителей. Эти цифры живые и начнут меняться с первыми результатами, так что относитесь к ним как к снимку на 10 июня, а не к пророчеству. Панель всегда показывает актуальные числа с максимум двухчасовой задержкой.
Живая панель
К слову: все числа в статье берутся из живого приложения Streamlit, которое обновляется автоматически вместе с конвейером. Открывайте wc2026-predictions.streamlit.app и следите за турниром. В нём четыре основных вида:
- Обзор турнира: наглядно, как далеко ожидается проход каждой команды.
- Таблицы групп: для каждой группы — вероятность занять первое, второе, третье (с разделением на «третье и прошла» против «третье и вылетела» — благодаря правилу лучших третьих) или четвёртое место.
- Прогнозы матчей: для каждой игры группы — шанс победы хозяев, ничьи или победы гостей, плюс наиболее вероятная сетка плей‑офф.
- Самые частые пары плей‑офф: сочетания, которые симуляция даёт чаще всего.
Одна оговорка в виде матчей: у пары команд одновременно отображаются два возможных слота в 1/16. Это не баг. Так бывает, когда группа настолько ровная, что модель не может уверенно определить, какое квалификационное место займёт команда. В сочетании с неопределённостью по лучшим третьим это ведёт к разным слотам плей‑офф. В случае с Турцией это даже привело к тому, что они «оказались» дважды в 1/8.
Ниже — визуализация финальных раундов (с четвертьфиналов до финала), которые модель XGBoost проецирует перед стартом турнира:

Команда‑«подброс монеты»: США
Самое интересное в такой модели — команды, которые расходятся с «тестом на глаз», и самый яркий пример — США. В обзоре турнира на панели вы сразу заметите, что США выделяются цветом.
Как соорганизаторы, играя дома, они могли бы ожидать комфортного старта, но модель куда осторожнее: всего около 54,6% шансов выйти из группы — это 13‑й с конца показатель в целом поле (помните, что из групп выходит целых две трети!), потому что их группа с Австралией, Парагваем и Турцией необычно ровная.
Интересно дальше. Пройдя на тоненького, США затем балансируют примерно на уровне «орёл‑решка» в каждом следующем раунде. Накопив эти подбрасывания, они получают около 2% шансов выиграть весь турнир — 13‑й показатель сверху из 48 команд.
Команда, которая идёт 13‑й снизу по шансам выйти из группы и 13‑й сверху по шансам выиграть турнир, — почти идеальное определение «команды‑подброса монеты»: никогда не фаворит, но и никогда не выбывает из борьбы.
Итоги
Проект потребовал много работы и охватывает гораздо больше, чем вмещает одна статья. В репозитории есть многое, что не попало сюда: полный набор кандидатных моделей, инженерия признаков и оркестрация, которая всё это держит в работе.
А пока модель сделала свой выбор, и судить будет турнир. Независимо от того, пришли ли вы ради MLOps или ради футбола, надеюсь, вы будете наблюдать за его развитием с таким же интересом, как и я. Следите за живым прогнозом по мере поступления результатов и смотрите, насколько хорошо держатся предсказания.
Если хотите глубже взглянуть на некоторые упомянутые концепции, рекомендую наш курс MLOps Concepts.
ЧАВО: Прогноз победителя ЧМ‑2026 по футболу
Кто выиграет ЧМ по футболу 2026?
По состоянию на 10 июня 2026 года, прямо перед стартом турнира, модель делает совместными фаворитами Испанию и Аргентину — примерно по 16% шансов на победу, далее идут Франция, Англия, Бразилия и Колумбия. Явного единоличного фаворита нет, что отражает открытость турнира. Это живые цифры, они меняются по мере поступления результатов, поэтому панель всегда показывает актуальные значения.
Насколько точно машина может предсказывать футбол?
Международный футбол трудно предсказывать: он малорезультативен, а команды играют мало официальных матчей, поэтому даже сильная модель оставляет большую долю случайности. В этом проекте топ‑5 моделей уложились в ~0,001 RPS друг от друга, что говорит о том, что потолок точности задаётся в основном доступными данными и признаками, а не алгоритмом. Крупнейшим драйвером прогнозов была разница рейтингов Elo между командами.
Почему предсказывать количество голов, а не исход матча?
Прогнозирование числа голов для каждой команды, а не прямого исхода (победа/ничья/поражение), даёт полное распределение вероятностей по счётам. Это и позволяет смоделировать весь турнир: имея возможность сэмплировать правдоподобные счёты, можно «сыграть» групповой этап и сетку плей‑офф тысячи раз и получить шансы каждой команды на проход и победу.
Числа голов также неплохо подчиняются распределению Пуассона, что подходит для такого стиля моделирования.
Что такое симуляция Монте‑Карло и зачем 10 000 прогонов?
Симуляция Монте‑Карло многократно проигрывает случайный процесс, чтобы оценить вероятности, которые трудно посчитать напрямую. Здесь каждый прогон выбирает счёт для каждого матча из предсказаний модели и доигрывает турнир до победителя; 10 000 таких прогонов превращают поматчевые прогнозы в стабильные проценты вроде «Испания побеждает ~16% раз». Одна симуляция — лишь один возможный исход, но их десять тысяч приближают реальное распределение исходов.
Какие инструменты нужны, чтобы построить такой MLOps‑конвейер?
Ключевые части — версионирование данных (в этом проекте DVC), трекинг экспериментов (MLflow), способ запускать задания по расписанию (Google Cloud Run с Cloud Scheduler) и способ отдавать результаты (панель Streamlit).
Сами модели опираются на набор библиотек Python: scikit-learn (Ridge и random forest), XGBoost (чемпион), statsmodels и SciPy (пуассоновские регрессии — одномерная и двумерная — и отрицательная биномиальная, плюс SARIMAX), PyMC (байесовская модель) и Keras (LSTM и CNN), при поддержке pandas и NumPy для данных.
Ни одна из них не обязательна для разовой модели, но вместе они делают конвейер воспроизводимым и способным переобучаться и обновляться без ручной работы.