Аналитик создал нейросеть для прогнозов на базе карточек FIFA и получил ROI 11%

Специалист по анализу данных Channel 4 Брэдли Грэнтэм разработал предиктивную модель для АПЛ на основе карточек FIFA. Коэффициенты взяты по линии закрытия Pinnacle.
В прошлом году мне захотелось поиграться с xG-моделью и попрактиковаться в программировании на Python. Меня вдохновили Майкл Кейли и Тед Кнутсон, за которыми я слежу в твиттере.
На мой взгляд, xG — просто фантастика. Но, как и другие футбольные метрики, теория ожидаемых голов имеет недостатки. Она не учитывает составы команд и не может измерить эффект новичков на игру команды.
Я хотел создать то, что: а) помогало прогнозировать исходы матчей; б) было новым; в) использовало данные об игроках. Я почти не видел имплементации нейросетей в футбол, поэтому создал модель в Tensorflow для предсказания результатов игр на основании стартовых составов.
Данные
Наиболее очевидный рейтинг футболистов — база FIFA от EA Sport. Она обновляется ежегодно, едина для всех лиг и достаточно точна. Я использовал только общий рейтинг, хотя другие параметры могли бы дать более точные результаты.
Я собрал рейтинги игроков АПЛ за последние 5 лет с сайта fifaindex.com. Информацию об участии в матчах взял с betstudy.com, где собраны данные о фамилии, номере и национальности каждого, кто играл в АПЛ.
Фамилии из баз FIFA и Betstudy не всегда совпадали, поэтому использовал комбинацию из фамилии, номера, команды и национальности. Я получил 22 рейтинга на каждый матч за последние 5 сезонов Премьер-Лиги.
Что обозначают нули
Используя только эти числа, мы теряем информацию о схеме команды. Когда слабые команды играют с сильными, они склонны парковать автобус, выпуская больше защитников.
Поэтому для каждого стартового состава я создал вектор из 18 позиций (пример выше). Первая клетка — вратарь, следующие 6 — рейтинги защитников. Если защитников меньше, то клетки остаются пустыми (значение 0). Следующие 7 позиций для полузащитников и последние 4 — для атаки. По схеме выше ясно, что «Челси» играл 5-2-3.
Подобная структура помогала учитывать игровые схемы. В нейронную сеть попадает 36-мерный вектор (18 домашних ячеек и 18 гостевых), что позволяет учитывать домашнее преимущество.
На последнем этапе я загрузил результаты игр и коэффициенты с football-data.co.uk.
Модель с обучением
На картинке — архитектура нейронной сети
После сбора и форматирования данных необходимо определить внутреннюю структуру сети. Я тренировал нейросеть на сезонах с 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%.
Сезон-2018/2019
Вдохновившись отличными результатами, я решил проверить модель в боевых условиях. Перед сезоном-2018/19 я переобучил модель, загрузив в нее сезон-2017/18. Оставались важные нюансы — угадать стартовые составы и схемы игры для каждой команды. Это не так сложно в начале чемпионата, но к весне меняется очень многое.
Для сезона-2018/19 я планировал использовать карточки из FIFA-2017/2018. Это не критично, но было много игроков, чьи показатели значительно изменились за год. Оставалось ждать новой FIFA с актуальными рейтингами.
Я просимулировал сезон миллион раз и подсчитал среднее количество очков, побед, поражений и ничьих, а также процент, как часто команды финишировали первыми, в первой четверке, в зоне вылета.
Получив первые результаты, я немного проиграл с моделью, например, допустив уход Азара, я ставил вместо него Виллиана (рейтинг 91 против 84). Это приводило к тому, что «Челси» недобирал 4 очка по итогам сезона.
В целом, я очень доволен работой модели. Это неидеальный способ моделирования футбольного матча. Футбол гораздо сложнее: тренер, мотивация, погода, стадия сезона, график, удача. Тем не менее исследование получилось занимательным. Я хочу настроить модель на использование Smarkets API, чтобы ставки делались автоматически.
P.S. Статья была написана летом 2018 года. Чемпионство «МС» не вызывало сомнений, а вот «Ливерпуль» был недооценен — только 5-е место. С зоной вылета все неплохо — модель верно предсказала вылет «Кардиффа» и «Хаддерсфилда», а вот слабое выступление «Фулхэма» высчитать не удалось.
Переведено с сайта towardsdatascience.com
Нашли ошибку? Сообщите нам