IPL, одно из самых известных событий по крикету в мире, которое собирает более 400 миллионов зрителей по всему миру, оказалось одним из мега-событий.

IPL 2023 находится в самом разгаре на середине этапа лиги, таблица очков сбалансирована, и команды стремятся к 4 лучшим местам. В этом сезоне мы были свидетелями некоторых нервных финишей. Когда я пишу это, у меня уже 40 завершенных матчей и еще 30, и сейчас у всех на уме вопрос: «Кто выиграет IPL 2023?»

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

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

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

Данные

Данные за 2008–2022 годы я взял здесь. Однако данные за сезон 2023 года до 40-го матча пришлось брать с сайта Cricbuzz. Я вручную создал рабочий лист для заполнения всех столбцов, данные которых присутствовали на нескольких веб-страницах. А также созданы тестовые данные для предстоящих матчей.

Я шаг за шагом следовал общему рабочему процессу машинного обучения:

  1. Очистка и форматирование данных.
  2. Исследовательский анализ данных.
  3. Особенности проектирования и выбора.
  4. Сравните несколько моделей машинного обучения по показателю производительности.
  5. Выполните настройку гиперпараметров на лучшей модели.
  6. Оцените лучшую модель на тестовом наборе.
  7. Интерпретируйте результаты модели.
  8. Сделайте выводы и задокументируйте работу.

Где код?

Без лишних слов приступим. Полный проект на Kaggle можно найти здесь.

Я начал с загрузки данных csv из Kaggle, а также данных, которые я подготовил. Вот снимок данных

1. Очистка и форматирование данных

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

2. Исследовательский анализ данных

Следующим шагом было изучение данных и получение некоторых идей.

Я начал с получения сведений о победителях предыдущего сезона. (Чтобы убедиться, что все правильно)

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

Как мы можем сказать, индейцы Мумбаи находятся на самом высоком месте. Одна вещь, которую я заметил здесь, заключалась в том, что новые названия команд не обновляются в данных (мы можем видеть Sunrisers Hyderabad и Deccan Charges, которые являются одной и той же командой, переименованной). Поэтому я исправил это, прежде чем продолжить.

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

В Мумбаи было проведено наибольшее количество матчей на 3 разных стадионах города. Далее мы видим, кто из игроков получил наибольшее количество наград Player of the Match.

Аб де Виллерс, что неудивительно, получил наибольшее количество наград в истории IPL, за ним следуют Гейл и Уорнер.

В то время я проанализировал склонность команд к решениям о жеребьевке в IPL и обнаружил, что примерно в 64% матчей команда решает выйти на поле первой. Но я хотел изучить тенденцию для каждого места проведения.

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

3. Разработка и выбор функций

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

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

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

Кроме того, я разделил обучающие и тестовые наборы на 70 % и 30 % на обучающий и проверочный наборы соответственно.

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

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

Машины опорных векторов превзошли все модели с точностью обучения 73% и точностью тестирования 57%.

5. Выполнение настройки гиперпараметров на лучшей модели

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

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

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

6. Оцените лучшую модель на тестовом наборе

Теперь самое сложное — предсказать результаты новых матчей. Для этого я загрузил данные, подготовленные для игр с 41 по 70, включая нокаут, и выполнил такое же кодирование, чтобы получить их в свою модель.

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

Затем я ввел данные обо всех матчах лиги и, Вола, у меня были результаты прогнозов для каждого матча лиги!

На данном этапе у меня есть результаты прогнозов на все матчи этапа лиги. Я использовал эти результаты вместе с данными таблицы очков в настоящее время (до 40-го матча), чтобы определить 4 лучшие команды.

4 команды, которые вышли в плей-офф:

  1. Гуджарат Тайтанс -18 очков
  2. Ченнаи Суперкингс – 18 очков
  3. Раджастхан Роялс-16 очков
  4. Лакхнау СуперДжайентс – 16 очков

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

Я ввел данные, которые у меня есть для игры Qualifier 1 (Место проведения, Team1 и Team2), и попросил свою модель предсказать победителя.

Затем я выполнил ту же задачу для игр Eliminator и Qualifier 2, чтобы предсказать другого финалиста.

Вот два финалиста: Rajasthan Royals и Chennai Superkings.

Затем модель предсказала победителя финальной игры.

Согласно этой модели, Rajasthan Royals, скорее всего, выиграет IPL 2023.

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

Область улучшения:

  1. Эта модель имеет точность тестирования 57%, которую можно улучшить с помощью других методов. Находить результаты нескольких матчей было грустно (особенно будучи фанатом RCB)
  2. Можно добавить больше данных, которые помогут модели делать более точные прогнозы.
  3. Можно провести дальнейший анализ, чтобы понять, в чем модель ошибается, и попытаться исправить это.
  4. Можно изучить альтернативный метод кодирования, который хорошо подходит для этих данных.

Любые предложения/улучшения приветствуются!

Ваше здоровье!

Адитья Бхарадвадж

Рекомендации

  1. https://towardsdatascience.com/icc-2019-cricket-world-cup-prediction-using-machine-learning-7c42d848ace1
  2. https://towardsdatascience.com/lstm-recurrent-neural-networks-how-to-teach-a-network-to-remember-the-past-55e54c2ff22e