СТАТЬЯ

Подготовка к работе в Data Science, часть 2: создание портфолио

Из книги Эмили Робинсон и Жаклин Нолис Постройте карьеру в науке о данных

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

_____________________________________________________________

Получите скидку 37% Постройте карьеру в области науки о данных, введя fccrobinson в поле кода скидки при оформлении заказа на manning.com.
____________________________________________________________________________

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

Поздравляем — вы готовы устроиться на работу специалиста по данным! Правильно?

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

Сильное портфолио состоит из двух основных частей — репозиториев GitHub, или сокращенно репозиториев, и блога. В вашем репозитории GitHub размещен код проекта, а блог демонстрирует ваши коммуникативные навыки и не связанную с кодом часть вашей работы по обработке и анализу данных. Большинство людей не хотят читать тысячи строк кода (ваш репозиторий); им нужно быстрое объяснение того, что вы сделали и почему это важно (отсюда и блог). И кто знает, возможно, ваш блог будут читать даже специалисты по данным со всего мира, в зависимости от темы. Вам не нужно подробно писать в блоге о проведенных вами анализах или построенных вами моделях; вы можете объяснить статистический метод, написать учебник по методу анализа текста или даже поделиться советом по карьере, например, как вы выбрали свою программу обучения.

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

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

Создание проекта

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

Найти данные и задать вопрос

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

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

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

  • Kaggle: Kaggle начинался как веб-сайт для проведения соревнований по науке о данных. Компании публикуют набор данных и вопрос и обычно предлагают приз за лучший ответ. Поскольку вопросы связаны с проектами машинного обучения, в которых вы пытаетесь что-то предсказать, например, не выполнит ли кто-то дефолт по кредиту или за сколько будет продан дом, вы можете сравнить модели на основе их производительности на контрольном наборе тестов и получить производительность. метрика для каждого. В Kaggle также есть дискуссионные форумы и «ядра», где люди делятся своим кодом, и вы можете узнать, как другие подошли к набору данных. Все это означает, что у Kaggle есть тысячи наборов данных с сопутствующими вопросами и примерами того, как их анализировали другие люди.
  • Самое большое преимущество Kaggle также является его самым большим недостатком: предоставив вам (как правило, очищенный) набор данных и проблему, они сделали большую часть работы за вас. У вас также есть тысячи людей, решающих одну и ту же проблему, и трудно внести уникальный вклад. Один из способов использования Kaggle — взять набор данных, но задать другой вопрос или провести исследовательский анализ. Как правило, мы считаем, что Kaggle лучше всего подходит для обучения, занимаясь проектом, а затем наблюдая, как вы работаете по сравнению с другими, изучая то, что сделали их модели, а не как часть вашего портфолио.
  • Наборы данных в новостях. В последнее время многие новостные компании начали публиковать свои данные. Например, FiveThirtyEight, веб-сайт, ориентированный на анализ опросов общественного мнения, политику, экономику и спортивные блоги, публикует данные, которые они используют для своих статей, и даже ссылки на необработанные данные прямо с веб-сайта статьи. Хотя эти наборы данных часто требуют ручной очистки, тот факт, что они были в новостях, означает, что с ними, вероятно, связан очевидный вопрос.
  • API: API – это интерфейсы прикладного программирования: инструменты разработчика, позволяющие получать доступ к данным напрямую от компаний. Вы знаете, как ввести URL-адрес и перейти на веб-сайт? API похожи на URL-адреса, но вместо веб-сайта вы получаете данные. Некоторыми примерами компаний с полезными API являются New York Times и Yelp, которые позволяют вам получать их статьи или обзоры соответственно. Некоторые API даже имеют пакеты R или Python, которые специально упрощают работу с ними; например, rtweet для R позволяет быстро получать данные из Твиттера, и вы можете найти твиты с определенным хэштегом, популярные темы в Киото или твиты, которые нравятся Стивену Кингу. Имейте в виду, что существуют ограничения и условия обслуживания того, как вы можете их использовать; например, прямо сейчас Yelp ограничивает вас пятью тысячами звонков в день, и вы никогда не сможете получить все отзывы. Преимущество использования API для проекта заключается в том, что они могут предоставлять чрезвычайно надежные, организованные данные из многих источников. Минусы в том, что вам часто приходится много думать о том, какой интересный вопрос решить — например, у вас есть пять тысяч отзывов, и что теперь?
  • Открытые правительственные данные. Многие правительственные данные доступны в Интернете — вы можете использовать данные переписи населения, данные о занятости, общий социальный опрос и множество данных местных органов власти, таких как звонки в службу экстренной помощи Нью-Йорка или подсчет трафика. Иногда вы можете скачать эти данные напрямую в формате CSV; в других случаях вам нужно использовать API. Вы даже можете отправить запросы о свободе информации в государственные учреждения, чтобы получить данные, которые не являются общедоступными. Правительственная информация хороша тем, что часто бывает подробной и по необычным темам, например данные о зарегистрированных кличках каждого животного в Сиэтле. Недостатком правительственной информации является то, что она часто плохо отформатирована, например, таблицы, хранящиеся в PDF-файлах.
  • Ваши собственные данные: вы можете загружать данные о себе во многих местах: веб-сайты социальных сетей и службы электронной почты являются двумя большими, но если вы используете приложения для отслеживания своей физической активности, списка чтения, бюджета, сон или что-то еще, обычно вы также можете загрузить эти данные. Может быть, вы могли бы создать чат-бот на основе ваших электронных писем с вашим супругом. Или вы можете посмотреть на самые распространенные слова, которые вы используете в своих твитах, и на то, как они изменились со временем. Возможно, вы могли бы отслеживать потребление кофеина и физические упражнения в течение месяца и посмотреть, сможет ли это предсказать, сколько и как хорошо вы спите.
  • Скрапинг веб-страниц. Скрапинг веб-страниц – это способ извлечения данных с веб-сайтов, не имеющих API, путем автоматического посещения веб-страниц и копирования данных. Например, вы можете создать программу для поиска на веб-сайте фильмов списка из ста актеров, загрузить их профили актеров, скопировать список фильмов, в которых они снимались, и поместить его в электронную таблицу. Однако вы должны быть осторожны: очистка веб-сайта может противоречить условиям использования, и вы можете быть забанены. Вы можете проверить robots.txt веб-сайта, чтобы узнать, что они разрешают. Вы также хотите хорошо относиться к веб-сайтам — если вы нажмете на них слишком много раз, вы можете вывести сайт из строя. Но при условии, что условия позволяют это, и вы выстраиваете время между обращениями, парсинг может стать отличным способом получить уникальные данные.

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

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

Выбор направления

Создание портфолио не должно отнимать много времени. Идеальное здесь определенно враг хорошего. Что-то лучше, чем ничего, и работодатели в первую очередь ищут доказательства того, что вы можете программировать и передавать данные. Вы можете быть обеспокоены тем, что люди будут смотреть и смеяться над вашим кодом или говорить: «Вау, мы думали, что этот человек может быть в порядке, но посмотрите на его ужасный код!» Маловероятно, что это произойдет. Одна из причин заключается в том, что работодатели приспосабливают свои ожидания к уровню стажа: от вас не ожидают, что вы будете программировать, как специалист по информатике, если вы начинающий специалист по данным. Как правило, большее беспокойство вызывает то, что вы вообще не умеете программировать.

Здесь также полезно подумать об областях науки о данных. Вы хотите специализироваться на визуализации? Создайте интерактивный график с помощью D3. Вы хотите выполнять обработку естественного языка? Используйте текстовые данные. Машинное обучение? Предсказывать что-то?

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

Распространенной проблемой самомотивированных проектов является чрезмерное определение масштабов. Здесь вы хотите сделать все, или вы продолжаете добавлять больше вещей по ходу дела. Вы всегда можете продолжать улучшать/редактировать/дополнять, но это означает, что вы никогда не закончите. Одна из стратегий — думать как в Голливуде: сиквелы. Вы должны задать себе вопрос и ответить на него, но если вы думаете, что захотите вернуться к нему позже, вы можете закончить свое исследование вопросом или темой для дальнейшего изучения или даже «ПРОДОЛЖЕНИЕ ПРОДОЛЖАЕТСЯ…?» если вы должны.

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

Заполнение файла README GitHub

Может быть, вы участвуете в буткемпе или на программе получения степени, где вы уже делаете свои собственные проекты. Вы даже закоммитили свой код на GitHub. Этого достаточно?

Неа! Минимальным требованием для полезного репозитория GitHub является заполнение README. Вот несколько вопросов, на которые нужно ответить:

  • Что такое проект? Например, какие данные он использует? На какой вопрос отвечает? Что было на выходе — модель, система машинного обучения, информационная панель или отчет?
  • Как организован репозиторий? Это означает, что репо каким-то образом организовано! Существует множество различных систем, но основная из них заключается в разделении вашего сценария на разные части — получение (если это необходимо) ваших данных, их очистка, изучение и окончательный анализ. Таким образом, люди знают, куда идти, в зависимости от того, что их интересует. Это также предполагает, что вы держите свою работу организованной, когда идете в компанию. Компания не хочет рисковать тем, что вы работаете там, а затем, когда приходит время передать проект, вы даете кому-то некомментированный сценарий из пяти тысяч строк, который им невозможно понять и использовать. Хорошее управление проектами также поможет вам в будущем — если вы захотите повторно использовать часть кода позже, вы будете знать, куда идти.

Хотя делать проект и делать его общедоступным в документированном репозитории GitHub — это хорошо, сложно смотреть на код и понимать, почему это важно. После того, как вы сделаете проект, следующим шагом будет написание блога, в котором люди узнают, почему то, что вы сделали, было крутым и интересным. Никому нет дела до pet_name_analysis.R, но всех волнует «Я использовал R, чтобы найти самые глупые имена домашних животных!»

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

Это все для этой статьи. Если вы хотите узнать больше, ознакомьтесь с книгой в нашей браузерной читалке liveBook здесь.