Автор
monnok
Опыт разработки более 15 лет.

Старт карьеры в Data Science

  1. Введение
  2. Какие навыки необходимы для работы в областях Data Science и Machine Learning?
  3. Кто может стать специалистом в области машинного обучения?
  4. Как приобрести необходимые навыки?
  5. Рекомендуемые курсы

Картинка 1

Введение

Благодаря развитию технологий машинного обучения, одной из наиболее востребованных профессий на IT-рынке в последнее время становится профессия Data Scientist. Data Scientist - это технический специалист, решающий аналитические задачи на основе больших объемов информации путем применения математических, статистических и алгоритмических инструментов машинного обучения (Machine Learning). Различные источники анонсируют средний уровень заработной платы в 2021 году на уровне 170 тыс. руб/месяц для специалиста по машинному обучению уровня middle [1] [2]. Дефицит кадров на рынке и общий ажиотаж вокруг технологий искусственного интеллекта рисуют радужные перспективы для старта карьеры в этом направлении. Попробуем разобраться, так ли просто начать с нуля и достаточно ли пройти онлайн курсы для трудоустройства?

Какие навыки необходимы для работы в областях Data Science и Machine Learning?

Для того чтобы понять, какие навыки нужны для успешной работы в областях Data Science/Machine Learning, необходимо в первую очередь разобраться со спектром решаемых специалистами в данных областях задач.

Картинка 2

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

Эта, и любая другая типовая Data Science-задача обычно делится на несколько этапов:

  • сбор данных для анализа - найти, собрать и сохранить необходимое количество информации, которая потенциально может помочь решить нашу задачу;
  • анализ собранных данных - провести дисперсионный анализ собранной информации, посмотреть, какими свойствами обладают различные признаки, выбрать наиболее репрезентативные (feature-engineering);
  • обучение и валидация моделей - сформулировать некоторую гипотезу и выбрать алгоритм её проверки, обучить модель, осуществить её валидацию, оценить качество полученного решения.

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

Картинка 3

Для Machine Learning инженеров характерен также этап вывода обученных моделей в продакшн-окружение - туда, где эти модели будут приносить пользу и зарабатывать деньги, путем выполнения некоторой пользовательской задачи.

Каждый из этих этапов, помимо знания доменной области, в рамках которой решается задача, требует наличия некоторого уровня технической компетенции, так как в большинстве сценариев предполагает написание программного кода. Основным языком в области машинного обучения является язык python, реже - R, или более специфические языки, встроенные в различные инженерные и научные программные пакеты, типа MATLAB. Если рассматривать наиболее общий вариант - python, то необходимо отметить, что, порог входа в python относительно enterprise-языков программирования (например, Go, C++, C# или Java) не высок, тем не менее, для успешного решения исследовательских задач потребуются общие знания алгоритмов и структур данных.

Данные для анализа, как правило, необходимо предварительно собирать из различных источников. На начальном уровне junior-специалист должен иметь представление о работе с реляционными базами данных. Реляционные базы данных выступают классическим источником структурированной информации. Доступ к информации, хранящейся в базе данных, осуществляется, как правило, с помощью некоего SQL-подобного языка программирования, так что базовый навык написания SQL-запросов является крайне-желательным, и позволит специалисту быть более привлекательным для работодателя. Обучение и валидация моделей помимо общих знаний языка python требует также знания специфических для области машинного обучения фреймворков и библиотек: Pandas и NumPy – для работы с данными; PyTorch, Keras, TensorFlow – для глубокого обучения; XGBoost, CatBoost и др. для построения моделей градиентного бустинга и т.д. Чем шире технических кругозор, тем более гибкое решение поставленной задачи специалист сможет предложить.

Несмотря на обилие готовых технических инструментов решения задач, специалист в области Data Science должен четко понимать каким образом можно решать ту или иную задачу. Для успешного применения технического инструментария потребуются теоретические знания теории вероятности и математической статистики, линейной алгебры и математического анализа. Для успешной работы в области глубокого обучения (Deep Learning) – необходимо понимать, как устроены искусственные нейронные сети и разбираться в их архитектурах. Для успешной валидации моделей требуется знать различные меры оценки качества получаемых решений. Решение задач машинного обучения предполагает наличие навыков работы с множеством инфраструктурных инструментов. Например, JupyterLab – для написания экспериментального кода и подготовки технических отчетов, MLFlow – для трекинга результатов экспериментов и хранения обученных моделей, Docker – для быстрого развертывания необходимого окружения и др.

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

Кто может стать специалистом в области машинного обучения?

Наличие технической компетенции безусловно является ключевым требованием для успешного старта карьеры. Тем не менее любые технические навыки, будь то знание языка программирования или умение пользоваться docker-контейнерами, или знание архитектуры Transformer – являются практико-зависимыми. Чем больше вы учитесь и работаете, тем больше знаете. Основной «скилл» любого специалиста – его опыт. Но несмотря на это, неотъемлемым качеством успешного Data Scientist’а является любознательность. Именно любознательность и желание докапываться до сути вещей и процессов позволяет всегда поддерживать должный уровень вовлеченности в процесс исследований. Решение задач машинного обучения – это на 90% работа с исходными данным – кропотливый сбор, анализ, выделение признаков, проверка гипотез и далее – по кругу. Если вы не обладаете должным уровнем усидчивости, то большинство задач для вас станут скучной рутиной, которую не способна будет нивелировать даже хорошая финансовая компенсация. Поэтому, если вы задумываетесь о выборе профессии в области Data Science, вы должны в первую очередь честно ответить себе на вопрос – а действительно ли вы хотите посветить этому значительную часть вашей осознанной жизни?

Как приобрести необходимые навыки?

Картинка 4

Если вы всё же решили, что Data Science – это про вас, и хотите развивать свои компетенции именно в этом направлении, то вам повезло, так как в настоящее время существует множество соответствующих онлайн-курсов. Так как основным инструментом Data Scientist’а является python, то начинать подготовку к освоению специальности рекомендуется именно с изучения этого языка программирования. Почти все общие курсы по Data Science содержат блок, посвященный программированию, но, как правило, программа курса сосредоточена сразу вокруг DS-специфичных библиотек. Умение пользоваться этими библиотеками безусловно крайне необходимо будущему Data Scientist'у, но изучение python лучше начать с отдельного курса.

Для этого есть несколько объективных причин:

  • python достаточно прост в освоении и не требует никаких специальных знаний или математического бекграунда;
  • отдельный курс позволит сконцентрироваться на программировании. После прохождения такого курса вы уже будете обладать знанием языка программирования, алгоритмов и структур данных и в последствии сможете быстрее освоить DS-инструментарий.
  • python-программист – это хорошая и высокооплачиваемая IT-профессия. Возможно, что вам настолько понравится программировать, что вы забудете про Data Science и сможете начать свой путь в IT намного быстрее.
  • даже если вам не понравится программирование на python, и вы разочаруетесь в технических специальностях, вы потратите намного меньше времени и денег, потому что курс по python – дешевле и менее продолжителен, нежели курсы по машинному обучению.

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

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

  • анализ данных с помощью python – изучение библиотек Pandas и NumPy – основных программных библиотек для работы с данными.
  • визуализация данных с помощью python – где вас научат строить графики и визуальные интерпретации анализируемой информации.
  • основы SQL - для работы с источниками данных.
  • дисперсионный/разведывательный анализ – основы математической статистики, feature extraction и feature engineering.
  • валидация данных и оценка моделей.
  • глубокое обучение – основы работы с искусственными нейронными сетями.

Для хорошо организованных курсов характерно наличие блока по углубленной специализации. Это может быть, например, NLP (Natural Language Processing) или CV (Computer Vision). Наличие такого модуля в курсе позволит получить углубленные знание по одному из практических DS-направлений. Стоит выбирать то, что больше нравится.

Рекомендуемые курсы

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

Курсы по python:

  1. Python Basic
  2. Python-разработчик с нуля
  3. Алгоритмы и структуры данных на Python. Базовый курс
  4. Основы языка Python

Курсы по Data Science:

  1. Профессия Data Scientist
  2. Data Scientist
  3. Data Scientist: машинное обучение
  4. Data Scientist: анализ данных
  5. Data Scientist
  6. Data Scientist: с нуля до middle

Ваше будущее в ваших руках! Успехов в учебе!