Прогнозирование победителей в велогонках с помощью машинного обучения

С точностью 95% мы можем использовать данные об эффективности, чтобы предсказать, какие спортсмены выйдут на подиум

Немного контекста

В начале 2020 года я решил вернуться к любительским велогонкам спустя более десяти лет. Но на этот раз все было иначе. Я впервые участвую в гонках в Соединенных Штатах, и в лучшей форме, чем когда я был подростком.

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

Как это типично для меня, я не переставал думать об этом и сразу же проверял имя каждого участника и искал их информацию. Затем я обнаружил, что USA Cycling (американский руководящий орган велосипедных гонок) имеет историю всех гонок и спортсменов, включая любителей и профессионалов. Бинго!

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

Первая версия - Анализ гоночного поля

Я провел несколько предварительных тестов и проанализировал данные спортсмена, и результаты мне понравились. Проведя первые тесты на языке R, я понял, что результаты могут принести мне конкурентные преимущества. Я упомянул об этом некоторым из моих товарищей по велосипедной команде, и все они ответили одинаково: как я могу получить доступ к этой информации?

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

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

Первая версия инструмента доступна на http://racedata.bike. С помощью этого инструмента можно проанализировать все гонки и категории велоспорта в США, включая шоссейные, горные велосипеды, гравийные, трековые, велокроссовые и т. Д.

Как только мои товарищи по команде начали использовать этот инструмент, было весело видеть всевозможные результаты:

«Бруно выбил победителя 55+ 1/2/3… полное поле из 60 гонщиков. Согласно приложению Бруно, у 42 старых парней были товарищи по команде, но у «фаворита», нового 55-летнего Тома Лайонса не было товарищей по команде на бумаге, но ему очень помогали его старые товарищи по команде Thirsty Bear ». Ларри

«К счастью для нас, предсказатель расы Бруно был не так точен для трех женщин :)» Дженн

Во всех случаях я был доволен результатами и тем, как инструмент помог команде. Даже с неточными результатами (как в случае с Дженн) было забавно видеть комментарии товарищей по команде, в которых говорилось: «Я нарушил ваш алгоритм, Бруно!» Фактически, с помощью машинного обучения алгоритм собирает больше информации о спортсмене на каждой гонке. Следовательно, в следующей гонке этот спортсмен будет иметь лучшую позицию в прогнозе, и алгоритм будет более точным.

COVID-19

Как только я выпустил первую бета-версию инструмента, разразился Covid-19, и весь мир пострадал от последствий пандемии и приказов о предоставлении убежища на месте. Наряду с большинством групповых мероприятий отменены все гонки.

Но спортсмены не прекращали тренироваться. Собственно, велоспорт никогда не рос так сильно, как в 2020 году. Из-за своей жажды соревнований велосипедисты нашли решение на виртуальных тренировочных платформах.

Zwift

Zwift, без сомнения, самая известная виртуальная платформа на сегодняшний день с наибольшим количеством пользователей. По сути, Zwift - это многопользовательская игра, в которой вы подключаете свой велосипед к компьютеру. Когда вы тренируетесь на велосипеде, ваш аватар движется в виртуальной гонке. Это большая эволюция тренировок в помещении. То, что раньше было скучным и однообразным, теперь стало динамичным и суперсоревновательным. И угадай что? Ежедневно проходят гонки со спортсменами со всего мира. Бинго!

Вторая версия - ZRace

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

Так родилась ZRace: инструмент, разработанный для гонок Zwift, где спортсмены могут анализировать, какая раса и категория лучше всего подходят их профилю, и получают конкурентное преимущество.

Доступ к инструменту можно получить по этой ссылке: http://zrace.bike

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

Как и первая версия, разработанная для не виртуальных гонок, ZRace выполняет анализ и прогнозирование победителей. Однако благодаря большому количеству дополнительной информации от спортсменов, предоставленной Zwift, ZRace стал более мощным инструментом с гораздо более точными прогнозами.

Под капотом - Статистические модели

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

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

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

Итерации прогнозной модели:

1- Экспертная модель: Как уже упоминалось, эта модель использовалась в качестве отправной точки, и из-за относительно справедливого результата проект был запущен.

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

3- Выбор модели: третья итерация была направлена ​​на оценку и определение окончательной модели прогнозирования. После определения цель будет состоять в том, чтобы настроить модель до тех пор, пока она не представит максимально точный результат. В этой итерации для получения окончательного результата были необходимы более сложные модели и машинное обучение.

Цель заключалась в том, чтобы использовать наиболее точную модель для набора данных. В этом суть прогнозного моделирования. По сути, никто не знает, какой алгоритм лучше всего использовать для данной проблемы или набора данных. Если у вас уже есть опыт решения данной проблемы, вам, вероятно, не нужно будет использовать машинное обучение из-за ваших глубоких знаний в этой области.

Тем не менее, мой план состоял в том, чтобы использовать весь потенциал машинного обучения для оценки и определения лучшего и наиболее точного алгоритма для этого прогноза.

Первый шаг: была собрана гораздо большая выборка, чтобы было выполнено обучение моделей и, таким образом, был получен лучший результат. В этом тесте используется 1700 наблюдений (гонок). Количество наблюдений не идеальное, но со временем я собираю их больше.

Второй шаг: важно иметь хороший набор представлений алгоритмов (линии, деревья, экземпляры и т. Д.), А также алгоритмы для изучения этих представлений. В конце этого процесса было протестировано более 10 алгоритмов, в том числе: линейный дискриминантный анализ, логистическая регрессия, GLMNET, SVM Radial, kNN, Naive Bayes, CART, Bagged CART, Random Forest, Stochastic Gradient Boosting и другие.

После обучения моделей и выполнения тестов 3 алгоритма показали хорошие результаты: агрегирование начальной загрузки, моделирование обобщенной регрессии и случайный лес. Последний из них имел лучшие характеристики, поэтому именно эта модель была выбрана для продолжения работы и начала точной настройки.

Случайный лес (RF) - это надежный алгоритм машинного обучения, который создает сотни деревьев решений на основе переменных набора данных. Комбинируя решения деревьев, модель объединяет прогнозы деревьев для получения более точного прогноза.

Результаты

После настройки модели точность прогнозов результатов гонок достигла 58%! Это очень хороший результат, учитывая, что модель предсказывает точное положение каждого спортсмена в результате гонки. В среднем в гонках участвуют 25 спортсменов в каждой категории, но бывают случаи, когда участников 50, 80 или даже больше.

Чтобы настроить модель и повысить точность с 54,4% до 58%, некоторые параметры были изменены, и модель снова обучена, пока не будет достигнут идеальный набор параметров.

Идеальная модель использует 500 деревьев решений и 10 переменных. На приведенном ниже графике показана важность каждой переменной для модели, и можно понять, почему модель более точна с 10 переменными вместо 16.

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

Тем не менее, моя модель имеет 75% точность прогнозов гонок, что в пятерке лучших (на пьедестале почета) будут присутствовать 4 спортсмена независимо от порядка. И с точностью 95%, 3 прогнозируемых спортсмена попадут в пятерку лучших!

Этот результат меня очень порадовал проделанной работой. И я могу сказать вам с точностью 95%, если вы думаете о гонках на Zwift, теперь вы знаете, кто вам нужен, чтобы победить. :)

Заключение

  • Работать над этим проектом было весело. Сравнение прогнозов с фактическими результатами гонок показывает немедленную и реальную выгоду, которая очень мотивирует.
  • Насколько я доволен текущими результатами, я продолжу собирать данные о гонках, чтобы достичь магического числа в 10 000 наблюдений (рас), а затем проведу еще одну тренировку для моделей. Я должен протестировать новые алгоритмы, в том числе и нейронную сеть.
  • Первая версия проекта, разработанная для невиртуальных гонок, была важным этапом обучения для разработки второй версии с упором на гонки на Zwift. Но сегодня он устарел. У меня есть планы вернуться к нему, как только возобновятся гонки, и применить все знания, полученные в ZRace.
  • Анализируя график важности RF-модели, я заметил любопытную переменную. Вес спортсмена во многом влияет на решение модели. Теоретически мы знаем важность Вт / кг и FTP в велоспорте, но только вес - это новая информация. Могу ли я изучить данные, чтобы достичь идеального веса супер-велосипедиста? Если я найду ответ, это может быть хорошей темой для будущей статьи.
  • Пока что все отзывы об этом средстве и его преимуществах для спортсменов были положительными. И это приятно. Не стесняйтесь комментировать, предлагать изменения и функции. Любые отзывы приветствуются.