Машинное обучение и работа с данными – это про решение проблем и задач. Вы можете прочитать книгу или посмотреть видео, но то, что действительно важно – это практика. И вот тут-то на сцену выходят хакатоны и соревнования. Они идеальны для того, чтобы заполучить самое ценное, что есть у специалиста: опыт. А еще с помощью хакатонов можно честно проверить себя и свои навыки, ведь даже владение огромным количеством теории не всегда означает готовность к решению практических проблем.
Отражают ли задачи на хакатонах то, что происходит в реальном мире и бизнесе? Не всегда. Но это не значит, что опыт участия в соревнованиях будет нерелевантным. Это как пет-проект: хороший шанс набить руку и шишки, сделать для себя необходимые выводы, а еще обменяться опытом. Ведь вы не просто конкурируете с другими участниками, но и учитесь у них. К тому же, у вас есть четкая цель – пробиться наверх лидерборда – а это тренирует еще и упорство.
Наконец, ни для кого не секрет, что работодатели и даже университеты высоко ценят кандидатов с большим проектным и соревновательным портфолио. Некоторые учебные заведения и компании даже проводят свои собственные хакатоны, по итогам которых могут пригласить победителей и ярких участников на работу или учебу.
А еще хакатоны – это призы. Участников часто награждают мерчом, редкими книгами, промокодами и еще кучей всего. Но это еще что: у большинства хакатонов есть денежный призовой фонд, и иногда он доходит до миллионов долларов. Многие очень опытные специалисты полностью посвящают карьеру хакатонам, зарабатывая иногда больше, чем их коллеги в международных корпорациях.
Итого, хакатоны – это:
Ну что, убедились, что ML-хакатоны – это круто? Тогда поехали разбираться, как они устроены.
Структура всех ML-хакатонов схожа и состоит из нескольких "кирпичиков". Во-первых, организаторы выкладывают общее описание проблемы: какую задачу мы решаем, на основе чего мы ее решаем и зачем. Затем главное – данные. В данных есть признаки (это могут быть не только столбцы в таблице, но и, например, изображения или аудио) и таргет – то, что нам предстоит предсказывать.
Файлов с данными может быть сколько угодно, но вся эта выборка делится на обучающую и тестовую части. Обучающая (train) – в которой присутствует таргет, тестовая (test) – в которой таргета нет, а есть только признаки для предсказания. Задача заключается в том, чтобы обучить модель на train и с помощью этой модели сделать предсказания для test. Эти предсказания затем оцениваются организаторами по некоторой заранее известной участникам метрике, и по результатам этой оценки формируется лидерборд.
Иногда test также в закрытую делится на публичную и приватную части. Результаты своей модели на публичной части теста участники видят на открытом лидерборде прямо во время соревнования, но распределение мест и финальное решение делается по приватной части теста. Такие "приватные" результаты моделей становятся известны только после окончания приема решений.
Так делают для того, чтобы не было нечестной "подгонки под лидерборд". Это когда участники отправляют множество прогнозов и на основе полученных оценок постепенно корректируют свою модель. Для этой же цели количество сабмитов, которые можно отправить в день или же за все время соревнования, обычно ограничено.
Кстати, часто в хакатоне также можно найти файл с названием submit – это просто пример того, как должен выглядеть сабмит-файл с ответами, который вы прикрепляете. Иногда организаторы также предлагают бейзлайн – простое начальное решение, которое обычно не выбивает хорошую метрику, но от которого можно оттолкнуться.
Конечно, если углубляться в этот вопрос, нюансов и стратегий окажется масса, обо всем в одной статье и не расскажешь. Тем, кто хочет реально познать все качественно и сполна, рекомендуем замечательный курс "Введение в соревновательный Data Science" на Stepic. 10 модулей, более 200 практических заданий на отработку материала, 3 интервью с Kaggle Grand Masters и многое другое. В общем, тут вас точно научат фармить медальки. И кстати, по промокоду DATASECRETS вы получите на курс скидку 15% 😉
А сейчас давайте пройдемся по главному. Базовые секреты (на самом деле никакие это не секреты) сильного решения – это грамотная работа с данными, хороший feature engineering и устойчивая схема валидации.
С данными все понятно. Они – душа модели, поэтому отнестись к их анализу и обработке стоит очень серьезно. Что точно нужно делать:
Далее не менее важный аспект – feature engineering. Это шаг, где вы пытаетесь создать такие признаки, на которых, при прочих равных, ваша модель будет показывать лучший результат. Тут идет в ход все: ручная или автоматическая генерация признаков, парсинг внешних дополнительных данных, анализ ошибок модели и так далее. Найдя таким образом киллер-фичи, то есть признаки, которые "понимают" ваш скор лучше всего, будет полезно прогнать их через фильтрацию. Это нужно для того, чтобы решение было более стабильным и устойчивым к шуму.
Вот по такому циклу фича инжиниринга надо ходить много раз, проверяя гипотезы, тестируя разные модели и подходы. Трудозатратно? Да. Но эта работа точно принесет плоды.
Ранее мы также упомянули устойчивую схему валидации. Почему она так важна? Потому что это именно то, что делает вашу модель надежной и устойчивой. Разумная схема валидации позволяет качественно подобрать гиперпараметры и избежать переобучения модели. Другими словами, мы должны не просто обучать модель работать на тренировочной выборке. Нет. Главное – научить модель хорошо перформить на данных, которых она никогда не видела. Классические подходы, которыми стоит научиться пользоваться: Holdout Validation, K-Fold Cross-Validation, Stratified K-Fold Cross-Validation, Leave-One-Out Cross-Validation, Bootstrap, и в случае временных рядов Time Series Split.
Вот и все. Овладев всего тремя этими навыками: предобработка данных, feature engineering и валидация, вы уже можете расчитывать на то, что ваше решение попадет в топ. А если при этом вы еще умеете грамотно тюнить модели и знаете, что такое блендинг, стекинг и вот это все – поздравляем, вы будущий чемпион!
Код для большинства ML-соревнований обычно пишется в ноутбуках, то есть в файлах с расширением .ipynb
. Конечно, есть любители скриптов, которые стараются избегать кодинга в ноутбуках. Они чаще всего используют студии PyCharm или VSCode. Однако большинство участников все-таки предпочитают notebooks: они чрезвычайно удобны для проведения экспериментов, построения графиков и в целом структуризации решения.
Что касается мощностей железа, то все зависит от типа соревнования, в котором вы участвуете. В задачах классического машинного обучения, таких как регрессия или классификация на небольших наборах данных, обычно можно обойтись простой машиной без GPU.
Если же вы решаете задачу, связанную с глубоким обучением – например, распознавание изображений, обработка естественного языка или работа с видео, вам точно понадобится GPU. Собственная видеокарта стоит дорого, но есть хорошая новость – можно получить GPU для обучения моделек и бесплатно за счет облачных ресурсов.
Итак, вот какие инструменты для написания кода и использования возможностей GPU обычно выбирают ML-щики:
Пользуйтесь этими ресурсами, но не забывайте: никогда не оставляйте ноутбук надолго, если модель обучается на облаке. Почему? Потому что может произойти что угодно – от случайного отключения ядра до истечения лимита времени или ресурсов. Лучше всегда держать процесс под контролем, чтобы случайно не потерять кучу такого ценного на хакатонах времени.
В завершении статьи мы оставляем вам список полезных материалов, которые помогут преуспеть в грокинге хакатонов:
Вот и все, надеемся, статья вам понравилась. Участвуйте в хакатонах, прокачивайте скилы, и пусть удача в виде теста, похожего на train, всегда будет с вами!