Этот контрольный список сделает вас супергероем данных!

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

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

Foundation - математика и статистика

Что важно для достижения успеха в качестве специалиста по данным? По моему опыту, специалист по анализу данных должен хорошо разбираться в математике и статистике. Это не означает, что специалист по анализу данных должен быть полноценным математиком, но должен хорошо разбираться в уравнениях и знать типичные соотношения из класса 101 университетского исчисления. Например, вы должны знать такие правила логарифма, как log (x ʸ ) = y log (x). Сколько математики вам нужно знать? Чем больше, тем лучше, но как минимум я бы сказал исчисление 101 и линейная алгебра 101. Вы могли бы выжить без математического образования, но вам будет непросто понять, например, функции кросс-энтропийных потерь. Другая необходимая основа - это статистика, и это даже более важно. Основным занятием специалиста по обработке данных является обработка данных, и вы постоянно задаете себе такие вопросы, как «важна ли эта функция», «достаточно ли у меня данных» или «важен ли этот вывод». Практически любой вопрос, на который вы хотите ответить, использует ваши статистические знания. Это может не всегда быть видимым, но статистика помогает вам отделить важные функции от менее важных при исследовании данных. Как и в случае с математикой, чем больше статистики вы знаете, тем лучше, но, по крайней мере, знаете основы описательной статистики и статистических выводов. Описательная статистика - это, как следует из названия, метод описания или количественной оценки совокупности информации. Вы, наверное, помните несколько таких, как среднее и срединное, и это лишь некоторые из них. Когда мы хотим вывести свойства о популяции из выборки, мы используем логическую статистику. Есть много хороших онлайн-ресурсов, чтобы быстро освоить основы. Вот пара, которая мне нравится:

Основной навык: программирование

До сих пор мы только поцарапали фундамент. Эти знания значительно упростят изучение науки о данных. Следующий навык - это хлеб с маслом для каждого специалиста по данным: программирование. Хотя я никогда не осмеливаюсь сравнивать себя с инженером-программистом, я все же провожу большую часть своего времени в интерактивной среде разработки (IDE), создавая код для взаимодействия с данными. Хотя вы можете выполнять эту работу на любом языке программирования, наиболее распространены два: Python и R. Идут бесконечные споры о том, какой из них лучше, и я бы сказал, что это не имеет большого значения. Если вы новичок, я всегда рекомендую Python, поскольку я считаю, что это более чистый (читаемый) язык и относительно простой в освоении. Python очень универсален и может также использоваться для многих других целей, включая создание приложений или веб-сайтов. В R нет ничего плохого, и если вас больше привлекает R, не стесняйтесь инвестировать в этот навык. Специалист по данным должен быть очень в знании хотя бы одного языка программирования.

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

Очень опытный означает, что если вам предложат алгоритмическую проблему, например, быструю сортировку или шипение, вы можете написать решение из головы (то есть без Stack-Exchange). Вы можете получить некоторую помощь по алгоритму, но логику программирования должно быть легко написать. Программирование - это навык, который во многом зависит от вашего опыта. Вы можете пройти курс, который поможет вам начать работу, но настоящее понимание приходит после решения проблем на Python (или R). Что касается Python, я бы также рекомендовал сначала освоить базовый язык, прежде чем использовать дополнительные пакеты. Ознакомьтесь с синтаксисом, логикой программирования и некоторыми компонентами стандартной библиотеки. Не погружайтесь сразу в Tensorflow или PyTorch в первую неделю. Чтобы начать работу с Python, вот несколько отличных ресурсов (в том числе созданный мной):

Необходимые инструменты: Numpy, Pandas и библиотека визуализации.

Хорошо, теперь у нас есть прочный фундамент, и мы можем начать с анализа данных. Это означало бы, что нам нужно самостоятельно разработать методы для загрузки и управления данными с использованием Python (или R). Мы будем создавать множество инструментов, которые работают с конкретной проблемой, но создание инструментов, которые работают с широкими проблемами, - непростая задача. К счастью, огромное сообщество разработчиков ПО с открытым исходным кодом помогло нам охватить множество методов и даже полных алгоритмов, доступных через пакеты. Эти пакеты обслуживаются большой группой добровольцев, они оптимизированы, проверены и обладают полным набором функций. Было бы бессмысленно (кроме учебных целей) писать эти методы с нуля. Как специалист по данным, первый пакет, который вы должны освоить, - это Numpy. Numpy расширяет Python множеством методов и структур данных для научных вычислений и, вероятно, наиболее известен благодаря структуре данных n-мерного массива. Под капотом Numpy привязывается к скомпилированным реализациям методов и, следовательно, работает почти так же, как и другие языки (сам Python имеет некоторые накладные расходы, но сам Numpy скомпилирован). Numpy огромен, и вы можете предположить, что если вам нужна математическая операция, она, вероятно, будет реализована. Если у вас есть прочная математическая база, вы получите много пользы от Numpy. В Интернете есть много отличных руководств, но я очень рекомендую одно от Пабло Касереса. Если вам больше по душе видео, то курс от ленивого программиста тоже неплох. Важно освоить документацию Numpy. Мало того, что вы, вероятно, будете использовать его регулярно, но и многие другие пакеты имеют аналогичный формат. Очень часто сама документация предлагает хорошее руководство.

Есть еще один пакет, который должен освоить каждый специалист по данным: Pandas (dplyr на R). Pandas - это способ общения с вашими данными, и это должно казаться очень естественным. Pandas получил свое название от эконометрического термина данные панели и
вводит структуры данных для управления табличными данными. Его можно сравнить с электронной таблицей, где данные структурированы по строкам и столбцам. Pandas построен на основе Numpy, поэтому манипуляции проходят быстро и тщательно проверяются. Пакет упрощает загрузку данных в Python. In поддерживает (иногда требуются дополнительные пакеты) многие форматы, такие как: CVS, SQL, HDF5, XLS / XLSX, JSON, parquet, clipboard и многие другие.

После импорта данных Pandas оказывается швейцарским армейским ножом для обработки данных. Это основная деятельность специалиста по данным. Находя недостающие значения и вводя их, анализируйте диапазоны значений и проверяйте, имеют ли они смысл. Например, если есть столбец, представляющий возраст клиентов, он, вероятно, должен иметь верхнюю границу чуть выше 100 (самому старому из когда-либо живших людей было около 120 лет). Когда данные подтверждены, специалист по анализу данных обычно объединяет их. Если необработанный набор данных представляет собой список покупок, мы можем агрегировать сумму продаж за месяц. Такие манипуляции в Pandas чрезвычайно просты, если вы изучили язык данных Pandas. Как специалист по данным, вы должны проводить время, задавая вопросы (фактически отвечая на них) о наборе данных. Pandas дает вам инструменты, чтобы найти ответы. Чем больше вы осваиваете Pandas, тем эффективнее вы находите эти ответы. Это то, что я бы оценил с любым кандидатом на должность в области науки о данных. Вот пара отличных выступлений и ресурсов. Станьте ниндзя Панд!

Получение информации - это первый шаг исследовательского анализа данных (EDA). Второй шаг - визуализировать свои выводы с помощью графиков. В Python существует множество пакетов для построения графиков, и вам решать, какой из них использовать. Наиболее распространенной является Matplotlib, которая представляет собой полноценную графическую библиотеку для создания визуализаций уровня качества публикации. Он прост в использовании, и я бы определенно посоветовал иметь базовое понимание Matplotlib. Хорошая вещь открытого исходного кода - то, что есть много альтернатив. Один из моих любимых - Seaborn, который построен на основе Matplotlib и прекрасно интегрируется с Pandas. Еще одна библиотека для построения графиков - Altair, которая упрощает создание интерактивных графиков. Не так важно, какую систему вы изучаете, но важно, чтобы вы могли визуализировать свои результаты.

Набираться опыта: конкурсы и проекты

В большинстве ранее упомянутых руководств по Pandas уже показано несколько
методов анализа ваших данных и ответов на различные вопросы. Но применимы ли эти вопросы (или методы в целом) к вашей проблеме? Конечно, это зависит от проблемы, над которой вы работаете, но в целом научиться задавать правильный вопрос можно только на собственном опыте. Вы можете получить опыт, анализируя проекты, выполненные другими, или, что еще лучше, выполняя проекты самостоятельно. Есть много известных наборов данных, с которых можно начать. Один, который, вероятно, известен каждому специалисту по данным, - это Набор данных Титаника. Этот набор данных был создан для обучающего конкурса Kaggle, и его цель - предсказать, какие пассажиры выживут в трагическом происшествии. Набор данных довольно мал, но содержит множество проблем, которые необходимо решить, прежде чем можно будет начать моделирование. В нем пропущены значения, которые необходимо условно исчислить, но какие значения следует использовать? Медиана? Значит? Должны ли мы приписывать значения глобально или решать это по подгруппам, т.е. сначала группировать данные в первый, второй и третий классы? Лучший способ узнать ответы на эти вопросы - это получить опыт и взглянуть на работы других.

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

Цель конкурса «Титаник» - создать модель, то есть использовать машинное обучение для прогнозирования вероятности того, что пассажир выжил. До сих пор мы еще не говорили ни о каких моделях. Интернет заставляет вас думать, что алгоритмы машинного обучения - это основа работы специалиста по данным, но я думаю, что это не так. Конечно, вы должны знать о различных алгоритмах, которые существуют, но практически невозможно быть экспертом во всех из них. Вместо того, чтобы изучать алгоритмы машинного обучения, научитесь подходить к проблеме науки о данных. Каждая проблема заканчивается алгоритмом машинного обучения, и именно в этот момент вы изучите этот единственный алгоритм. Вы изучаете алгоритмы на работе. Выполнив пару проектов или конкурсов, вы узнаете, что большую часть своего времени вы тратите на обработку данных и разработку функций (80% + вашего времени). Мой совет - принять участие в нескольких (обучающих) соревнованиях и опробовать наиболее часто используемые алгоритмы: логистическую регрессию, линейную регрессию и случайный лес. Сохраните более продвинутые алгоритмы, такие как повышение градиента и модели глубокого обучения, на потом. Эти алгоритмы немного похожи на черный ящик, и поэтому их сложнее понять, но не стесняйтесь пробовать и их, когда вам комфортно с более традиционными алгоритмами.

Лучший способ набраться опыта - участвовать в проектах или участвовать в конкурсах. Соревнования - самый простой способ начать. Одна из лучших площадок для соревнований по науке о данных - Kaggle. Kaggle - потрясающий ресурс, так как здесь есть не только конкурсы, но и дискуссионная площадка, и даже микрокурсы. Когда вы новичок в Kaggle, он отправит вас на конкурс обучающих программ под названием Титаник - машинное обучение после катастрофы. Соревнования по обучению отличаются от обычных соревнований тем, что у них нет крайних сроков. Если вы хорошо работаете в облаке, вам не нужно ничего устанавливать, и вы делаете весь анализ в онлайн-среде IDE. Достаточно легко загрузить набор данных и работать в автономном режиме, но вам нужно будет самостоятельно управлять средой Python (учебник). Соревнование Титаник - это полноценное руководство, которое проведет вас через весь процесс, пока вы не получите окончательную модель. Это отличная отправная точка, и с нее вы можете легко попробовать свои новые улучшения. Многие люди делятся своими записными книжками на платформе, и это лучший способ учиться у других. Опять же, я думаю, что самый большой выигрыш от улучшения модели - это разработка функций. Обработка данных - это суперспособность специалиста по данным. Просмотрите записные книжки других Kagglers и посмотрите на их созданные функции. Удивительно, какие особенности скрыты внутри такого небольшого набора данных.

Обработка данных - это суперспособность специалиста по данным.

Ниже приведены ссылки на два настоятельно рекомендуемых обучающих соревнования, но не стесняйтесь также проверить регулярные текущие соревнования. Если вы готовы протестировать новый алгоритм, первая остановка (после Google) - это пакет sci-kit-learn. В нем уже реализовано множество алгоритмов. Еще один отличный источник алгоритмов и статистических концепций - видео Stat-Quest от Joshua Starmer. Его видеоролики забавны и чрезвычайно полезны для понимания сложных алгоритмов.

Дополнительные темы

Есть много сложных тем, которые мы упомянули лишь вкратце или совсем не упомянули. Такие темы, как глубокое обучение, компьютерное зрение, генеративные состязательные сети или модели преобразователей, являются крупными достижениями в этой области. Если вы интересуетесь наукой о данных, вы, вероятно, слышали об этой технологии и, возможно, даже читали о ней на Medium. Хотя знание этих тем может помочь в получении работы в области науки о данных, шансы, что вы выбрали правильный, очень малы. Слишком много, чтобы быть экспертом во всех них. Мой совет - выберите тот, который вам больше всего нравится, и изучите его. Все темы очень популярны, а количество уроков огромно. Это та часть, которую вы делаете для развлечения, так как есть большая вероятность, что вы будете заниматься чем-то другим на своей первой работе в области науки о данных. Честно говоря, больше всего я вижу линейные и логистические регрессии с временными древовидными моделями. Так было и в моей первой работе, где наиболее продвинутой моделью была логистическая регрессия. Нет ничего плохого в логистической регрессии, и прелесть состоит в том, что эти модели очень объяснимы, что становится очень важным (как и должно быть). Стоит ли вам сосредоточиться на этих сложных темах? Точно нет! Если вы только начинаете, сосредоточьтесь на обработке данных и нескольких традиционных моделях. Станьте в этом экспертом. Во время путешествия ваше любопытство побудит вас читать о продвинутых материалах. Через год у вас будет хорошее представление о том, что там есть. В этом году вы, возможно, уже участвовали в нескольких встречах, на которых люди демонстрируют свои проекты или организуют обучение по НЛП или ЙОЛО. Встречи организуются волонтерами практически в любом крупном городе, и это отличный способ познакомиться с другими людьми. Наконец, отличный способ оставаться в курсе - это (в цифровом формате) посещать конференции, такие как PyData или PyCon. На этих мероприятиях проводятся качественные беседы (которые часто становятся публичными только через несколько месяцев), на которых вы можете пообщаться с экспертами в этой области. Посетите эти мероприятия, если у вас есть возможность. Задавать вопросы! Вы можете бояться задать глупый вопрос, но такого не бывает. Еще хуже не задать вопрос, который у вас на уме.

Человек, который задает вопрос - дурак на минуту, человек, который не задает, - дурак на всю жизнь. - Конфуций.

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

Заключительные мысли и контрольный список

Есть много способов попасть в науку о данных, и этот обзор - всего лишь моя самоуверенная дорожная карта. Имейте в виду, что это непростой процесс, но если вам нравится работать с данными, то есть разгадывать загадки данных, это определенно выполнимо. Как вы видели в этом руководстве, четкого конца нет (всегда нужно учиться). Существует более низкий порог, необходимый для хорошей работы. Я еще не упомянул два важных навыка: перевод бизнес-проблем в проблемы с данными и коммуникативные навыки. Самостоятельно решать бизнес-задачи труднее, но вы, вероятно, научитесь этому у своих коллег на своей первой работе. Просто помните, что это важный навык для специалиста по данным. Последний навык, о котором еще не упоминалось, - это навык общения. После того, как вы получите результаты, вы должны сообщить об этом клиенту или своим коллегам. Это может быть отчет, рисунок или презентация, которая должна быть убедительной. Это навык, который требует тренировки и будет улучшаться с практикой. Отличный способ стать лучше - начать вести блог или представить свой проект на встрече!

Я собрал все необходимые навыки в единый контрольный список для специалиста по данным. Навыки можно разделить на три группы: базовые, программирование и специфические для работы. Это похоже на самооценку, когда вы можете поставить себя между недостаточным (💩), хорошим (🙂) и супергеройским (🦸). Чтобы добиться успеха в науке о данных, определенно достаточно владения первыми 8 навыками. Если вы супергерой в Pandas, вы уже можете считать себя экспертом. Последние два навыка вы можете освоить на своей первой работе, но помните, что они важны.

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

На этом мы подошли к концу этого руководства. Все они основаны на моем опыте и моем мнении о роли специалиста по данным. Не стесняйтесь комментировать или связываться со мной в LinkedIn.