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 различни стадиона в града. След това виждаме кой играч е спечелил най-много награди Играч на мача

Ab de Villers без изненада спечели най-много награди в историята на IPL, следван от Gayle и Warner.

Дотогава анализирах склонността на отборите към решения за хвърляне в IPL и открих, че в около 64% ​​от мачовете отборът е решил да играе първи. Но исках да проуча тенденцията за всяко място

Както можем да видим тук, поставянето на полето е най-избраното решение, особено в места като Мумбай и Бангалор, което показва, че е удобно за преследване. Въпреки това можем да видим, че тенденцията е друга в това, че Ченай е висок при първите решения на вата.

3. Инженеринг и избор на характеристики

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

Беше извършен корелационен анализ, за ​​да се анализира и след това функциите, които няма да помогнат при прогнозите за следващите мачове, бяха премахнати.

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

Освен това разделих наборите за обучение и тестове със 70% и 30% съответно в набори за обучение и валидиране.

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

Тъй като проблемът е категория за контролирано обучение със задача за класификация. Проучих различни класификационни алгоритми. След това използвах логистична регресия, опорни векторни машини, произволни гори и решение Tress за обучение на модела.

Support Vector Machines превъзхожда всички модели със 73% точност на обучение и 57% точност на тестване

5. Извършване на хиперпараметрична настройка на най-добрия модел

Настройката на хиперпараметри е процес на избор на оптимален набор от хиперпараметри за алгоритъм за машинно обучение, за да се подобри неговата производителност върху даден набор от данни. Хиперпараметрите са параметри, които не се научават по време на процеса на обучение, а вместо това се задават преди началото на обучението.

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

Използвах GridSearchCv за извършване на настройка на хиперпараметър. Той взема набор от хиперпараметри и техните възможни стойности и ги оценява с помощта на кръстосано валидиране, за да определи коя комбинация от хиперпараметри произвежда най-добрата производителност на модела.

6. Оценете най-добрия модел в комплекта за тестване

Сега идва по-сложната част да прогнозирате резултатите от новите мачове. За целта заредих данните, които подготвих от игра 41 до 70, включително нокаута, и извърших същото кодиране върху това, за да извлека към моя модел.

Сблъсках се с предизвикателства в това, тъй като моделът не е виждал тестовите данни и в него имаше по-малък брой категории в сравнение с данните за обучение. По този начин трябваше да го направя в съответствие с данните за обучението, за да накарам модела да предскаже резултатите от играта.

След това въведох данни от всички мачове от лигата и Vola, имах резултатите от прогнозите за всеки мач от лигата!

На този етап имам резултати от прогнози за всички мачове от фазата на лигата. Използвах тези резултати заедно с данните от таблицата с точки в момента (до мач номер 40), за да идентифицирам първите 4 отбора.

4-те отбора, които стигнаха до мачовете на елиминациите, са

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

IPL следва долупосочените мачове за своите нокаут игри. Участниците в дадена игра се прогнозират въз основа на победителя от предишна игра, следователно трябваше да правя прогнози за всяка игра

Въведох данните, които имам за игра от Квалификатор 1 (Място, Отбор 1 и Отбор 2) и помолих моя модел да предвиди победителя

След това изпълних същата задача за играта 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