Карта развития в Data Science, или Как стать исследователем данных

02.08.2021 Эта статья - моя попытка очертить программу самообразования, достаточную для того, чтобы начать карьеру в Data Science. Все, что я ниже напишу, - субъективно. Что ни субъективно, то это факт, что для меня это сработало и я таки работаю исследователем данных. Эти советы можно сравнивать с хлебными крошками, оставляли после себя Гензель и Гретель в известной сказке. Эта дорожная карта может привести вас к цели тем путем, которым уже проходили раньше. Кроме того, такое образование не является исчерпывающей для исследователя, а лишь достаточным, чтобы найти первую работу. Итак, с чего начинать?

Обзор нужных знаний и навыков

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

Согласно приведенной диаграммы и учитывая требования к новичкам, во время подготовки следует сосредоточиться на следующих моментах:
Карта развития в Data Science, или Как стать исследователем данных
изучение нужных аналитику инструментов и языка программирования;
изучение статистики и математики;
ознакомление с методами машинного обучения;
понять, как все перечисленное применяют для исследования данных.
К тому же в пределах Data Science является специализации. Приведенная ниже иллюстрация показывает, что вам не обязательно досконально разбираться во всем. Вы можете выбрать специализацию в зависимости от ваших способностей и предпочтений.
Карта развития в Data Science, или Как стать исследователем данных
Подробнее о специализации в DS смотрите в докладе Алексея Натьокина.

И хотя это дорожная карта, эта дорога не является линейной. Хронологического порядка здесь нет, учить можно в любой последовательности, итеративно. Да и сам деление условное, потому что часто курсы и книги одновременно охватывают и теорию, и инструменты, и непосредственно ML и DS. Поэтому рассмотрим подробнее, что именно и где учить.

Инструменты

Что касается инструментов, в моем случае это Python, NumPy, pandas, SciPy, Matplotlib, Jupyter Notebook, scikit-learn, Keras тому подобное.

Python я начал изучать по книге «Learning Python»Марка Лутца, документацией и Stack Overflow. Стоит отметить, что для меня Python был не первым языком программирования. Имея опыт программирования на следующих языках, как Java, Scala, Groovy, javascript и TypeScript, я уже имел некоторое представление о парадигмы и принципы разработки ПО. Поэтому мое знакомство с Python может отличаться от. Хорошая новость в том, что для начинающего исследователя данных не обязательно в совершенстве разбираться в программировании. Для начала достаточно освоить основы языка и овладеть популярные инструменты для аналитики. Следует научиться превращать алгоритмы и математические формулы код. И стоит уметь работать со структурами данных: последовательности, таблицы, тензоры, словари, деревья и графы в целом. Однако, когда будет время и вдохновение, советую разобраться, что такое OOP, SOLID, FP и тому подобное. Уделите внимание тестированию, логирования, lint-проверке и практикам чистого кода. Так работа с кодом станет приятнее и, возможно, жизнь станет лучше.

Для исследования данных вам понадобится удобная среда. Распространенным средой для исследователей является Jupyter Notebook . Он имеет интуитивно понятный интерфейс, и его усвоение не требует каких-то сложных курсов. Для быстрых экспериментов не обязательно ставить Notebook локально, достаточно иметь интернет и воспользоваться онлайновым сервисом. Например, Google Colaboratory . Там уже есть большинство базовых для DS и ML модулей, нужны можно доставить. Есть интеграция с Google-диском, где можно держать данные, а также интеграция с GitHub. В общем, удобная штука.

Следующий инструмент в списке - библиотека NumPy . Она предоставляет интерфейс для применения математических функций для операций над тензорами. Ее используют, например, чтобы представить изображение как тензор, где каждое значение соответствует пикселю вашего изображения. Выборку тензоров используют как input для модели. Знакомство с NumPy можно начать с этой или этой статьи. Если вам не хватает математических функций в NumPy, обратите внимание на SciPy.

Библиотека pandas предоставляет удобный интерфейс для работы индексированных табличными данными (DataFrame) и последовательностями (Series). Удобнее NumPy для работы с временными рядами, имеет встроенные функции для визуализации данных, работы с файлами, такими как csv далее. С pandas можно ознакомиться в этой статье в рамках курса от Open Data Science и в курсе от Мичиганского университета. Далее мы еще не раз вернемся к этим курсам.

Теперь, когда вы уже знаете некоторые инструменты для работы с данными, можете исследовать и подготовить к использованию, можно рассмотреть библиотеки для машинного обучения - scikit-learn и библиотеку для глубинного обучения - Keras . Однако в тех курсах и книгах, на которые я встречал, эти библиотеки рассматривают неотъемлемо, как составную часть курса по машинного обучения вообще. Поэтому подробнее, где изучать машинное обучение и эти библиотеки, я опишу ниже.

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

Математика и статистика

Во-первых, для чего вам статистика и математика? Можно просто создавать умные машины с помощью магии готовых библиотечных решений и избежать рутинные и трудоемкие вычислений?

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

Кстати, этот пример показателен еще и тем, что автор решение Даниил Савенков - образец успешной миграции в Data Science. Прежде чем сделать карьеру в DS, он был студентом консерватории, играл на фаготе и работал в оркестре. Просто вспоминайте об этом, когда кто-то свысока шутит о гуманитариев :) Но вернемся к нашей дорожной карты.

Итак, если надо подтянуть знания по статистике, является курс по основам описательной и выводного статистики. Здесь вы узнаете, что такое выборка, медиана, дисперсия, распределение, корреляция, p-значение, t-критерий Стьюдента и тому подобное. Этот курс предполагает поверхностное знание языка программирования R. Для знакомства с R я воспользовался онлайновым курсом . Даже его половины достаточно, чтобы читать примеры кода по курсу статистики выше. Свои решения я реализовывал с помощью Python. Это, кстати, тоже полезный навык. Далеко не все исследователи данных пользуются Python, и вы можете встретить примеры реализаций других языках. Удобно, если вы можете прочитать и переписать на свой лад.

Что касается математической подготовки. Да, есть много распространенных инструментов и методов для исследования данных, которые уже давно реализовали в популярных библиотеках и описали простыми понятиями. В то же время Data Science стремительно развивается, ежедневно люди предлагают новые решения. Множество таких state-of-the-art решений можно найти в Пейпер, например, на arXiv.org . Часто такие Пейпер содержат математические формулы без примеров кода. Поэтому стоит научиться читать математические формулы и понимать идеи, которые стоят за ними. Итак, что делать, когда вы видите в Пейпер такое?
Карта развития в Data Science, или Как стать исследователем данных
Основные разделы математики, на которые стоит обратить внимание:

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

Что касается математического анализа, является видеолекции от Алексея Савватеева и Александра Тониса.

Если надо подтянуть знания по теории вероятностей, является курс от МФТИ на coursera. Кроме того, там есть курсы МФТИ по комбинаторике, графов, теории игр и тому подобное.

Как есть желание попрактиковаться с решением задач, могу порекомендовать авторский сайт Александра Емелина. В древности, когда я был студентом инженерного факультета, именно этот сайт очень помог мне в подготовке. Все учебники по математике, которые тогда попадали мне в руки, были полны необычными объяснениями и непонятными словами. В лучшем случае словами. А я был простым инженером без PhD по математике, мне надо было объяснить проще :) Если вы - как я, этот сайт может вам понравиться.

Но это именно математические курсы и лекции. Они не сосредоточены на задачах DS и ML. Простое понятное объяснение матричного умножения и дифференцировки и примеры их применения в нейронной сети я видел в книге «Make Your Own Neural Network» Тарика Рашида. Математические описания распространенных методов ML можно найти в упомянутом выше курсе от Open Data Science. Еще время от времени Data Science UA устраивают интересные лекции и воркшопы. Например, двухдневные курсы Make math great again от Марии Королюк и Марии Дворяшина или Data Science, Analytics and AI от Александра Романко. В общем, в DSUA полно интересных ивентов .

Если любите читать, могу посоветовать две книги: «How Not to Be Wrong» Джордана Елленберга и «Everybody Lies» Сета Стивенс-Давидовица. Это не учебники, а бестселлеры New York Times, в которых описано, как математика, статистика и исследования BigData помогают лучше понять мир. Есть в украинском переводе.

Машинное обучение

Именно ML обусловил мощное развитие сферы исследования данных в наше время. И, возможно, не через бешеную страсть к нормальному распределению и коробочных диаграмм, а именно из-за интереса к ML, AI и Skynet вы заинтересовались Data Science. Поэтому больше не медлить и перейду к самому интересному.

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

На платформе Prometheus является курс от Олеся Петрив (специалист по Deep Learning и Computer Vision). В общем курс по основам ML, много теории, но на последней неделе рассматривают и примеры CNN и LSTM нейронных сетей, из этого можно начать свое знакомство с Deep Learning и библиотекой Keras.

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

Здесь вам не обойтись без библиотеки sklearn, которую я упоминал в разделе «Инструменты». Scikit-learn часто используют в учебниках и курсах по основам ML, потому что она предоставляет высокоуровневый API. С этим инструментом вы можете, не углубляясь в математику и детали реализации, сосредоточиться на построении pipeline с подготовкой и трансформацией данных, подбором гиперпараметрив модели, валидацией и оценкой точности результатов.

Итак, sklearn и основы ML можно изучить на курсе от Мичиганского университета. Также есть роскошная книга «Introduction to Machine Learning with Python» Андреаса Мюллера и Сары Гвидо.

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

После знакомства с классическим ML время больше узнать о Deep Learning. Могу посоветовать роскошную книгу «Deep Learning with Python» Франсуа Шолль. Стоит заметить, что эта книга заложит базовые знания. В то же время новые архитектуры моделей и их модификации появляются почти каждый день. Это довольно экспериментальная сфера, следите за новостями в Deep Learning и feel free участвовать в экспериментов.

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

Например, если вы будете работать с временными рядами в трейдинге или розничной торговли, вам стоит ознакомиться с классическими методами анализа временных рядов типа ARIMA . Иногда они могут быть достаточно эффективным решением бизнес-задачи. Или хорошим baseline для проверки эффективности вашей LSTM-модели или ансамбля деревьев.

Кроме давно известных и распространенных методов, есть и экзотические решения типа Reinforcement Learning, Fuzzy Logic, Genetic Algorithm и тому подобное. Они реже попадались мне на практике, однако интересные и иногда могут пригодиться. Например, генетический алгоритм может помочь с подбором параметров вашей модели, когда ваша целевая функция НЕ дифференцируется и вы не можете оптимизировать параметры популярным градиентным спуском. GA поможет найти оптимальные гиперпараметры модели, когда использование Grid Search слишком затратным.

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

Собственно, сама работа - отличный способ обучения нового. Даже если вас пока не берут на работу вашей мечты в Boston Dynamics или Google, попробуйте устроиться в какой-то стартап, где вы начнете приобретать опыт.

Еще один способ попрактиковаться - соревнования на Kaggle . Там есть соревнования для тех, кто только учится, например House Prices и Titanic . Есть и возможность испытать себя, соревнуясь с опытными исследователями, решить трудные задачи.

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

Удачная визуализация, которая действительно помогает выявить и продемонстрировать другим что-то полезное, требует не только хорошего вкуса, но и немало знаний и опыта. Для начала можно ознакомиться с курсом визуализации данных от Анатолия Бондаренко на платформе Prometheus. Анатолий Бондаренко - основатель и руководитель проекту Texty, которые недавно получили престижную международную награду по журналистике данных. В этом курсов Нет программирования и сложных технических штук, это базовые знания о принципах визуализации.

Следующий рекомендуемый курс - это часть специализации от Мичиганского университета . Он дополнит теорию, но не ограничивается ею. Здесь вы научитесь пользоваться упомянутыми выше инструментами визуализации: Matplotlib, Seaborn, Plotly.

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

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

Офлайн

Кроме книг и онлайн-курсов, может быть полезно найти ментора или оффлайновый курс. Хороший ментор-практик или преподаватель помогут систематизировать знания и проведут вас шаг за шагом через весь pipeline работы с данными. К тому же, опираясь на собственный практический опыт, сделают это в контексте тех реалий, которые есть именно в украинских компаниях, командах, проектах. Это в определенной степени уже интегрирует вас в DS-сообщество.

С офлайновых курсов Data Science мне известны Hillel (г.. Киев, преподаватель Александр Коробов) и общий курс от компаний ISD и SOLVVE (г.. Днепр, преподаватель Алексей Нидзельский). По моему мнению, качество и программа курса очень зависят от того, кто преподает. Тем более в DS и ML, где еще нет полной стандартизации и каждый излагает учитывая собственный опыт и способности учить других людей. Мне в этом смысле повезло.

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

Одними из организаторов мероприятий, лекций, воркшопов для DS-community есть Data Science UA . Кроме того, многие IT-компаний в Украине проводят собственные митапы. Поэтому подписывайтесь на их рассылку, социальные страницы, телеграмм-каналы, просматривайте календарь DOU и будьте в курсе новостей.

нераскрытые темы
В начале статьи на диаграмме Венна вы могли заметить Domain Expertise. Мне нечего посоветовать вам по этому поводу. Специализация в пределах DS и получения экспертных знаний по определенной предметной области - это вопрос времени, карьерного развития, выбора и самореализации. Возможно, у вас уже есть предыдущий опыт в финансах, медицине, страховании и т.д., и это хорошо. В то же время Джуниор не обязательно должны быть носителями экспертных знаний в какой-то сфере.

Кроме того, в этой статье не раскрыты темы MLOps . Это сравнительно новая практика, и сегодня начать карьеру исследователем данных в Украине можно без этих навыков. Также обратите внимание на MLOps в пределах дальнейшего развития.

Еще не рассматривал работы с базами данных. Да, вам стоит знать, какие есть типы баз данных или как написать элементарный SQL-запрос. Однако, по моему мнению, не обязательно слишком углубляться в это, достаточно знаний, которые дают возможность самостоятельно реализовать простую взаимодействие с БД для MVP или найти общий язык с инженером на проект. Скорее всего, любой Back-end developer или BigData engineer реализует взаимодействие с хранилищем данных лучше вас. Зато чего он не сделает, то это не сможет проанализировать данные так, как вы. Поэтому сфокусируйтесь на том, что вы можете делать лучше других.

Кстати, несколько слов о взаимодействии в команде и организацию процессов на проект. Убежден, вам будет полезно ознакомиться с распространенными методологиями разработки IT-проектов с использованием ML и в целом. Стоит ознакомиться с такими распространенными методологиями, как CRISP-DM , Scrum, Kanban и тому подобное. Надеюсь, вам повезет работать на проектах, где налажено эффективные процессы работы.

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

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

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

В то же время самообразование не всегда способствует систематизации знаний, формированию целостной картины. Это может привести к кризису профессионализма и роста сертифицированных «экспертов», которые, пройдя какой-то курс по основам ML и научившись использовать библиотечную RandomForest-модель, позиционируют себя как Rockstar Data Scientist. В общем современный кризис профессионализма описал, например, профессор Том Николс в книге «The Death of Expertise» . В контексте же украинского IT можно найти полно критических историй о «войти в IT».

И хотя в этой статье я не раз утверждал, что есть определенный базовый объем знаний, усвоив который уже можно делать первые карьерные шаги, я желаю вам не останавливаться на достигнутом и постоянно совершенствоваться. Если же вы все-таки есть время и вдохновение получить высшее образование в Data Science, вот сравнения расходы на получение образования с Data Science в Европе.

Автор: Андрей Кошкин, специально для блога TVIRIN.RU

(771 рейтинг, средний 4,2 из 5)
Карта развития в Data Science, или Как стать исследователем данных
  • Карта развития в Data Science, или Как стать исследователем данных
  • IT
  • 771
  • Дата публикации 29.04 20

Смотрите похожие записи