Кто победит на Евро2020

ML исследование DATA4

Автор: Александр Груняшин
В Июне-Июле 2020 планировалось провести Евро2020, но в этом соревновании победил коронавирус, и чемпионат отложили на год. Но давайте представим, что соревнование состоится и с помощью алгоритмов попробуем предсказать победителя!
Сбор датасета
Данные для обучающего набора взяты с сайта: https://ru.corner-stats.com/

Для тестового набора с сайта: https://www.sports.ru/euro-2020-qualification/table/

Сведения о командах с сайта: https://www.transfermarkt.ru/europameisterschaft-2020/gesamtspielplan/pokalwettbewerb/EM20/saison_id/2019

Рейтинг ФИФА с сайта: https://www.fifa.com/fifa-world-ranking/ranking-table/men/

Для обучающего набора собирались данные за Чемпионат мира 2018 года, Чемпионаты европы 2012, 2016 года и отбор на чемпионат мира 2018 года.

Для тестового набора собирались данные за последние 10 матчей каждой сборной (отборочный этап).

Датасет содержит следующие признаки:

Значимости признаков, вычисленные с помощью бустинга над деревьями решений для тестового набора данных.
Оценка значимости признаков показывает, что наибольшее влияние вносит средний возраст игроков команды, рейтинг ФИФА (и это не удивительно, рейтинг должен отражать силу команды), среднее количество набранных очков за последние 10 матчей и среднее число поражений (показывает текущее состояние команды). Кажется, что это именно те признаки, которые коррелируют с вероятностью одержать победу в матче.

Также изначально использовались другие признаки, такие как:
Host - Является ли команда, которую представляет страна хозяйкой евро.
Coach - Как давно менялся тренер.
CoachTeam - Тренер и команда одной национальности.

Но их значимость в рамках рассмотренной модели была равна нулю и они были исключены из модели.

На будущее возможно добавить еще несколько признаков таких как:
Legionnaires - Количество легионеров.
Teammates - Максимальное число одноклубников.
OddSet - Оценки букмекеров на шанс победы в матче.

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

.
Для предсказания победителя евро 2020 будем выполнять следующие шаги:
1
Обучим несколько моделей на тренировочном наборе данных
2
Оценим модели на тестовом наборе
3
Выберем наилучшую модель
4
Используя наилучшую модель смоделируем результаты
Для начала попробуем обучить модель линейной регрессии.

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

Логистическая регрессия
Логистическая регрессия со следующими заданными параметрами:model = LogisticRegression(penalty='l1', C=1)

Показывает Score = 55.8 %
Наивный Байес
Наивный Байес дает хорошее качество в задачах многоклассовой классификации, поэтому попробуем применить его к наши данным.

Для Гауссовского наивного классификатора:

model = GaussianNB()

Показывает Score = 50.9 %

Для многоклассовой классификации хорошо подходит BernoulliNB():

model = BernoulliNB(alpha=10)

Показывает Score = 53.9 %

K ближайших соседей (KNN)
Далее попробуем алгоритм к-ближайших соседей с различными параметрами.

model = KNeighborsClassifier(n_neighbors=3, p=2)

Наилучшее значение Score = 51.96 % достигается при использовании Евклидова расстояния, при использовании метрики Манхеттен

получаем Score = 49.06 %.

Деревья решений
Деревья решений хорошо подходят для задач многоклассовой классификации. При следующих параметрах достигается лучшее значение

Score = 51.96 %:

model = DecisionTreeClassifier(criterion='entropy', max_depth=10)

RandomForest
model = RandomForestClassifier(n_estimators=100, criterion='entropy', max_depth=6, min_samples_split=5)

Score = 54.90 %.
Градиентный бустинг
Рассмотрим градиентный бустинг над решающими деревьями.

model = GradientBoostingClassifier(learning_rate=0.01, n_estimators=50)

Score = 61.01 %

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

На данный момент известны не все участники Евро 2020 смоделируем результаты оставшихся этапов отбора:
ПОЛУФИНАЛ ПЛЕЙ-ОФФ: 26.03.2020
ФИНАЛ ПЛЕЙ-ОФФ: 31.03.2020
ИТОГОВЫЕ УЧАСТНИКИ В ГРУППАХ:
1/8 ФИНАЛА:
Подпишись на рассылку новостей о AI
Только полезные материалы о машинном обучении и искусственном интеллекте. Мы уважительно относимся к нашим читателям и рассылаем письма не чаше 1 раза в неделю!
1/4 ФИНАЛА:
ПОЛУФИНАЛЫ:
МАТЧ ЗА 3-Е МЕСТО:
Финал:
Заключение
Мы построили предсказание на основе градиентного бустинга, согласно которому, если бы чемпионат состоялся, то победила бы Бельгия, а Англия и Франция заняли бы второе и 3 место. Наилучшее качество для прогноза показывают алгоритмы основанные на композициях деревьев. Наибольшее влияние вносит средний возраст игроков команды, рейтинг ФИФА, среднее количество набранных очков за последние 10 матчей и среднее число поражений.

Но все эти факторы меркнут перед пандемией covid-19, из-за которой чемпионат перенесен на год.

DATA4 - разрабатываем ML решения индивидуально под клиента
Связаться с нами
Напишите контактные данные, чтобы мы связались с вами.