IPL, одно из самых известных событий по крикету в мире, которое собирает более 400 миллионов зрителей по всему миру, оказалось одним из мега-событий.
IPL 2023 находится в самом разгаре на середине этапа лиги, таблица очков сбалансирована, и команды стремятся к 4 лучшим местам. В этом сезоне мы были свидетелями некоторых нервных финишей. Когда я пишу это, у меня уже 40 завершенных матчей и еще 30, и сейчас у всех на уме вопрос: «Кто выиграет IPL 2023?»
Я собирался использовать машинное обучение для прогнозирования чемпионов этого года в начале сезона, но из-за непредвиденных обстоятельств задача была отложена примерно до середины турнира. В этот момент я принял решение использовать данные, чтобы попытаться спрогнозировать результаты последующих игр.
Итак, приготовьтесь, я провожу вас в путешествие, чтобы предсказать, кто станет коронованным чемпионом в этом году.
Отказ от ответственности: обратите внимание, что вы не должны использовать эти результаты для размещения ставок. Я создал это как простое математическое упражнение, чтобы лучше понять возможности машинного обучения и мою страсть к игре.
Данные
Данные за 2008–2022 годы я взял здесь. Однако данные за сезон 2023 года до 40-го матча пришлось брать с сайта Cricbuzz. Я вручную создал рабочий лист для заполнения всех столбцов, данные которых присутствовали на нескольких веб-страницах. А также созданы тестовые данные для предстоящих матчей.
Я шаг за шагом следовал общему рабочему процессу машинного обучения:
- Очистка и форматирование данных.
- Исследовательский анализ данных.
- Особенности проектирования и выбора.
- Сравните несколько моделей машинного обучения по показателю производительности.
- Выполните настройку гиперпараметров на лучшей модели.
- Оцените лучшую модель на тестовом наборе.
- Интерпретируйте результаты модели.
- Сделайте выводы и задокументируйте работу.
Где код?
Без лишних слов приступим. Полный проект на 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 команды, которые вышли в плей-офф:
- Гуджарат Тайтанс -18 очков
- Ченнаи Суперкингс – 18 очков
- Раджастхан Роялс-16 очков
- Лакхнау СуперДжайентс – 16 очков
IPL следит за приведенными ниже показателями своих игр на выбывание. Участники игры предсказываются на основе победителя предыдущей игры, поэтому мне приходилось делать прогнозы для каждой игры.
Я ввел данные, которые у меня есть для игры Qualifier 1 (Место проведения, Team1 и Team2), и попросил свою модель предсказать победителя.
Затем я выполнил ту же задачу для игр Eliminator и Qualifier 2, чтобы предсказать другого финалиста.
Вот два финалиста: Rajasthan Royals и Chennai Superkings.
Затем модель предсказала победителя финальной игры.
Согласно этой модели, Rajasthan Royals, скорее всего, выиграет IPL 2023.
Эта статья и проект представляют собой демонстрацию того, как машинное обучение можно использовать для прогнозирования исхода результатов в спортивной сфере. Тем не менее, в этом проекте сделано много предположений, это была моя попытка объединить мою страсть к данным и крикету.
Область улучшения:
- Эта модель имеет точность тестирования 57%, которую можно улучшить с помощью других методов. Находить результаты нескольких матчей было грустно (особенно будучи фанатом RCB)
- Можно добавить больше данных, которые помогут модели делать более точные прогнозы.
- Можно провести дальнейший анализ, чтобы понять, в чем модель ошибается, и попытаться исправить это.
- Можно изучить альтернативный метод кодирования, который хорошо подходит для этих данных.
Любые предложения/улучшения приветствуются!
Ваше здоровье!
Адитья Бхарадвадж
Рекомендации