Колорадо-Спрингс — не только мой дом, но и штаб-квартира Олимпийского и Паралимпийского комитетов. На последней неделе сборки в моей программе Data Science я решил работать с олимпийскими данными для нашего проекта машинного обучения. Как профессиональный спортсмен, Колорадо-Спрингс идеально подходит для тренировок. Специально для Олимпийских игр 2016 года я готовился к соревнованиям по маунтинбайку по пересеченной местности.

Я гнался за очками UCI, посещая гонки Кубка мира так, словно от этого зависела моя жизнь. Первым шагом в долгом и часто спорном процессе отбора является составление олимпийского длинного списка. В лонг-лист вошли восемь женщин... и я была 9-й в этом списке. Я сделал все, что мог, потерпел неудачу, и меня не пустили. У меня также есть личная страсть узнавать предысторию жизни спортсменов и смотреть сами игры.

Процесс

Поскольку данные были чистыми, мое исследование данных было довольно простым. Я использовал набор данных с kaggle.com: 120 лет олимпийской истории: спортсмены и результаты. Вот первые пять строк и форма фрейма данных.

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

В процессе я залез в несколько кроличьих нор с некоторыми функциями, которые, в конце концов, даже не использовал. После очистки данных, в основном уменьшив мощность моих Спорт (мощность относится к уникальности значений данных, содержащихся в столбце) до 40 с 65 — и получив нужные мне столбцы, я был готов разделить свои данные. Я использовал 3-way-split — обучение, валидация, тест. Вот пример моей цели Спорт на основе одного признака Возраст.

Машинное обучение

Я сделал логистическую модель в качестве базового классификатора большинства, поскольку это проблема множественной классификации. Моя тренировочная точность составила всего 17%. Это означает, что без машинного обучения моя модель будет правильно угадывать только в 17% случаев. Для своих моделей машинного обучения я пробовал как Random Forest Classifier, так и модель XGboost. В итоге я использовал Random Forest для своего финального пайплайна, так как он дал несколько лучшие результаты.

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

Gradient Boosting, используется для XGboost. Ниже приведен график, хотя он немного менее прерывистый, чем рандомизация важности перестановки случайного леса выше.

Результаты

Для классификатора случайного леса моя точность составила 42%! Все еще не лучший показатель, но он увеличился по сравнению с моей базой на 25%. Итак, это означает, что моя последняя модель теперь может правильно определить, какой вид спорта вы, скорее всего, выиграли бы в 42% случаев. С 40 видами спорта или классами на выбор, я бы сказал, что это чертовски хорошо. XGboost моя модель имела показатель точности только 36%, поэтому я выбрал случайный лес. Чтобы лучше понять, как различные функции повлияли на мои прогнозы, я создал значения Шепли (используя одно горячее кодирование) для двух примеров:

  • Велосипедист:

  • Хоккеист:

Каждый пример взаимодействует по-разному. Для первого примера: сезон, год и вес помогли велосипедисту. Но хоккеисту помог только рост. А сезон, год, возраст и вес понизили его.

Если вам интересен мой полный блокнот, вот мой GitHub.

Некоторые забавные факты

Пока я занимался исследованием данных, вот несколько фактов, которые я узнал.

1. Летом 1896 года в Афинах, Греция, состоялись первые Олимпийские игры. Хотя античные игры проводились в Олимпии, Греция, с 776 г. до н.э. по 393 г. н.э., потребовалось 1503 года, чтобы Олимпийские игры вернулись.

2. Зимние Олимпийские игры появились только в 1924 году, 28 лет спустя.

3. И Лето, и Зима проводились в один и тот же год до 1992 года.

4. 1916, 1940 и 1944 годы были отменены. После некоторых исследований это было во время войн. ПМВ и ВОВ.

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

6. За 120 лет только 35 из них были олимпийскими.

7. Хотя Олимпийским играм уже 120 лет, поскольку они проводятся раз в 2–4 года, всего была проведена всего 51 игра.

Обратная связь всегда приветствуется. Пожалуйста, прокомментируйте ниже, поделитесь своими мыслями и, возможно, поделитесь этой статьей с другими олимпийскими фанатами. Опять же, вот ссылка на приложение, которое я создал, и мой Github. Спасибо за чтение!