В стартапе, жаргонизм «метрика тщеславия» означает число, находящееся под контролем компании для того, чтобы убедить мир — а иногда и самих себя — в том, что они успешнее, чем есть на самом деле.

Например, около восьми лет назад руководство Twitter объявило о том, что в их соцсети ежедневно публикуется более 200 млн твитов. Число значительное, но руководство опустило тот факт, что большая часть этих публикаций была сделана ботами. Кроме того, для развития Твиттера как компании важно не количество твитов в день, а, скорее, количество активных пользователей в день и объем рекламы, который можно успеть показать пользователям до того, как они покинут сайт.

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

На данный момент я работаю в стартап проекте по подбору наставников и учеников. В рамках своей работы я рассматриваю множество портфолио из GitHub, присланные начинающими специалистами по обработке данных. И уже стало трудно игнорировать одну конкретную метрику тщеславия, которую, похоже, многие специалисты оптимизируют за счет достижения реального прогресса: количество проектов в науке о данных в личных портфолио. Большая часть начинающих специалистов по обработке данных, которых я встречал, застревают в спирали, не позволяющей стремительно развивать свои проекты из-за использования таких библиотек, как scikit-learn и pandas. И каждый проект содержит лишь незначительные улучшения по сравнению с предыдущими.

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

Итак, вот оно: пошаговое руководство для создания безупречного проекта в науке о данных без scikit-learn и pandas, а также для скорейшего получения приглашения на собеседование.

0. Основные принципы разработки проекта

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

  1. Проект должен быть необычным.
  2. Отобразите в нем как можно больше навыков, соответствующих данной сфере.
  3. Покажите, что вы умеете работать не только с числами.
  4. Проект должен быть простым для демонстрации.

Теперь посмотрим, как эти четыре принципы воплощаются в конкретном проекте.

1. Где можно найти данные

Одним из наиболее важных этапов при разработке проекта является принятие решения, с каким набором данных вы хотите работать.

При выборе помните про первый принцип: проект должен быть необычным.

Технические руководители и специалисты по подбору персонала рассматривают сотни резюме в день, в каждом из которых изложены по 3–4 проекта. Вы ведь не хотите, чтобы в вашем резюме, как и в предыдущих 22-х, содержался анализ набора данных выживших после крушения «Титаника» или базы данных MNIST? Поэтому запомните: держитесь подальше от популярных наборов данных и еще дальше от баз данных для машинного обучения таких, как MINST. Они больше навредят вашему резюме, чем помогут.

Также помните о втором принципе: отобразите в нем как можно больше соответствующих навыков.

Если вы не работаете в крупной компании на узкоспециализированной должности, данные, с которыми вам придется работать, будут со множеством различных ошибок. Они будут состоять из плохо организованных схем, будут стоятьintвместо float, NaN, полного или частичного отсутствия данных, названий столбцов и т.д. Навык работы с подобными «грязными» данными с первого рабочего дня убедит работодателя в вашей компетентности. По этой причине я рекомендую вам не работать с наборами данных Kaggle, так как они обычно заранее очищены.

Чем можно воспользоваться, кроме Kaggle? Веб-скрепинг. И в большом количестве.

Используя такие библиотеки, как beautifulsoup или scrapy, соберите необходимые данные из интернета. Либо можно воспользоваться бесплатным API для создания пользовательского набора данных, доступ к которому будет только у вас, и только вы сможете очищать и улучшать его.

Да, так будет дольше, чем просто импортировать набор данных — Ирисы Фишера — из scikit-learn. Но именно по этой причине мало кто применяет эти методы и именно по этой причине повышаются ваши шансы быть замеченным.

2. Что нужно сделать до использования model.fit()

У баз данных для машинного обучения обычно есть одно-два очевидных применения.

Например, набор данных о «Титанике» демонстрирует четкую проблему классификации: сложно посмотреть на данные и не начать размышлять о самом очевидном — кто из данных людей переживет катастрофу.

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

Как подобрать хорошие вопросы? Для начала можно исследовать данные.

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

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

3. Основной результат

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

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

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

4. Демонстрация

После создания проекта нужно как-то представить его потенциальному работодателю. Тогда одной лишь демонстрации готового продукта будет недостаточно.

Чтобы проект привлек работодателя, расскажите о ходе работы: что неожиданного вы обнаружили во время исследования данных или тестировании модели (например, «оказалось, что данный класс очень сложно отличить от другого класса, так как…»).

Зачем так делать:

  1. работодателю будет интересно, и он лучше запомнит ваш проект;
  2. вы создадите впечатление человека, который старается достичь истины проблемы.

Итерация

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

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

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

Перевод статьи Jeremie Harris: Quality over quantity: building the perfect data science project

Предыдущая статьяПолучение доступа к ID элементов в DOM в качестве переменных window/global
Следующая статьяОбнаружение компонентов с Bit ✨