Аналитик создал нейросеть для прогнозов на базе карточек FIFA и получил ROI 11%
Специалист по анализу данных Channel 4 Брэдли Грэнтэм разработал предиктивную модель для АПЛ на основе карточек FIFA. Коэффициенты взяты по линии закрытия Pinnacle.
В прошлом году мне захотелось немного поиграться с xG-моделью и заодно попрактиковаться в программировании на Python. Меня вдохновили Майкл Кейли (Michael Caley) и Тед Кнутсон (Ted Knutson), за которыми я активно слежу в твиттере.
На мой взгляд, xG — просто фантастика. Но, как и другие футбольные метрики, теория ожидаемых голов имеет свои недостатки.
Во-первых, она не учитывает составы команд. Если у «Челси» не играл Азар, то xG команды был чуть ниже среднего показателя.
Во-вторых, в начале сезона, когда приходят новые игроки, xG не может измерить, какой эффект новички окажут на игру команды.
И, наконец, пока еще нет xG-модели, которая бы качественно обобщала данные по 5 топ-лигам Европы (это как раз то, над чем я сейчас работаю).
Я опоздал со своей xG-моделью — подобное существовало уже 4-5 лет, и моя модель не демонстрировала чего-то принципиально нового. Я хотел создать то, что: а) помогало прогнозировать исходы матчей; б) было новым; в) использовало данные об игроках.
Я почти не видел имплементации нейросетей в футбол. Так что я создал что-то подобное в Tensorflow (программная библиотека Google для развития нейронных сетей), чтобы предугадывать результаты игр на основании стартовых составов.
Данные
Наиболее очевидный рейтинг футболистов — база FIFA от EA Sport. Она обновляется ежегодно, она едина для всех лиг и достаточно точна. Я использовал только общий рейтинг, хотя, возможно другие параметры (защита, атака и т.д.) дали бы более точные результаты.
Я собрал рейтинги игроков АПЛ за последние 5 лет с сайта fifaindex.com. Мне нужна была информация, в каких матчах они принимали участие, я использовал ресурс betstudy.com, где собрана информация о фамилии, номере и национальности каждого, кто играл в АПЛ.
Фамилии из баз FIFA и Betstudy не всегда совпадали, поэтому я использовал комбинацию из фамилии, номера, команды и национальности. Я получил 22 рейтинга на каждый матч: 11 домашних игроков и 11 гостевых с показателями от 50 до 100 за все игры последних 5 сезонов Премьер-Лиги.
На примере выше стартовый состав Челси: Куртуа, Мозес, Рюдигер, Алонсо, Кристенсен, Аспиликуэта, Фабрегас, Канте, Азар, Мората, Виллиан.
Что обозначают нули
Но используя только эти числа, мы теряем информацию о схеме команды. Когда слабые команды играют с сильными, они склонны парковать автобус, выпуская больше защитников.
Поэтому для каждого стартового состава я создал вектор из 18 позиций (пример выше). В этом векторе первая клетка определяет вратаря, следующие 6 — рейтинги защитников. Если защитников, к примеру, всего 4, то две клетки остаются пустыми (значение 0). Следующие 7 позиций для полузащитников и, наконец, последние, 4 — для атаки. То по схеме выше ясно, что «Челси» играл 5-2-3.
Подобная структура помогала учитывать игровые схемы. Если в составе 6 защитников, то вероятнее всего команда сыграет от обороны. В нейронную сеть попадает 36-мерный вектор (18 домашних ячеек и 18 гостевых), что позволяет учитывать домашнее преимущество.
На последнем этапе я загрузил в модель результаты игр и коэффициенты, которые взял с football-data.co.uk, где их бережно собирает Джозеф Бухдаль (Joseph Buchdahl).
Модель с обучением
На картинке — архитектура нейронной сети
После сбора и форматирования данных необходимо определить внутреннюю структуру сети. Я тренировал нейросеть на сезонах с 2013/14 по 2016/17, чтобы потом протестировать модель на сезоне 2017/2018. Из 1540 игр я оставил 50 для финальной проверки.
Модель я обучал методами ранней остановки (один из методов регулирования, предотвращающий переобучение нейронной сети) и исключения.
Тестирование
Для тестирования я взял банкролл в 100 фунтов и по критерию Келли высчитал оптимальный размер ставки. Я избегал ставок на коэффициенты больше 3.2 и не делал прогнозы, если мои вероятности были лучше букмекерских менее чем на 2%.
По итогам тестов за сезон-2017/2018 ROI составил 11% — замечательный показатель. Я переобучил модель несколько раз, провел еще новые тесты, но результат оставался стабильным. Вот несколько конкретных цифр:
- выиграно 50% ставок;
- средний коэффициент на Pinnacle — 2,37;
- средний прогнозный (вычисленный моделью) коэффициент — 2,01;
- средний валуй — 7,23%, с максимальным значением 21,3%.
ROI, безусловно, зависит от случая, но цифры в любом случае выглядят многообещающими. Для наглядности я отобразил рост банкролла и суммы ставок на графике.
Сезон-2018/2019
Вдохновившись отличными результатами, я решил проверить модель в боевых условиях. Перед сезоном-2018/19 я переобучил модель, загрузив в нее сезон-2017/18. Оставались важные нюансы — угадать стартовые составы и схемы игры для каждой команды. Это не так и сложно в начале чемпионата, но к весне меняется очень многое.
Для сезона-2018/19 я планировал использовать карточки из FIFA-2017/2018. Это не критично, но было много игроков, чьи показатели значительно изменились за год (тот же Салах). Оставалось ждать новой FIFA с актуальными рейтингами.
Еще один минус — трансферное окно еще было открыто после старта чемпионата, и обновления составов продолжались.
Я просимулировал сезон миллион раз (на ноутбуке это заняло около 8 минут) и подсчитал среднее количество очков, побед, поражений и ничьих. Затем я высчитал процент, как часто команды финишировали первыми, в первой четверке, в зоне вылета.
Получив первые результаты, я немного проиграл с моделью, например, допустив уход Азара, я ставил вместо него Виллиана (рейтинг 91 против 84). Это приводило к тому, что «Челси» недобирал 4 очка по итогам сезона.
Или убирал из «МЮ» Де Хеа и ставил в ворота Ромеро — манкунианцы к концу сезона набирали на 3 очка меньше.
В целом, я очень доволен работой модели. Это неидеальный способ моделирования футбольного матча. Футбол гораздо сложнее: тренер, мотивация, погода, стадия сезона, график, удача. Тем не менее, исследование получилось занимательным. Я хочу настроить модель на использование Smarkets API, чтобы ставки делались автоматически.
P.S. Статья была написана летом 2018 года, и мы можем сравнить смоделированные результаты с настоящими. Чемпионство «МС» не вызывало сомнений, а вот «Ливерпуль» был недооценен — только 5-е место. С зоной вылета все неплохо — модель верно предсказала вылет «Кардиффа» и «Хаддерсфилда», а вот слабое выступление «Фулхэма» высчитать не удалось.
Переведено с сайта towardsdatascience.com
Читать также:
Нашли ошибку? Сообщите нам
Комментарии (0)