Введение

Мы будем смотреть матчи Премьер-лиги и прогнозировать, будет ли игра больше или меньше 2,5 голов. Мы выбрали футбол, потому что в большинстве случаев это игра с довольно низкими показателями, при этом английская Премьер-лига является одной из лиг с самыми низкими показателями результативности, в среднем чуть выше 2,5 гола. Еще одна причина выбора EPL заключалась в ее конкурентоспособности: команды часто соревнуются за выход в квалификацию Лиги чемпионов и Лиги Европы, а также за то, чтобы не попасть в зону вылета вплоть до конца сезона.

Данные

Для построения наших прогнозных моделей мы использовали данные с сезона 2014 года по сезон 2018 года. Чтобы получить больше возможностей для прогнозирования, мы объединили два разных набора данных для каждого сезона. Один содержит статистику команды и матча, а другой - данные о ставках.

Исходный уровень

Чтобы установить базовый уровень, мы просто взяли класс большинства из двух результатов; 1 больше 2,5 и 0 меньше 2,5. Как видно, количество игр с превышением и менее 2,5 голов достаточно равномерное. Это означает, что наша базовая модель в основном предсказывает, что каждая игра будет забивать более 2,5 голов, и имеет точность 51,8%.

Подход

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

Модели

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

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

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

Результаты

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

Чтобы улучшить показатели точности, мы выбрали функции, которые положительно повлияли на модели; модель XGBoost Classifier показала лучший результат в 60%. Чтобы представить результаты в перспективе, вот матрица путаницы, показывающая набор данных тестирования. Он показывает все прогнозы, которые были сделаны, и какие из них были правильными и неправильными.

Вывод

Нам удалось создать модель, которая превзошла бы базовую модель. Чтобы достичь такой высокой точности, нам пришлось сначала выбрать лучшие функции, а затем точно настроить параметры в модели XGBoost Classifier.

Теперь вопрос в том, насколько прибыльна эта модель? Чтобы выяснить это, мы провели дополнительный анализ данных нашего тестирования, чтобы увидеть, как они соотносятся с фактическими коэффициентами ставок. Для этого мы просто делаем ставку на прогнозируемый результат каждой игры в сезоне 2018 года (380) и сравниваем его с базовой моделью основного класса, у которой показатель точности составил 53%. В конце сезона базовый общий убыток от прибыли составил -1462 доллара, а модель классификатора XGBoost достигла прибыли в 1222 доллара, что составляет значительную разницу в размере около 2000 долларов при повышении точности на 7%. Стоит отметить, что в последнем квартале сезона обе модели, изображенные на графике ниже, начали демонстрировать отрицательную динамику. Это может быть связано с тем, что по мере прохождения сезона рынок спортивных ставок становится более эффективным из-за большей доступности данных, что фактически затрудняет победу над букмекерскими конторами.

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

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Блокнот Github: https://github.com/eduardopadilla3/Unit2_BW_code/blob/master/Unit2project.ipynb