Kaggle: 10 шагов к победе

Сегодня Kaggle – ведущая платформа для соревнований по Data Science. У проекта долгая история, начавшаяся с таких соревнований, как KDD Cup и Netflix Prize. Если вы data scientist (или хотите стать одним из них), тогда участие в соревнованиях Kaggle – это прекрасная возможность усовершенствовать свои навыки, заслужить репутацию и потенциально выиграть немного денег. В этой статье представлены десять шагов к успеху в соревнованиях Kaggle, основанные на моем личном опыте и опыте других участников.

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

kaggle-10-steps-success

Шаг 1. Прочитайте руководство

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

Шаг 2. Выясните, как оцениваются результаты

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

Классическим примером является выбор между оптимизацией средней абсолютной ошибки (САО, mean absolute error, MAE) или средней квадратичной ошибки (СКО, mean square error, MSE). Легко показать, что без учета дополнительных данных по отношению к набору чисел, предиктор, минимизирующий САО, является медианой (median), а предиктор, минимизирующий СКО, является средним (mean).

Действительно, в ходе хакатона EMC Data Science мы использовали медиану вместо среднего в том случае, когда не было достаточного количества данных, и в итоге этот подход был достаточно эффективен.

Шаг 3. Изучите свои данные

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

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

Это побудило нас попробовать применить простую «модель» для нескольких первых часов, где мы спрогнозировали в точности последнюю измеренную величину. Эта идея оказалась одной из самых ценных. Естественно, это означает, что мы прогнозировали показания измерительного оборудования, а не фактические уровни загрязняющих веществ – такого положения вещей определенно следовало бы избегать в реальной ситуации!

Шаг 4. Необходимо понять, чего вы хотите достичь, а потом уже думать о том, как это сделать

Многие начинающие специалисты склонны излишне беспокоиться о том, какой инструмент использовать (Python или R? Случайный лес или глубокое обучение?), хотя на самом деле они должны постараться понять данные и найти в них полезные структуры, которые следует моделировать. Например, когда мы участвовали в соревновании «Персонализация поиска Yandex» (Yandex search personalisation), мы потратили много времени, изучая данные и размышляя о том, что характеризует действия пользователей. В этом случае легко было генерировать идеи, потому что все мы пользуемся поисковыми системами. В общем случае, чтобы добиться эффективности, вы должны глубоко вникнуть в данные и предметную область – вы и данные должны стать одним целым.

Шаг 5. Установите локальную систему проверки результатов

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

Шаг 6. Следите за форумом

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

Шаг 7. Проведите собственное исследование

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

Шаг 8. Обязательно пробуйте применить базовые методы

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

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

Шаг 9. Объедините все ваши разработки

Не следует путать этот подход с методами ансамблей (ensemble methods) (которые также очень важны). В данном случае идея заключается в том, чтобы объединить модели, разработанные независимо. В соревнованиях высокого уровня часто бывает так, что команды объединяются и достигают в итоге значительно более высокого результата за счет объединения своих моделей. Этот подход имеет смысл, даже если вы участвуете в соревновании самостоятельно, потому что фактически никакое соревнование невозможно выиграть с помощью одной модели.

Шаг 10. Побеждайте

Обычно шаги 1-5 выполняются один раз в каждом соревновании или при решении каждой задачи, в то время как шаги 6-9 циклично повторяются или выполняются параллельно, пока не истечет время. Обычно итоговый результат участия в соревновании является функцией от затраченного времени. Если вы будете настойчиво пробовать различные подходы и учиться на своем опыте, – вы добьетесь успеха.

Самый важный шаг (шаг 0) – это решение участвовать в соревновании. Если вы его сделаете, то гарантированно получите в награду обучение и профессиональный рост в качестве data scientist’а.

По материалам: KDnuggents

Добавить комментарий

Ваш e-mail не будет опубликован.

закрыть

Поделиться

Отправить на почту
закрыть

Вход

закрыть

Регистрация

+ =