Обзор проекта

20 ноября 2022 года стало чрезвычайно важным днем ​​для любителей футбола во всем мире.

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

В течение последних 12 лет Катар готовился к тому, чтобы эта версия стала не только самой дорогой с точки зрения инвестиций в стадионы, инфраструктуру, транспорт и отели, но и самой исключительной из всех последних 21 событий чемпионата мира.

Вот небольшой обзор ЧМ-2022 в цифрах.

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

На следующем рисунке показаны 8 групп чемпионата мира по футболу 2022 года, в каждой из которых по 4 команды.

На первом этапе у нас будет 3 раунда (по 16 игр в раунде), и после этих раундов только 16 команд пройдут квалификацию на следующий этап, который является 1/8 финального этапа Мирового турнира. Чашка.

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

Только 4 команды из 8 пройдут в полуфинал, сыграв еще 4 игры.

В полуфинале 4 квалифицированные команды из четвертьфинала играют 2 игры, чтобы определить 2 команды, которые сразятся друг с другом в финале, чтобы определить победителя.

Затем, в конце, будет сыграна еще одна игра между проигравшими командами из полуфинала, чтобы определить победителей, занявших 3-е и 4-е места в Кубке мира.

На этом рисунке подробно показана дорожная карта чемпионата мира по футболу 2022 года в Катаре.

В этом проекте я использовал много источников данных, начиная с Результаты международного футбола, переходя к последним рейтингам ФИФА в октябре 2022 г. и достижениям чемпионата мира, чтобы предсказать победителя для каждого игра.

Постановка задачи

Цель этого проекта — создать классификатор победителей игр, следуя конвейеру, упомянутому ниже:

  • Исследуйте, предварительно обработайте и подготовьте данные для использования в соответствии с процессом ETL (извлечение, преобразование, загрузка).
  • Обучите, оцените и протестируйте классификатор на тестовых данных и задержке тестового сплита (игры чемпионата мира).
  • Настройте модель, чтобы улучшить ее производительность.
  • Прогнозируйте победителей этапа группового этапа.

Показатели

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

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

Отзыв. Сколько из всех существующих объектов (положительных) было предсказано правильно?

Точность:из всех существующих и несуществующих объектов (положительных и отрицательных), сколько из них мы предсказали правильно?

Точность. Сколько из всех объектов, которые мы определили как положительные, на самом деле являются положительными?

Оценка F1. Этот показатель является средним гармоническим значением точности и полноты. Он объединяет точность и отзыв в одно число с использованием упомянутой выше формулы, что означает, что он учитывает ложные срабатывания (FP) и Ложноотрицательные результаты(FN).

Анализ

Исследование данных

В этой части мы работали над изучением основных наборов данных, которые мы использовали в этом проекте:

Набор данных международных футбольных результатов: этот набор данных содержит результаты международных игр с 1872 по 2022 год.

Набор данных рейтингов ФИФА: этот набор данных содержит последние рейтинги (октябрь 2022 г.) международных команд.

Набор данных достижений чемпионата мира: этот набор данных содержит исторические достижения команд-победителей чемпионата мира.

Результаты международного футбола

Это обзор набора данных результатов международных футбольных игр:

Дата: Дата игры.

home_team: домашняя команда.

Away_team: Команда гостей.

home_score: счет домашней команды.

Away_score: счет команды гостей.

турнир: Игровой турнир (например, Товарищеский).

город: Принимающий город.

страна: страна пребывания.

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

Набор данных рейтинга ФИФА

Это обзор набора данных рейтинга ФИФА, где:

ранг: Рейтинг страны.

country_full: Полное название страны.

country_abrv: сокращенное название страны.

total points: общее количество баллов для страны.

предыдущие баллы: Предыдущее количество баллов для страны.

rank_change: Количество изменений рангов для страны.

конфедерация: футбольная конфедерация, включающая страну.

rank_date: Дата ранжирования.

Набор данных достижений чемпионата мира

Это обзор набора данных достижений Кубка мира, где:

Год: год проведения чемпионата мира по футболу.

страна: название страны-хозяйки чемпионата мира по футболу.

Победитель: Победители выпусков Кубка мира.

Второе место: команды, занявшие второе место в розыгрыше Кубка мира.

Третье: Команды, занявшие третье место в розыгрыше Кубка мира.

Четвертое: Команды, занявшие четвертое место в розыгрыше Кубка мира.

GoalsScored: количество голов, забитых на каждом чемпионате мира.

QualifiedTeams: количество квалифицированных команд.

MatchesPlayed: количество матчей, сыгранных во время чемпионата мира.

Посещаемость: Количество посетителей за игру.

Визуализация данных

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

Отсутствуют переменные

Мы визуализировали недостающие переменные для используемых наборов данных.

Затем мы разделили набор данных на две части:

Игры перед чемпионатом мира: игры, в которые играли до этого выпуска.

игры чемпионата мира: игры этого издания.

Мы можем заметить, что все отсутствующие значения связаны со счетом матчей чемпионата мира, поэтому нам не нужно иметь дело с отсутствующими переменными для набора данных International Football games.

Глядя на набор данных рейтингов ФИФА, мы видим, что для всех переменных нет пропущенных значений, он содержит рейтинги ФИФА для международных футбольных команд с 1992 по 2022 год.

То же самое касается достижений Кубка мира набора данных, он не содержит пропущенных значений.

Исторические данные

Мы решили работать с данными за последние 4 года, поэтому наши результаты будут более актуальными, если мы сосредоточимся на данных с момента последнего чемпионата мира по футболу в 2018 году.

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

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

На следующем рисунке показано распределение международных футбольных матчей за последние 4 года.

Мы видим, что большинство международных игр было сыграно в 2019 и 2021 непосредственно перед и после вспышки COVID-19.

Изучив набор данных Рейтинг ФИФА, мы получили некоторое представление о прогрессе команд за эти годы.

На этом рисунке показаны 32 лучшие команды с течением времени, мы использовали средние рейтинги за последние 4 года.

  • Бельгия занимает первое место, затем идут Бразилия, Франция, победитель конкурса 2018 года, Англия и Португалия.

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

  • Мы можем заметить, что Бразилия является страной с наибольшим количеством чемпионатов мира.
  • Германия является страной, которая чаще всего выходит в финал наряду с Нидерландами и Аргентиной.
  • Германия также является страной, занявшей третье место в чемпионате мира.
  • Уругвай и Англия занимают четвертое место во всех версиях Кубка мира.

На следующем графике показано количество прошедших квалификацию команд в каждом выпуске чемпионата мира.

Чемпионат мира начался с участием всего 13 команд в 1930 году,затем количество прошедших квалификацию команд было между 13  и 16  до1978 года. strong>затем в него вошли 24команды с1982по1994, чтобы наконец получить32квалифицированные команды из 1998 г.до сегодняшнего дня.

Методология

Предварительная обработка данных

Для наборов данных Результаты футбола, Рейтинг ФИФА и Достижения чемпионатов мира нам приходилось иметь дело с категориальными переменными, содержащими информацию о странах. сильный>.

  • Некоторые страны принадлежат нации, которой больше не существует, например, Югославия, Советский Союз, Чехословакия и т. д.
  • Некоторые страны написаны с ошибками в наборе данных рейтинга ФИФА, например, в случае IR Iran, или используются аббревиатуры вместо полных названий, например США.
  • В некоторых странах используется старый стиль именования или название на другом языке (Кабо-Верде, Кот-д'Ивуар..)

Мы сопоставили эти названия с правильными реальными названиями, а затем исключили некоторые игры, в том числе страны, которые не имеют рейтинга ФИФА, например (Страна Басков, Гваделупа, Мартиника и т. д.).

Разработка функций

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

Вот краткое изложение сгенерированных функций:

  • head_to_head_score: вычисляет разницу голов в личных встречах между домашними и гостевыми командами за несколько лет.
  • rank_difference: разница в рангах между домашними и гостевыми командами на определенную дату.
  • континент: содержит континент, на котором проходит игра.
  • final_results: подсчитывает результаты матча, начиная со счетов хозяев и гостей, а также классифицирует и определяет, является ли команда хозяев победителем, это Ничья счет или команда Гости побеждает.
  • день: эта функция возвращает день месяца из столбца даты для каждой игры.
  • месяц: эта функция возвращает месяц игры из столбца даты.
  • год: эта функция возвращает год игры, используя столбец даты.
  • dayoftheweek: эта функция возвращает порядок дней в игровой неделе.
  • home_team_winner: содержит количество титулов чемпионатов мира, выигранных домашней командой.
  • away_team_winner: содержит количество чемпионатов чемпионата мира, выигранных командой гостей.
  • home_team_second_place: содержит количество занявших второе место домашних команд.
  • away_team_second_place: содержит количество команд гостей, занявших второе место.
  • home_team_ Third_place: количество раз, когда команда хозяев занимала третье место в соревновании.
  • away_team_ Third_place: количество раз, когда команда гостей финишировала третьей в соревновании.
  • home_team_fourth_place: количество раз, когда команда хозяев финишировала четвертой в соревновании.
  • away_team_fourth_place: количество раз, когда команда гостей финишировала третьей в соревновании.
  • Вот некоторые графики столбцов rank_difference и head_to_head_score:

  • Разница рангов соответствует гауссовскому распределению со значениями, симметричными относительно среднего.
  • Визуально наблюдается небольшая асимметрия в функции head_to_head_score, которую мы можем уменьшить.

На этом графике показаны наиболее перекосы функции в нашем наборе данных:

  • Мы можем применить некоторые преобразования для уменьшения асимметрии данных (логарифм, квадратный корень и т. д.), но в данной ситуации это не очень нужно, так как асимметрия не очень high для наиболее важных функций.

Выбросы

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

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

Реализация

Алгоритмы

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

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

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

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

Есть отличная статья, в которой рассказывается о преимуществах и недостатках XGBoost и Random Forest.

Обучение и оценка

  • Сначала мы использовали исторические данные для игр после 2018 года, в которых участвовали 32 команды, прошедшие отбор на чемпионат мира по футболу FIFA QATAR 2022.
  • Затем мы добавили и предварительно обработали данные о рейтинге ФИФА и достижениях чемпионатов мира.
  • Наш окончательный набор данных (предварительно обработанный) состоит из 1202точек данных.
  • После этого мы разделили наши предварительно обработанные данные на обучающую и тестовую части, используя 25% данных для проверки нашей модели. Затем мы сохранили игры после 20 ноября 2022 года в качестве отложенного тестового сплита, чтобы проверить результаты тестового сплита.
  • Мы начали обучение с использованием классификаторов Random Forest и XGBoost.
  • После этапа обучения мы оценили наши модели, используя матрицу путаницы и функцию отчет о классификации, предоставляемую sickit-learn.

Полученные результаты

Мы провели несколько экспериментов, чтобы обучить, оценить и улучшить наши модели.

Вот некоторые результаты прогнозов модели для тестового разделения.

  • Мы можем заметить, что обе модели хорошо работают с точки зрения точности, отзыва и точности, оценки F1 для домашних и выездных классов, но немного мешают хорошим результатам в Drawметкой 1), и это довольно очевидно из-за большого количества ложноотрицательных результатов в Draw. > класс.
  • Можно сказать, что Random Forest работает немного лучше, чем XGBoost, поскольку имеет меньшее количество ложноотрицательных результатов.
  • Обе модели хорошо работают в тестовом сплите, но когда дело доходит до выдерживаемого тестового сплита (игры чемпионата мира), он борется со всеми классами и выглядит смещен в сторону класса 0 (домашнего класса)

Уточнение

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

  • Некоторые из проблем с данными связаны с дисбалансом, когда результаты игры смещены в сторону класса Home. (метка 0), как показано на рисунке ниже:

Балансировка данных

Мы работали над уменьшением дисбаланса между классами путем недостаточной выборки основного класса, имеющего 571выборку данных, чтобы соответствовать количеству меньшинства класса, имеющего 290 образцов.

Таким образом, все классы будут сбалансированы и будут иметь 290 выборок.

Мы переобучили модели после балансировки классов и вот результаты:

  • Мы видим, что отзыв улучшился при использовании моделей Random Forest и XGBoost после балансировки трех классов данные.
  • Мы также можем заметить, что XGBoost работает немного лучше, чем Random Forest с точки зрения меньшего количества неверных прогнозов (ложноотрицательных результатов) и большего количества. strong> настоящие положительные результаты.

Тонкая настройка и перекрестная проверка

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

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

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

Несбалансированные данные

Вот результаты, которые мы получили после точной настройки обоих классификаторов и использования перекрестной проверки с несбалансированными данными:

Это лучшие параметры, которые у нас были с GridSearchCV для классификатора случайного леса с несбалансированными данными:

лучшие параметры = {‘max_depth’: 7, ‘max_features’: ‘auto’, ‘n_estimators’: 300}

Это лучшие параметры, которые у нас были с GridSearchCV для классификатора XGBoost с несбалансированными данными:

лучшие параметры = {‘learning_rate’: 0,01, ‘max_depth’: 3, ‘n_estimators’: 100}

Сбалансированные данные

Вот результаты, которые мы получили после точной настройки обоих классификаторов и использования перекрестной проверки с сбалансированными данными:

Это лучшие параметры, которые у нас были с GridSearchCV для классификатора случайного леса со сбалансированными данными:

лучшие параметры = {‘max_depth’: 5, ‘max_features’: ‘auto’, ‘n_estimators’: 200}

Это лучшие параметры, которые у нас были с GridSearchCV для классификатора XGBoost со сбалансированными данными:

лучшие параметры = {‘learning_rate’: 0,01, ‘max_depth’: 3, ‘n_estimators’: 200}

Обоснование и сравнительный анализ

  • Благодаря балансировке набора данных обе модели улучшились с точки зрения отзыва и ложноотрицательных результатов. У XGBoost было больше улучшений, так как общая точность выросла на 4 % и достигла 86 %, в то время как у Random Forest общая точность немного снизилась стать 81 %вместо 83 % (несбалансированные данные).
  • После точной настройки и использования перекрестной проверки с несбалансированными данными мы можем заметить, что результаты немного улучшились как для классификатора случайного леса, так и для XGBoostс точки зренияточности, отзыва, оценки F1 и общей точности, особенно для класса 0 и класса 2 (Дома и В гостях). Классификатор Random Forest увеличился с 82% общей точности до 86%, а XGBoost увеличился с 82% до 88%, что является большое улучшение.
  • Точная настройка результатов сбалансированных данных оказалась хуже с точки зрения общей точности для обеих моделей. Классификатор Random Forest снизился с 81% общей точности до 77%, увеличив количество ложноотрицательных результатов. иложные срабатывания, которые повлияли на отзыви точность, особенно для класса 0,то же самое произошло с классификатором XGBoost, где общая точность упала с 86% до 79%.
  • Посмотрев на эти цифры, мы можем сделать вывод, что использование точной настройки модели для сбалансированных данных и использование перекрестной проверки ухудшает результаты для классификаторы Random Forest и XGBoost, где у нас есть ложноотрицательные и ложноположительные, особенно в >класс 0.
  • Случайный лес работает лучше с несбалансированными данными, но теряет некоторую общую точность после балансировки классов из-за потери информации.
  • XGBoost повышает производительность по сравнению с Random Forest после балансировки данных.
  • Точная настройка лучше повлияла на несбалансированные данные для обеих моделей, но всегда есть ложные срабатывания.
  • XGBoost получает окончательные кредиты с сбалансированными данными и без тонкой настройки, поскольку дает лучший общий результат. результаты.
  • Балансировка данных необходима для улучшения модели и оценки, даже несмотря на то, что мы потеряли некоторую общую точность из-за количества выборок, которые мы удалили из-за недостаточной выборки классы с наибольшим количеством образцов.
  • Использование перекрестной проверки и точной настройки даст нам более "эффективное" использование данных, поскольку каждое наблюдение используется как для обучения, так и для тестирования, но это не сработало. на сбалансированных данных в нашей ситуации, так как было больше ложноположительных и ложноотрицательных результатов, особенно в классе 0.
  • Недоработанный классификатор XGboost со сбалансированными данными до сих пор является лучшей моделью в рамках проведенных экспериментов.

Предсказания сплит-теста

Этот тестовый сплит включает прогнозы на матчи группового этапа чемпионата мира. Мы сделали наши прогнозы для игр группового этапа чемпионата мира и отфильтровали результаты игр, которые начнутся завтра, 28 ноября 2022 года.

Это результаты с использованием моделей несбалансированных данных с/без тонкой настройки и перекрестной проверки:

  • final_results_xgb: модель XGBoost, обученная на несбалансированных данных.
  • final_results_xgb_cv: модель XGBoost, обученная и настроенная на несбалансированных данных (с перекрестной проверкой).
  • final_results_rf: модель случайного леса, обученная на несбалансированных данных.
  • final_results_rf_cv: модель случайного леса, обученная и настроенная на несбалансированных данных (с перекрестной проверкой).

Это результаты с использованием моделей сбалансированных данных с тонкой настройкой и перекрестной проверкой или без них:

  • final_results_xgb_bal: модель XGBoost, обученная на сбалансированных данных (без перекрестной проверки).
  • final_results_xgb_bal_cv: модель XGBoost, обученная и настроенная на несбалансированных данных (с перекрестной проверкой).
  • final_results_rf_bal: модель случайного леса, обученная на сбалансированных данных (без перекрестной проверки).
  • final_results_rf_bal_cv: модель случайного леса, обученная и настроенная на сбалансированных данных (с перекрестной проверкой).

Некоторые из этих предсказаний кажутся реалистичными! Некоторые нет, давайте подождем и посмотрим, насколько точны эти прогнозы.

Заключение

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

Мы начали с определения проблемы и необходимых шагов для ее решения, а затем перешли к определению показателей для оценки нашей работы.

Затем этапы Исследование данных и визуализация оказались очень полезными для извлечения некоторой информации из используемых нами наборов данных.

Кроме того, мы провели несколько экспериментов для обучения, оценки и уточнения наших моделей (Random Forest, XGBoost ) с использованием разных наборов данных (сбалансированных и несбалансированных) и методов (тонкая настройка и перекрестная проверка). Некоторые из этих усовершенствований работали и приносили некоторые улучшения, а некоторые из них работали менее эффективно.

Затем мы развернули обученные модели, используя различные типы наборов данных (сбалансированные, несбалансированные), чтобы протестировать их на задержанном разделении данных.

Такая проблема очень сложна, когда исторические данные не сбалансированы и содержат много шумов, особенно когда взяв более крупные исторические разбивки наборов данных (результаты международных футбольных матчей и рейтинги ФИФА), а не только данные 2018 года.

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

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

Есть только один способ проверить, насколько точны эти модели:

НЕ ДУМАЙТЕ ГОЛОВУ И СМОТРИТЕ ЧЕМПИОНАТ МИРА ПО FIFA 2022 В КАТАРЕ!

Не стесняйтесь просматривать код в моем репозитории GitHub, и вы можете связаться со мной в LinkedIn или по электронной почте, если вам нужно что-то, связанное с этим проектом.

До встречи на более интересных темах!