Абстрактный

Используя историческую статистику боев с UFCStats.com и данные о подсчете очков с MMADecisions.com, я создал многомерную модель линейной регрессии, которая принимает данные о боях (удары, тейкдауны, попытки сдачи, контрольное время, д.) и предсказывает счет боя. В дополнение к оценке точности модели для предсказания правильного счета, я также оценил способность модели правильно выбрать бойца-победителя. После тестирования нескольких различных алгоритмов я остановился на LinearRegressor из Sci-Kit Learn для своей модели многомерной линейной регрессии. При прогнозировании результатов боя модель вернула R-квадрат 0,7168. Модель предсказала правильного победителя боя с точностью примерно 85,5%.

Эту модель можно использовать для понимания того, как судьи (и СМИ) оценивают бои. Какая статистика боев оказывает наибольшее влияние на решения по начислению очков? Как общее количество ударов, значимых ударов, статистика борьбы и контрольное время влияют на решения судей? UFC установила критерии судейства, и результаты моделей показывают, что эти критерии в основном соблюдаются. Но, возможно, некоторые судьи с течением времени больше придерживались этой модели, чем другие. Эту модель можно использовать для оценки работы отдельных судей с течением времени, а также для изучения того, как изменения в правилах и критериях подсчета очков влияют на стили ведения боя и на подсчет очков.

Посетите мой репозиторий GitHub для получения всего кода проекта и презентационных материалов.

Смотрите мои видео презентация проекта и обзор кода на моем канале YouTube.

Критерии подсчета очков UFC

Судьи присуждают 10 баллов победителю раунда и 9 баллов проигравшему раунду. В случаях особенно серьезного несоответствия результатов проигравший раунд может получить только 8 очков. Раньше это было редкостью, но недавние изменения сделали на 10–8 раундов более распространенным явлением. В конце боя добавляются очки по раундам, и боец, набравший наибольшее количество очков у данного судьи, получает голос этого судьи. Побеждает боец, набравший наибольшее количество голосов трех судей. UFC предлагает следующую иерархию для определения победителя одного раунда:

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

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

3. Эффективный контроль зоны боя. Окончательным критерием для определения победителя раунда, если нет явного победителя в ударах/борьбе или агрессии, является контроль зоны боя. Это включает в себя ускорение темпа боя и контроль области боя (например, удержание противника у забора).

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

Данные, используемые в модели

Данные взяты с сайтов UFCStats.com и MMADecisions.com. Я извлек все доступные данные UFCStats.com, начиная с 1997 года. Я извлек данные о решениях с MMADecisions.com для всех боев с 1 января 2010 года по 31 мая 2021 года. Таким образом, данные для регрессионной модели включают все бои UFC. с января 2010 г. по май 2021 г., для которых данные о решениях были доступны на MMADecisions.com. Если бой заканчивается нокаутом или болевым приемом, данные судейства не отслеживаются на MMADecisions.com.

В конечном счете, мой набор данных включает 2258 боев. Для каждого боя я собирал статистику боев по раундам. Для статистики каждого боя я рассчитал несоответствие между бойцами, чтобы передать их в модель. Например, если Боец 1 нанес 10 ударов в голову, а Боец 2 нанес 5 ударов в голову за раунд, "Значительная разница в ударах головой" будет равна 5 дляБоец 1. и -5 для Боец 2.

Следующие боевые показатели были включены до сокращения функций:

  • Разница в нокдауне — нокдаун происходит, когда боец ​​падает на землю после удара.
  • Значительная разница в ударах головой
  • Значительное несоответствие ударов по корпусу
  • Значительная разница в ударах ногой
  • Значительная разница в количестве ударов на расстоянии. Удар «на расстоянии» относится к удару, нанесенному, когда бойцы стоят, а не в положении клинча.
  • Значительная разница в количестве ударов в клинч. «Удар в клинч» относится к удару, нанесенному, когда бойцы находятся в положении клинча.
  • Значительная разница в нанесении ударов по земле. «Нанесение ударов по земле» означает нанесение удара, когда бойцы находятся на земле.
  • Значительное несоответствие предупреждений
  • Несоответствие общего количества забастовок
  • Несоответствие общего количества предупреждений
  • Несоответствие результатов удаления
  • Попытки удаления
  • Попытка несоответствия в представленных материалах
  • Несоответствие реверсов — «реверсирование» происходит, когда боец, управляемый на земле, меняет направление подчинения и получает контроль.
  • Несоответствие времени контроля — «Контролируемое время» означает количество секунд, в течение которых боец ​​​​удерживает контролируемое положение на земле.

Приведенная выше статистика боев была отправной точкой для независимых переменных регрессионной модели. Некоторые из них были урезаны в процессе выбора функций, который проводился в основном путем проверки корреляций и фактора увеличения дисперсии. Зависимая переменная, или оценка боя, была основана на данных MMADecisions.com. Вместо того, чтобы использовать только данные судей, я создал объединенный средний балл боя, используя все доступные данные оценок судей и средств массовой информации. На бой приходится всего 3 судьи, и их решения часто подвергаются резкой критике. Во многих случаях боевые СМИ более осведомлены, чем судьи боев. Включение дополнительных баллов для более надежной зависимой переменной.

Сбор и хранение данных

Код веб-скрапинга и хранения данных можно найти на мой GitHub здесь.

Все данные, использованные в модели, были получены с помощью библиотеки веб-скрапинга Scrapy. Scrapy — это объектно-ориентированный веб-скрейпер. При инициализации проекта Scrapy создается пакет модулей, которые работают вместе для извлечения и хранения данных из Интернета.

Большую часть работы выполняют классы пауков. Каждый из моих пауков выполняет отдельную функцию веб-скрейпинга. Я создал PerformanceSpider, который очищает UFCStats.com. Этот паук собирает показатели боя по раундам для каждого боя, а также информацию о каждом событии (местоположение, дата и т. д.). Я также создал FighterSpider, который очищает информационные страницы бойцов на UFCStats.com. Наконец, я создал DecisionSpider, который очищает MMADecisions.com. Этот последний скребок находит соответствующий бой, который был сохранен в базе данных FighterSpider, а затем сохраняет информацию, связанную с подсчетом очков.

Пакет Scrapy напрямую связывается с моей базой данных PostgreSQL с помощью библиотеки SQL Alchemy. Для обучения и тестирования модели данные запрашивались из базы данных с помощью SQL Alchemy.

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

Построение модели

Код регрессионного моделирования и оценки можно найти на мой GitHub здесь.

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

Код разработки функций и сокращения можно найти на моем GitHub в Записной книжке для подготовки данных.

Прежде чем построить регрессионную модель, мне сначала нужно было спроектировать соответствующие функции и устранить коллинеарность за счет уменьшения количества функций. Как подробно описано в разделе Данные выше, все функции были преобразованы таким образом, чтобы каждая из независимых переменных представляла несоответствие между Боец 1 и Боец 2 за каждую статистику боя. Я также создал единую зависимую переменную, которая объединила все доступные оценки судей и СМИ в единую общую среднюю оценку.

Чтобы исследовать сокращение функций, я сначала создал тепловую карту корреляции, как показано ниже. Тепловая карта показывает, например, что попытки тейкдаунов (takedown_att_disparity) и успешные тейкдауны (takedown_land_disparity) имеют умеренно отрицательную корреляцию с наиболее яркими статистическими данными, особенно с ударами на значительном расстоянии (sig_dist_land_disparity). Это интуитивно понятно, потому что боец, который проводит гораздо больше тейкдаунов, чем его противник, с меньшей вероятностью будет сосредоточен на ударах, особенно на расстоянии, а не в клинче или в партере.

Изучение тепловой карты, хотя и является информативным, не особенно действенно. Лучший способ определить, какие переменные следует отбросить, — это использовать коэффициент инфляции дисперсии (VIF), который является отличным инструментом для определения мультиколлинеарности в регрессионной модели. Я импортировал и запустил variance_inflation_factor из библиотеки statsmodels, что помогло мне найти функции, которые сильно коррелировали и отрицательно влияли на производительность модели. При первом запуске VIF шесть функций вернули VIF бесконечности. После удаления коллинеарных функций с помощью тепловой карты Seaborn мой второй запуск вернул VIF ниже 5,0 (типичный эталон) для всех функций. См. ниже два запуска VIF.

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

Поезд-тестовый сплит

Вместо того, чтобы использовать встроенную функцию разделения обучения и тестирования от Sci-kit Learn, я выбрал разделение на основе времени. Вместо того, чтобы разбивать случайным образом, это разделяет наблюдения в зависимости от даты боя. Это гарантирует, что запись базы данных для бойца 1 и бойца 2 для данного боя будет в одном и том же наборе данных (тренировочном или тестовом). Это позволяет сравнивать прогнозируемый счет для каждого бойца и объявлять победителя на основе более высокого из двух прогнозируемых результатов.

В дополнение к более разумной методологии прогнозирования победителя, разделение по времени позволяет избежать других проблем, которые могут возникнуть при включении одной половины боя в набор данных для обучения, а другой половины в набор данных для тестирования. Природа данных такова, что Боец 1 и Боец 2 являются зеркальным отображением друг друга, поскольку каждая независимая переменная отражает разницу между Боец 1. > и Боец 2. Включение Боец 1 в тренировочные данные и использование его для прогнозирования Боец 2 в данных тестирования было бы неправильным методом.

Проверка и тестирование регрессионной модели

Я протестировал каждую комбинацию моделей и данных, как указано в таблице ниже. В конечном итоге ни одна из корректировок данных или моделей не обеспечила значительного повышения производительности простой модели Sci-Kit Learn LinearRegressor с использованием неизмененных данных. Нормализация, стандартизация и регуляризация оказали минимальное влияние на R-Squared. Кроме того, SGDRegressor (стохастический градиентный спуск) и RandomForestRegressor работают очень похоже на LinearRegressor. Все модели прошли перекрестную проверку с 5-кратным повторением.

Выбор модели и производительность

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

Вы заметите, что эти функции хорошо соответствуют установленным критериям оценки. Первый критерий в иерархии судейства — «Эффективные удары и борьба». Это может быть представлено значимыми ударами и тейкдаунами, двумя наиболее важными характеристиками модели. Следующими по важности функциями являются Control Time Disparity и Knockdowns Disparity. Каждый из них можно интерпретировать как способствующий «эффективной агрессии», а несоответствие времени контроля, очевидно, напрямую связано с «эффективным контролем зоны боя».

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

При прогнозировании результатов боя модель вернула R-квадрат 0,7168. На точность модели влияет способ подсчета очков. Типичный раунд оценивается 10–9. Большинство боев состоят из трех раундов, а это означает, что ближайший счет в типичном бою будет 29–28. Это соответствует 9,66–9,33 за раунд. Как видно на графике «Прогнозируемый и фактический счет за раунд» ниже, между ними существует пропасть. 9,33 и 9,66 в фактическом счете за раунд. Между тем, в прогнозируемом счете за раунд нет такой пропасти, как определено регрессионной моделью. На самом деле, эта конкретная проблема определения победителя по раундам может лучше подходить для логистической регрессии, чем для линейной регрессии.

Из-за этого недостатка в интерпретации R-Squared я предпочитаю оценивать модель на основе ее способности предсказывать победителя боя. Модель правильно определила победителя с точностью примерно 85,5 %. Как показано ниже, модель имеет тенденцию правильно определять победителя, когда фактическая оценка за раунд и прогнозируемая оценка за раунд находятся на одной стороне от 9,5 очков за раунд.

Где модель терпит неудачу

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

Будущие разработки моделей UFC

Есть несколько интересных направлений использования этих данных. Во-первых, эту регрессионную модель можно настроить для повышения производительности. Наиболее очевидным улучшением модели будет попытка построить модель, которая определяет победителей для каждого раунда. Будут проблемы, прежде всего потому, что данные о подсчете очков по раундам менее полны, чем полные данные о подсчете очков на MMADecisions.com. Также стоит изучить логистическую регрессию для каждого раунда, чтобы определить победителя каждого раунда. Даже применение модели линейной регрессии к отдельным раундам, а не ко всему бою, вероятно, повысит точность предсказания победителя, поскольку это больше соответствует тому, как судьи фактически оценивают бой. Но логистическая регрессия может еще больше повысить точность.

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

Наконец, я намерен использовать созданный мной конвейер данных для создания новых моделей и изучения новых тем в UFC. Первым из этих новых проектов будет изучение стилей бойцов. Я планирую использовать статистику бойца и методы обучения без присмотра, чтобы группировать бойцов по их разным стилям. Затем я могу оценить, что происходит, когда разные стили встречаются в восьмиугольнике. Какие стили, как правило, выигрывают у других? В каких стилях происходят самые захватывающие бои?

Оставайтесь с нами для будущих сообщений, объединяющих мою страсть к ММА и машинному обучению! Пишите любые идеи, вопросы или критические замечания в комментариях.