11 мин.

С помощью машинного обучения предсказываем EPV-метрики на следующий сезон. Создаем интрумент для селекционера

В прошлый раз мы построили свою EPV модель, на основе которой посчитали пару метрик, а именно награду за продвижение мяча через пас и ведение/дриблинг. В этой статье мы попытаемся прогнозировать значения этих метрик для игроков в будущем.

Зачем?

Чуть ли не каждый день появляется пост/статья с новой метрикой (или улучшенной старой) так или иначе описывающей, хорошо играет футболист или нет. Однако почти никогда не поднимается вопрос, насколько эта метрика стабильна от сезона к сезону. В задаче селекции важно понимать, как футболист будет играть в будущем.

Анализ данных в селекции

Машинное обучение и вообще анализ данных все чаще используется в футболе. На мой взгляд, лучшее применение аналитики данных в футболе – это задача селекции. Допустим, стоит задача приобрести левого защитника. Левых защитников на рынке тысячи. Всех их глазками не отсмотришь. Нужно игроков как-то предварительно отфильтровать. Сделать это можно с помощью метрик. Сами метрики могут быть совсем простыми, вроде количества отборов, либо продвинутыми, вроде EPV.

Как будем решать задачу

В рамках данной работы будем предсказывать значение метрики pass run reward (далее PRR) для футболиста в следующем году. Однако данный подход можно применять и для других статистик, и эта статья демонстрирует идею, как это можно сделать.

Решать задачу будем так. Будем предсказывать значение PRR в следующем сезоне в пересчете на 60 чистых минут. То есть данными у нас являются пары игрок-сезон.

Однако добавим в модель несколько ограничений.

Во-первых, будем обучать модель только на игроках, которые сыграли в предыдущем и следующем сезонах хотя бы 100 чистых минут. Ограничение, что игрок в предыдущем сезоне должен сыграть некоторое время выглядит более-менее адекватно. А вот условие, что игрок должен в следующем сезоне сыграть 100 минут выглядит странным. Откуда мы знаем, сколько футболист сыграет в следующем году? Подробнее об этом поговорим в конце статьи.

Во-вторых, разберемся с проблемой зимних трансферов. Какое значение нужно учиться предсказывать, если игрок сыграл в двух клубах в следующем сезоне? Решили оставить данные по выступлениям в команде, в которой игрок сыграл больше времени. Соответственно, данные по второй команде выкинем. Вообще говоря, выкидывать данные – такая себе практика, но читерить с целевой переменной еще хуже.

В-третьих, берем все данные за сезон. Будем прогнозировать PRR на следующий сезон, используя все данные из предыдущего. Такой подход означает, что моделью имеет смысл пользоваться только под конец сезона.

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

Реализация

Модель будем строить постепенно. Для начала проведем небольшой предварительный анализ. Ниже представлены распределения PRR по игрокам-сезонам в пересчете на 60 чистых минут для полевых игроков, которые сыграли хотя бы 100/1000 чистых минут в сезоне (красный/желтый графики). Всего таких пар оказалось 90 358/41 239. Половина данных сосредоточена в диапазоне -0.0538, 0.0095 (25-й и 75-й процентили) для игроков сыгравших больше 100 минут. Для игроков сыгравших больше 1000 минут такие значения равны: -0.04170, 0.01204. Логично, что желтый график уже (больше минут – меньше волатильности) и чуть правее красного (лучшие игроки играют чаще). По-хорошему, надо бы тесты провести, ну да ладно.

Распределение PRR по игрокам-сезонам в пересчете на 60 чистых минут

Модель, которая не модель

Давайте посмотрим, насколько похоже PRR в предыдущем сезоне на PRR в следующем сезоне. Кто знает, может быть, эта статистика настолько стабильна от сезона к сезону, что и делать ничего не нужно. Этот момент важно проговорить, так как многие делают выводы об игроке на основе только предыдущего перформанса.

Давайте посчитаем RMSE и MAE между значениями PRR в следующем и в предыдущем сезонах. Только разобьем ошибку в зависимости от сыгранных минут и от того, менял ли игрок команду/лигу.

Неудивительно, что наибольшая ошибка достигается в ситуациях, когда игрок меняет команду. Это особенно критично для нас, поскольку мы создаем инструмент для селекционера: подразумевается, что игрок сменит клуб или даже лигу.

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

Учитываем силу лиги

Нам как-то нужно учесть, что игрок мог перейти из слабой лиги в сильную и наоборот. Такую задачу можно решить в лоб. Давайте добавим признаков вроде «игрок перешел из первой лиги Дании в первую лигу Испании». У такого подхода две проблемы:

  1. Подобных трансферов (конкретно из одной лиги в другую) не так много, есть риск переобучиться.

  2. Допустим, у нас таких трансферов немало. Например, у нас есть история таких трансферов за последние 10 лет. Такой подход не очень корректен, потому что за 10 лет уровень лиг мог поменяться.

Здесь нам пригодятся рейтинги лиг. Если вкратце, то мы посчитали рейтинги для каждой команды, чем рейтинг выше, тем команда сильнее. Рейтинг лиги – это среднее арифметическое от топ-N команд в этой лиге. Важно, что мы смотрим на рейтинги в динамике, уровень команд/лиг из года в год меняется.

На основе рейтингов мы можем создать признаки, вроде: рейтинг предыдущей команды, рейтинг новой команды, рейтинг предыдущей лиги, рейтинг новой лиги, разница между этими рейтингами и т.д.

Какую информацию мы вообще можем использовать?

Вдумчивый читатель в конце предыдущей главы мог начать негодовать. Да что это такое? Ты пытаешься прогнозировать будущее, а сам используешь данные из этого будущего. Откуда ты знаешь в какую команду перейдет футболист?

На мой взгляд, мы имеем право использовать рейтинги новой команды/лиги. Данная модель является инструментом для селекционера. Модель как бы отвечает на вопрос, что случится, если такой-то игрок перейдет в нашу команду. Правда, заметим, что нужно брать рейтинги на момент окончания предыдущего сезона, так мы в будущее не заглянем.

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

Забегая вперед, скажем, что смена позиции существенно влияла на точность прогноза. Особенно в ситуациях, когда LW/RW становился центральным нападающим.

Что еще использовали

Также в качестве признаков мы использовали статистику по предыдущим сезонам. Например, значения xG, EPV-метрик в прошлом сезоне, среднее по трем/пяти предыдущим сезонам. Сырые статистики вроде количества сыгранных минут, матчей, забитых голов. Данные о самом игроке: например, возраст на начало сезона. Перфоманс в еврокубках, южноамериканских кубках, в играх за сборную.

Что получилось

Обучив модели машинного обучения (использовались LightGBM и CatBoost) на вышеописанных признаках, получили следующие ошибки на кросс-валидации:

Прирост точности по сравнению с банальным «посмотри, что было в прошлом году» очевиден. Тем не менее наш подход, мягко говоря, не решает все проблемы футбольной селекции, ошибка по-прежнему значительна.

Останется ли игрок «в данных» в следующем сезоне?

В ограничениях мы упомянули, что обучаем модель на игроках, которые сыграли в следующем сезоне хотя бы 100 минут. Это не очень хорошее ограничение, потому что мы заранее не знаем, сколько игрок сыграет в следующем году. Чтобы решить эту проблему, построим вспомогательную модель.

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

  • игрок закончил карьеру;

  • игрок получил травму;

  • игрок настолько плох, что тренер его не выпускает играть;

  • игрок в следующем сезоне играет в команде, по которой у нас нет данных -- здесь подразумевается, что футболист перешел в очень слабую лигу.

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

Зачем нужна эта модель? Мы учились предсказывать PRR на игроках, которые сыграли в следующем сезоне более 100 минут. Но на практике мы же не знаем сыграет ли он эти минуты или нет. Может, этому футболисту на пенсию уже пора. Вспомогательная модель и решает эту задачу.

Допустим, мы спрогнозировали приличный PRR, а другая модель выдала, что он вылетит из данных с вероятностью > 90%. Такая ситуация говорит нам о том, что прогноз PRR не очень адекватный, к нему нужно относиться с недоверием.

Реализация вспомогательной модели

Всего в данных было 123 685 пар игрок-сезон, которые сыграли в чемпионате хотя бы 100 чистых минут. Из этих пар 73.05% сыграли в следующем сезоне более 100 чистых минут.

На практике получился не очень хороший результат. Удалось выжать только 81.16% точности.

К сожалению, не было на руках данных о контрактах и истории травм. Такая информация наверняка очень помогла бы.

Ну и? А дальше-то что?

В целом, у нас получилась полезная модель, которая позволяет фильтровать игроков в селекции. PRR – очень важная метрика, оценивающая эффективность продвижения мяча через пас и ведение/дриблинг. Однако эта статистика даже не описывает все действия с мячом. Мы не раскрыли тему ударов. Можно было бы прогнозировать что-то типа PRR + голы. Забавно, что никаких противоречий с математикой тут нет. Другой вопрос, что интерпретация этой величины – сюр какой-то.

Также мы никак не оценивали умение игрока принимать передачу. В этом блоге неоднократно обсуждалась проблема распределения награды между пасующим и принимающим. Однако ничего не делалось. Постараемся исправиться.

В следующий раз (ближе к концу сезона) мы поиграем в футбольных селекционеров и покажем прогнозы PRR для некоторых игроков.

Проблемы

В целом, мы уже рассказали об основных проблемах данного подхода. Давайте подытожим:

  • Недостаток данных. Не использовалась информация о травмах, контрактах. По многим лигам данные неполные, не все игры сезона размечены. Самих сезонов не так много.

  • PRR – это не священный грааль. Можно быть хорошим футболистом, но иметь низкий PRR. Центральные нападающие, игроки оборонительного плана скорее всего будут иметь низкий PRR. Также есть зависимость от тактики: если тренер будет просить крайнего защитника поменьше бегать в атаку, но чаще думать о защите, то метрики просядут. Не забываем, что метрика основана на ML, а, как известно, все модели неправильные.

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

  • Модель строится на реальных данных. Это значит, что потенциальный трансфер в наш клуб должен быть более-менее реалистичным. Прогноз PRR для Кевина де Брюйне в чемпионате Венесуэлы скорее всего будет неадекватным.

Телеграм-канал автора