Я применил методы машинного обучения для UFC и вот, что из этого получилось
А получилось у меня сделать целый сайт, где можно все это протестировать!
Приветствую всех в моем блоге! Давно я здесь ничего не публиковал, но в свое оправдание могу сказать, что я не пинал балду, а занимался своим проектом. Я самостоятельно сделал сайт - приложение sporres.io, где автоматически формируется статистический отчет о противостоянии бойцов UFC. На данный момент он бесплатный, не имеет мобильной версии и нуждается в вашем тестировании. Ах да, чтобы получить доступ к приложению, все же придется зарегистрироваться.
Что представляет из себя приложение и причем тут машинное обучение?
После максимально простой регистрации
и входа под своим ником
вы получите доступ к вкладке Report («Отчет»)
Зайдя по ссылке, вы сможете выбрать двух бойцов
Сформированный отчет состоит из 4 частей.
1. History («История»). Раздел, где хранится вся история встреч бойца. Только в UFC, никаких других промоушенов.
2. Average Data («Средние значения»). Раздел, где отображаются общие статистические показатели бойца.
3. K Nearest Neighbors («Метод ближайших соседей»). Раздел с результатами применения методов машинного обучения
4. Probability («Вероятность»). Раздел, где отображается вероятность победы по определенному показателю за раунд и общая вероятность победы.
History («История»)
Самый простой раздел, включающий в себя историю встреч выбранного бойца.
1. Results («Результаты»). Сводная таблица с итогами встреч, без имен.
2. Last 5 results («Последние 5 результатов»). Краткое содержание последних 5 поединков бойца.
3. Fighter и Opponent («Боец» и «Противник»). Детальная информация о показателях бойца и его оппонентов.
Обозначения показателей, которые будут использоваться в дальнейшем.
1. KD/KO – нокдауны и нокауты
2. Acc_sig_str – точные акцентированные удары
3. Sig_str – акцентированные удары
4. Acc_ttl_str – точные удары
5. Ttl_str – удары всего
6. Acc_td – успешные тейкдауны
7. TD – тейкдауны всего
8. Sub_att – попытка сабмишена
9. Rev – перевороты в партере
10. Ctrl – контроль в партере (в секундах)
11. Acc_head – успешные удары в голову
12. Head – удары в голову всего
13. Acc_body – успешные удары в корпус
14. Body – удары в корпус
15. Acc_leg – успешные удары по ногам
16. Leg – удары по ногам
17. Acc_distance – успешные удары на дистанции
18. Distance – удары на дистанции
19. Acc_clinch – успешные удары в клинче
20. Clinch – удары в клинче
21. Acc_ground – успешные удары в пертере
22. Ground – удары в партере
23. Seconds – время раунда (в секундах)
Average Data («Средние показатели»)
Раздел немного сложнее. Включает такие статистические показатели как средневзвешенные значения, процентные распределения и коэф. корреляции Пирсона.
1. Лепестковая (радиальная) диаграмма или знакомая всем любителям виртуального футбола, как «Радар футболиста». Помогает сравнивать ключевые показатели бойцов между собой. Это относительные показатели, построенные на основе показателей всех бойцов UFC. Абсолютные же значения представлены в таблицах ниже. Ах да, PAAS – это защита от акцентированных ударов (она же ZOAU в таблицах), PATD – это защита от тейкдаунов (она же ZOTD в таблицах), PASA – это защита от попыток сабмишена (он же ZOPS)
2. Таблица Atack – Defence ( «Атака» – «Защита»). Таблица со средневзвешенными показателями за один раунд у бойца. Проще говоря, это средние показатели за раунд. Атака – это показатели самого бойца, защита – показатели его оппонентов. То есть Max Holloway в среднем набирает за раунд 28.92 судейских бала, а его соперники 28.32 балла и т.д.
3. Strikes («Удары») – график показывает среднее значение по раундам, которые боец наносит противнику, а в небольшой таблице находятся коэффициенты. Как понятно из названий, коэффициенты показывают сколько приходится ударов на один нокдаун у бойца, и у его противников. Если данных нет, то скорее всего нет данных о нокдаунах.
4. Takedowns («Тейкдайны») – график показывает среднее количество тейкдаунов по раундам, которые проводил боец. Таблица показывает сколько тейкдаунов приходится, на одну попытку сабмишена.
5. Correlation matrix («Корреляционная матрица») – матрица содержащая коэф. Пирсона. Если простым языком, то чем ближе к единице, тем выше зависимость между показателями (если стремится к минус 1, то зависимость обратная). Например, мы видим, что у Holloway высокая зависимость между показателями Points (набранные очки) и Acc_sig_str (точные акцентированные удары), а также между Points и ZOAU (защита от акцентированных ударов). То есть можно сделать предположение, что боец предпочитает набирать очки за счет ударов, а не тейкдаунов или сабмишенов. Помним, что Defence = Opponents. То есть показатели противников. У них зависимость еще выше. То есть противники тоже в основном набирали очки за счет ударов.
6. Punches based on position («Удары распределенные по позиции») и Punches based on target ( «Удары распределенные по цели»). Таблицы показывают распределение и точность ударов исходя из позиции и цели бойца. Легко можно определить, куда предпочитает наносить удары боец и его противники. Например, видно, что почти четверть ударов (23,1%) оппоненты Holloway наносили по ногам. В тоже время, сам Holloway предпочитает бить либо в голову, либо в корпус.
K Nearest Neighbors («Метод ближайших соседей»)
Вот мы и добрались до вероятной причины, почему вы открыли эту статью. Машинное обучение.
1. Nearest neighbors ( «Ближайшие соседи»). Я немного видоизменил «метод ближайших соседей», и теперь он выводит в таблицу сотню наиболее похожих бойцов (включая самого бойца), т.е. так называемых «соседей». Далее алгоритм ищет совпадения, встречались ли раньше «сотня соседей» бойца и «сотня соседей» оппонента. Если да, то выводится таблица History of meetings c кратким описанием таких встреч и результатами. В таблице General details of meeting (основные детали встреч) отображаются детали этих встреч. Специально для тех, кого они заинтересуют. А в таблице Results between fighters итоговое распределение побед и поражений в процентах.
2. Таблица Results between classes ( «Результаты между классами»). Это результат применения уже другого метода машинного обучения, а именно метода под названием “Метод К-средних». Согласно этому методу все бойцы были поделены на 4 группы. Далее я написал алгоритм, который посчитал соотношение побед, поражений и ничьих между этими группами и вывел все в одну таблицу. С этой таблицей вы можете посмотреть, к какой группе относится боец и его будущей противник, и как эти группы «чувствуют» себя при встречах.
Probability («Вероятность»)
Еще одна сложная тема в реализации, но которой я очень горжусь.
Это улучшенная версия алгоритма, о котором шла речь раньше в моем блоге. Здесь отображается 8 ключевых показателей, которые оценивают судьи, и которые я смог вывести из истории встреч бойцов (из раздела History).
Говоря научным языком, это алгоритм бинарной классификации, чья точность (accuracy) на выборке в 2500 объектов оказалась равной 69,96%.
Говоря не научным языком, на основании предыдущих встреч алгоритм считает вероятность лидерства в ключевых показателях по раундам и общее значение. Далее общая вероятность складывается без изменений (я еще не придумал, как подобрать правильно веса) и выдается общее значение Win Probability («Вероятность победы»).
Например, основываясь на предыдущих встречах, вероятность того, что Max Holloway одержит победу против Chan Sung Jung («Корейский зомби») составит порядка 56%.
Посмотрим на каждый показатель в отдельности. Например, точные удары (sig. Strikes). Мы видим, общая вероятность того, что Holloway окажется лидером по количеству акцентированных ударов составляет 64%. Если рассматривать вероятность по раундам, то видим, что очень большая вероятность того, что в 4 и 5 раунда Holloway нанесет ударов больше. Связано это с предыдущими поединками двух этих бойцов. Либо Корейский зомби в этих раундах проседал, либо Holloway очень сильно прибавлял.
При этом, нужно понимать, что данные в таблице представлены таким образом, что вероятность по раундам, показывает только вероятность в ЭТОМ КОНКРЕТНОМ РАУНДЕ. Не нужно считать среднюю вероятность по раундам. С общей вероятностью она не имеет ничего общего. Рассматривайте вероятность по раундам, ТОЛЬКО ДЛЯ ЭТОГО, КОНКРЕТНОГО РАУНДА!
В целом, алгоритм классификации уже показывает результаты лучше, чем, например, этот зарубежный «эксперт» для которого UFC – это ежедневная работа. И это учитывая бОльшую выборку.
У алгоритма есть как свои плюсы, так и свои минусы (например, код неоптимизирован и считает очень долго). У меня уже есть идеи как их нивелировать, а пока, заходите на сайт, тестируйте, давайте обратную связь. Я буду работать над его улучшением.