10 мин.
0

Как я учусь футбольной аналитике. Часть 1: план, инструменты и первые результаты

Привет, меня зовут Веня, и я фанат футбола. Поглощаю много матчей и околофутбольного контента каждую неделю. Плюс по работе связан со спортом в целом. Не напрямую, но связан.

Поэтому естественным образом погружаюсь в специфику футбола, метрик и аналитики. Но все равно не чувствую себя в этой теме хоть немного уверенней. Где-то между обычным обывателем, который раз в неделю под пивасик смотрит футбол и в целом может объяснить, что такое xG, и стажером-аналитиком, который способен проанализировать матч, нарисовать несколько красивых графиков и тепловых карт.

Решил, что хочу глубже в этой теме разбираться.
Обложился нейронками, сформировал план по изучению футбольной аналитики, ну и погнали.

Этот блог по сути мой дневник обучения и база знаний. Буду закидывать сюда структурированные мной знания и рассказывать, как получается с практикой.

Ну а в первой статье расскажу про план и инструменты, которыми обложился, чтобы учиться.
Плюс про то, как проходят первые две недели.

Итак.

Как я составил план

Я очень люблю нейросети и последнее время ничего не делаю без них, поэтому первым делом пошел в Клод с таким запросом:

Я хочу прокачаться в футбольной аналитике, то есть видеть цифры, статистику, уметь выявлять из нее паттерны и всякое такое
Но сначала мне нужен вообще фундамент какой-то От тебя нужна помощь в составлении плана, поиске материалов для погружения и т.д.
Но сначала задай вопросы, давай понимание задачи сформулируем

Через несколько итераций вопросов и уточнений получился план на 6 недель, разбитый по этапам.

Важное отступление: если я сильно чем-то увлекаюсь, то мне сложно следовать планам. Поэтому план для меня — это больше вектор, куда я иду, а не чек-лист, от которого нельзя отходить. К тому же я достаточно занятой (=ленивый) человек, и мне сложно будет соблюдать темп, который я себе задал. Для меня это не проблема, я сразу это знаю и сильно по этому поводу не переживаю. Отходить от плана для меня норма.

План

Этап 1 — Язык данных (недели 1–2)

Разобраться, какие бывают метрики, какие бывают данные и откуда их брать. В основном теория.

Цель этапа: своими словами объяснить 10 базовых метрик — что они показывают и где врут.

Метрики, которые нужно изучить:

Основные метрики для начала обучения

Как учиться:

  • читать объяснения метрик в Opta Analyst: Metric Explainers

  • параллельно книгу The Expected Goals Philosophy,

  • курс на Stepik,

  • раз в неделю смотреть матч и сравнивать впечатление с xG-статистикой.

  • И вести свой глоссарий: метрика → объяснение своими словами → ограничения.

Прогресс:
Собрал в Обсидиане базу знаний, куда стараюсь записывать своими словами метрики и их значения. Плюс отдельные документы про виды данных и источники. В источники еще пишу их ограничения и собираю шаблоны в виде кода про то, как из них данные вытаскивать. В будущем планирую собрать небольшой интерфейс, который позволит не писать код каждый раз заново, а просто вытаскивать сходу данные, которые нужно.

Граф с базой знаний

Этап 2 — Данные руками (недели 3–6)

Самому выгружать данные матча и строить 4 базовых графика:

  1. Карта ударов с xG: где били и насколько опасно.

  2. xG-таймлайн матча: кто и когда доминировал.

  3. Сеть передач: как команда строит игру, кто центр связей.

  4. Тепловая карта прессинга: где команда отбирает мяч.

По плану код должен был писать Клод, а я — ставить задачу и проверять результат. В итоге решил писать сам: Клод помогает разобраться и дает задачки, чтобы я глубже погружался.

Для изучения выбрал финал Лиги чемпионов 18/19 — где мой любимый Ливерпуль обыграл Тоттенхем 2:0. Этот матч есть в StatsBomb.

Удары, xG и non-penalty xG, которые вытащил из StatsBomb

Прогресс:
На первой же неделе своего обучения решил сходу в практику пойти, чтобы и интересней было и теорию закреплять на деле. Подключил через Гугл Колаб mplsoccer и подгрузил все нужные данные по матчу из StatsBomb, вытащил все удары с xG и non-penalty xG.
И построил первый график — карту ударов: где били и насколько опасно. Чем больше круг, тем выше xG удара, звездочки — голы.

Пока смотрится по колхозному, но моя цель — понять базу. Над красивыми графиками в стиле популярных блогов буду думать позже.

Сам с помощью анализа данных нарисовал карту ударов. Магия!

Из наблюдений: кажется, что не самый удачный матч для первого анализа взял. Ливерпуль забил с пенальти на первых минутах, что сильно повлияло на весь матч: без пенальти у Ливерпуля всего 0,42 xG, а у Тоттенхема — 0,92. В аналитике это вроде как называется game state — состояние счета для конкретной команды: ведет она, проигрывает или играет вничью. От этого команды действуют по-разному, и статистика матча искажается. Для меня пока рано так глубоко погружаться, но запомнил.

Решил все равно этот финал добить — посмотреть, что будет, и потом сравнить свои ощущения с другим матчем.

Этап 3 — Своя лига (с недели 7 и до бесконечности)

Взять одну лигу и учиться на ней. Цель — знать ее по цифрам лучше большинства болельщиков и регулярно находить в ней паттерны.

Этап 4 — Все что угодно

Если доберусь до этого этапа, то там видно будет, куда это все меня занесет.

Инструменты

— Клод (Claude). Главный помощник: собрал со мной план, объясняет непонятное, дает задачки и разбирает ошибки в коде. Если ошибся — подскажет где и почему.

— Обсидиан (Obsidian). База знаний по обучению: глоссарий метрик, заметки, рабочий код. Он хранит все в обычных md-файлах, а этот формат нейронки тоже уважают. Можно просто показать Клоду папку с заметками, и он понимает, на чем я остановился.

— Гугл Колаб (Google Colab). Лень поднимать инфраструктуру на компе, поэтому код пишу там. Бесплатно, прямо в браузере, все сохраняется на гугл диск, библиотеки ставятся одной строкой. Из минусов: если долго не трогать, Колаб забывает все переменные, и весь код приходится перезапускать с самого начала.

— Python + mplsoccer. Библиотека для футбольных графиков: рисует поле, карты ударов, тепловые карты и сама умеет загружать открытые данные StatsBomb.

— Степик (Stepik). Там есть бесплатный вводный курс по анализу футбольных данных.

3 столба обучения

Что успел понять за первые дни

Какие бывают данные:

  • Event data — каждое действие с мячом: пасы, удары, отборы, потери. С координатами, временем и игроком. Основа почти всех метрик. Минус: не видно, что происходит без мяча.

  • Tracking data — координаты всех игроков и мяча 10–25 раз в секунду. Видна вся структура игры, но бесплатно таких данных почти нет.

  • Снимки позиций (360 / freeze frames) — где стояли все игроки в момент конкретного события. Компромисс между первыми двумя.

  • Физические данные — пробег, спринты, ускорения.

  • Метаданные — составы, позиции, замены, тренеры.

Где брать данные:

  • StatsBomb Open Data — бесплатные event data по части матчей и турниров: несколько целых сезонов лиг, финалы Лиги чемпионов, ЧМ-2022, Евро-2024. На нем сейчас и учусь.

  • FBref — раньше был главным бесплатным источником, но в этом году Opta забрала у него продвинутую статистику. Половина старых туториалов на нем больше не работает.

  • Understat — xG по ударам для шести лиг, включая РПЛ. Только удары, без передач и обороны.

  • FotMob — много данных по матчам, но официального API нет.

  • Трансфермаркт — попробовал вытащить данные игроков скриптом, сайт не отдал: защита от ботов.

Вывод: для учебы бесплатного материала хватает, а для чего-то серьезного данные надо лицензировать.

Выводы за две недели

  1. Стараюсь выделять по 1–1,5 часа каждый будний день. На выходных отдыхаю: смотрю футбол и пытаюсь делать это «аналитически».

  2. Первый этап занял у меня один день сконцентрированной работы. Собрал список метрик, понял, откуда тянуть данные, и на второй день ушел в практику. Теория — хорошо, но лучше усваивается, когда делаешь руками. Да и интереснее так! Насколько это правильное решение, будет видно дальше.

  3. Стараюсь не привязываться к плану. В процессе погружения появляется много новой инфы, которую закидываю себе в беклог обучения или сходу вникаю. Опять же: план → вектор, не чек-лист.

  4. Понял, что без хоть какого-то базового понимания программирования будет сложно с нуля. Я немного знаю python, поэтому могу разобраться что к чему. Это выручает.

  5. Все еще не понимаю, где брать открытые данные по текущему сезону. Но это проблема третьего этапа, сейчас не заморачиваюсь.

  6. Чем глубже копаю, тем больше нахожу историй вокруг данных в футболе. Например, наткнулся на «data-дерби» Брентфорда и Брайтона: оба клуба принадлежат людям, которые строят команды на данных. Закинул в беклог — хочу изучить эту историю и, возможно, статью напишу про это.

Дальше буду писать про свой прогресс: метрики, первые графики, наблюдения и грабли.

Есть здесь те, кто тоже учится аналитике или недавно прошел этот путь? Поделитесь, с чего начинали и на чем спотыкались, что я не учел в своем плане. И если знаете, где брать открытые данные по текущем сезонам в топ лигах, буду благодарен за подсказку.