30 июня 2020

👨‍🎓️📊 Как научиться Data Science онлайн: 12 шагов от новичка до профи

Пишу, перевожу и иллюстрирую IT-статьи. На proglib написал 140 материалов. Увлекаюсь Python, вебом и Data Science. Открыт к диалогу – ссылки на соцсети и мессенджеры: https://matyushkin.github.io/links/ Если понравился стиль изложения, упорядоченный список публикаций — https://github.com/matyushkin/lessons
12 шагов для тех, кто хочет с нуля построить карьеру в Data Science. Руководство к действию и россыпь ссылок на полезные ресурсы.
👨‍🎓️📊 Как научиться Data Science онлайн: 12 шагов от новичка до профи

1. Определитесь, кем вы хотите стать 💭

Область Data Science энергично развивается – массу примеров можно найти в нашем тесте «Правда или ложь: что умеют нейросети?». Но наука о данных это не только нейросети, но и классические алгоритмы машинного обучения (более понятные для бизнес-процессов), да и вообще всё, что связано с вопросами анализа, обработки и представления информации в цифровой форме.

Пока нельзя сказать, что в Data Science есть чёткое разделение труда — это неспециализированная профессия. Грубая аналогия: как в своё время были чистые Computer Scientists (информатики и программисты), разбирающиеся во всём, что связано с компьютерами, так теперь есть Data Scientists, занимающиеся всем, что связано с данными. Маркер первого движения к специализации труда – сфера онлайн-образования. К примеру, онлайн-университет Geekbrains, у которого уже есть факультеты Искусственного интеллекта и Аналитики Big Data, в июне 2020 г. открыл факультет Data Engineering. То есть одни люди в команде могут заниматься сбором, отслеживанием и хранением данных, а уже другие – их исследованием.

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

Есть специалисты Data Science, которых мы готовим к тому, чтобы они были разработчиками новых методов. Они должны знать математику на том уровне, чтобы уметь разрабатывать новые алгоритмы. Но таких людей нужно немного, потому что огромное количество алгоритмов уже сделано. Если вы хотите сделать тысяча первый алгоритм, нужны веские, профессионально аргументированные соображения, чтобы доказать сообществу, что ваш алгоритм нужен.
Людей, умеющих пользоваться готовыми алгоритмами, нужно в 50-100-500 раз больше. Кажется, что проблема как преподавать Computer Science и проблема «больше математики или больше инженерии» имеет такой ответ: нужно и то, и другое, но математику вы должны преподавать тщательно отобранному множеству людей, осознавших себя как творцы, конструкторы новых методов. Основной же массе нужны навыки использования технологий. Им не придётся сталкиваться с проблемами сходимости, потому что подобные проблемы решены до них, и есть готовые «кубики», позволяющие настраивать нейронные сети правильно, в них встроены даже недавно созданные инструменты. Они должны знать что такое back propagation, градиентный спуск и т. д., но в объёме, необходимом для понимания.

В приведённой ниже записи доклада создатель сообщества Open Data Science (о сообществе мы расскажем ниже) Алексей Натекин показывает, чем отличаются Data Analyst, Data Engineer и Data Scientist.

2. Подтяните математическую базу ➕

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

На Stepik есть подходящие бесплатные видеокурсы по каждой из областей с тестированием знаний:

Если иллюстраций, визуализации окажется недостаточно, обратите внимание на замечательный канал 3Blue1Brown. Канал англоязычный, но ко многим видеороликам сообщество поклонников подготовило русские субтитры. Есть плейлисты по линейной алгебре, анализу, дифференциальным уравнениям. Кстати, по многомерному математическому анализу есть подробный курс из 175 видео на канале Khan Academy.

Занимаясь по видеолекциям, не забывайте о возможности ускоренной перемотки. Чтобы задействовать моторную память и глубже проработать материал, ведите конспект.

3. Учитесь программировать 👨‍💻️

Кроме математики, нужно уметь программировать. Обычно в качестве основного языка аналитики данных выбирают Python или R. На Stepik есть хорошие курсы по обоим языкам, в том числе с упором на анализ данных:

У новичков в Data Science часто возникает вопрос о том, какой язык выбрать основным – созданный специально для обработки данных R или универсальный Python. Соответствующую дискуссию мы осветили в статье «Python и R: что выбрать для Data Science».

Коротко: если вы планируете сделать карьеру в науке о данных, мы советуем освоить оба языка. Знание концепций и библиотек R позволит быть на шаг впереди тех, кто использует только Python, и наоборот. Вот как об этом пишет специалист по анализу данных Ирина Голощапова:

Совмещая наиболее мощные и стабильные библиотеки R и Python в некоторых случаях можно повысить эффективность расчётов или избежать изобретения велосипедов для реализации каких-либо статистических моделей.

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

Но если хочется идти пусть и не простым, но более лёгким путём, то достаточно одного Python — по нему вы найдете больше курсов и ответов на всевозможные вопросы.

Примечание
Нужно понимать, что на практике и Python, и R обычно используются лишь для прототипирования и проверки гипотез. Промышленные модели машинного обучения переписываются на более быстрых языках – например, C++ или Go. Проверять идеи на низкоуровневых языках не слишком удобно, но для стабильного производительного решения –самое то 👍.Соответствующий опыт разработки описан в переведённой нами публикации Калеба Кайзера «Почему мы пишем инфраструктуру машинного обучения на Go, а не на Python».

4. Учитесь пользоваться инструментами 🛠️

Одним из самых популярных инструментов для обмена результатами анализа данных стали блокноты Jupyter:

Блокноты Jupyter и платформа Jupyter Lab позволяют в одном документе соединять код, текст в разметке Markdown и формулы в LaTeX, средства тестирования и профилирования. Кроме того, над блокнотами можно работать совместно с помощью Google Colab или JupyterHub.

Пример использования JupyterHub

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

Кроме того, на GitHub вы найдёте множество прекрасных проектов в области Data Science. Помните, что open source — один из простейших способов приобрести необходимый опыт работы в команде и внести свой вклад в общее дело.

С прочими популярными инструментами вы естественным образом столкнётесь в ходе прохождения курсов. Например, в Python для скоростной обработки массивов данных потребуется знание NumPy, для табличного представления данных обычно используются датафреймы Pandas, для визуализации – MatplotLib или Plotly, готовые классы популярных моделей машинного обучения импортируются из Scikit-learn.

Немногие курсы заостряют на этом внимание, но на практике данные обычно хранятся в базах данных – SQL или NoSQL. Для дальнейшей работы потребуется научится с ними общаться:

Для глубокого обучения необходимо познакомиться с фреймворками – TensorFlow или PyTorch. Есть и другие – их мы сравнили в статье «Фреймворк глубокого обучения: выбираем из 10 лучших».

5. Пройдите столько курсов Data Science, сколько сможете 🎓

Курсы:

Англоязычные курсы:

В качестве дополнения к курсам на MOOC-платформах можно смотреть YouTube-курсы, приведённые нами в статье 30 YouTube-каналов и плейлистов о Data Science:

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

Учебники на русском:

Учебники на английском:

6. Присоединитесь к сообществу Open Data Science 👥

Самым большим русскоязычным сообществом в сфере науки о данных является Open Data Science. Сообщество проводит конференции Data Fest, следит за соревнованиями по анализу данных ML trainings (в том числе делают разборы). Ещё ребята создали курсы по машинному обучению и нейронным сетям.

Но самое важное – это само сообщество, главной площадкой которого является Slack opendatascience. Ребята серьёзно относятся к тому, что они делают – чтобы «вступить в клуб», нужно получить приглашение.

В сообществе уже 49 тыс. участников и 300 каналов: вакансии, курсы, поиск коллег для коллаборации, каналы по отдельным темам, разбор научных статей, организации встреч в различных городах и странах. Есть даже обсуждение задач с собеседований – канал #gnomiki, задачи из которого мы приводили в статье «Собеседование и семь гномов».

Много интересного можно почерпнуть из англоязычных агрегаторов новостей из мира науки о данных:

Телеграм-каналы:

  • @dsproglib – канал Библиотеки программиста о Data Science
  • @deeplearning_ru – канал о глубоком обучении
  • @opendatascience – канал ODS.ai
  • @bigdata_ru – чат о Big Data, машинном обучении и искусственном интеллекте
  • @datasciencechat – чат о Data Science

Чтобы следить за мероприятиями в мире данных, заглядывайте время от времени на нашу страницу мероприятий или подпишитесь в телеграм-боте @event_listener_bot на тег Data Science.

Для чтения англоязычных блогов, загляните в подборку Data Science blogs. Если вы пользуетесь RSS, можно загрузить все ссылки через OPML-файл.

О твиттере
Многие специалисты в области IT предпочитают обычным блогам микроблоги в твиттер, как главное средство для обмена информацией. Есть там и множество специалистов по ML и анализу данных: Ilya Sutskever, Trent McConaghy, Andrej Karpathy, Andrew Trask, Pieter Abeel, Chris Olah, Nando de Freitas и др. Вы можете подписаться на составленный Ali Sohani список из более чем 100 людей, известных в области машинного обучения. Кроме того, на Quora есть обсуждение, включающее и другие аккаунты.

7. Участвуйте в соревнованиях (не только Kaggle) 🤼

Зарегистрируйтесь на Kaggle. Это не только самая известная площадка соревнований по машинному обучению с денежными призами, но и крупное сообщество с реестром датасетов, блокнотов Jupyter, мини-курсами и дискуссиями. Участие в рейтинге Kaggle в вашем резюме может дать вам дополнительный балл для прохождения собеседования.

Мнения экспертов о Kaggle:

Основной минус то, что это не задачи, которые приходится решать в бизнес-сфере, но Kaggle для этого не создавался. Сейчас практически нет соревнований, которые бы моделировали реальные ситуации. Но на сайте не написано, что на нём решаются задачи, которые полезны обществу. Соревнования не предназначены быть полезными. Kaggle полезен конкретным участникам, потому что они набираются опыта. У них появляется чёткий критерий для оценки методов.
Что касается людей, участвующих в Kaggle – если человек активно участвует, то он может ещё и рабочие мощности приспособить для этих соревнований. Это как наркотик, и многие, кто на это попадает, не могут остановиться. Но я советовал бы тем, кто занимается машинным обучением, не подсаживаясь на Kaggle, всё-таки посвятить ему достаточный отрезок времени, то есть не Titanic порешать, а те задачи, что решает сейчас ограниченный круг лиц в режиме онлайн, то есть каждый только что начал, посмотрите на скрипты других, посмотреть что пишут люди на форуме, попробовать разные гипотезы. Так вы получите бесценный опыт.

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

Александр Дьяконов в интервью Юрию Кашницкому и Алексею Натекину
Главный плюс Kaggle – есть механизм, где можно давать задачи на конкурс. Минус в том, что часто задача выхолащивается, придумывается искусственный функционал. Либо выборка не очень соответствует реальным данным и условиям применения.
С помощью Kaggle мы узнаём, кто лучший решатель задач и где есть центры компетенции. Но мы можем с грустью узнать, что все победители в лидер борде применяли что-то настолько замороченное, что мы не сможем строить на этом бизнес-процесс. При этом может существовать на два порядка более простое решение, дающее на полпроцента худший результат, но решающее бизнес-задачу.

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

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

Выкладываются данные с Большого адронного коллайдера, и вы можете попытаться обработать их на своём рабочем компьютере. У вас нет физической установки, но есть данные с неё. То же самое с данными из биоинформатики, молекулярной биологии, геологии. Вы поймёте как добывают нефть, как залегают полезные ископаемые, станет понятно многое про астрономию, социологию. Мы сократили путь людям к познанию мира, дали возможность погрузиться в современную науку через анализ данных, открытые датасеты и конкурсы.
Константин Воронцов в интервью Юрию Кашницкому и Алексею Натекину

Однако соревнования проходят не только на Kaggle. Следите за календарём соревнований по анализу данных. Видеозаписи разборов кейсов публикуются на ML Trainings и Open Data Science Video. Там вы найдёте записи тренировок с соревнований по компьютерному зрению, распознаванию изображений, обработке естественного языка, AutoML, рекомендательным системам и др.

8. Изучите специальные вопросы Data Science 👁️‍🗨️

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

Обратите внимание на следующие курсы Stepik:

Также пригодятся YouTube-каналы:

Не переставайте учиться. Просмотрите топ и сайдбар сабреддитов по темам, смежным машинному обучению:

9. По итогам каждого курса делайте проект 🏗️

Используйте новые знания в области Data Science на пользу себе и другим людям. Создайте что-то, что заставит других воскликнуть «вау»! Множество идей для проектов перечислено в списках awesome-ai-usecases, 51 toy data proble, practical-pandas-projects.

Можно отталкиваться не от проекта, а интересного датасета. Список популярных реестров:

Множество обсуждений с идеями проектов можной найти на Quora:

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

10. Читайте научные статьи🔬

Главные языки науки о данных это не Python или R, а английский язык и язык математики. Хотя появляется всё больше курсов на русском языке, самая актуальная информация — в последних международных статьях.

К академическому языку нелегко привыкнуть. Чтобы эффективно работать с научными публикациями, прочитайте наш материал «Как правильно искать и читать научные статьи?»

Препринты статей публикуются на сайте arXiv. Самые полезные для дата-сайентистов разделы:

Уследить за всеми публикациями просто невозможно. Вычленить самые важные тексты помогут перечисленные выше ветки Reddit, а также сайт Андрея Карпатого Arxiv Sanity Preserver (с тех пор, как автор стал главой отдела по ИИ в Tesla, сайт стал чаще ломаться, но всё равно это лучший инструмент). Ещё есть вот такой список статей с комментариями и записи вебинаров с YouTube-канала Kaggle с разбором научных статей, связанных с алгоритмами науки о данных.

11. Устройтесь на стажировку/работу по Data Science🕴

Data Science – востребованная профессия с высокой конкуренцией. Но даже результаты собеседований участники сообщества превращают в данные. Существует множество списков вопросов для подготовки к интервью на позицию data scientist'а:

В этом году с этим труднее, но надеемся, что скоро вернутся летние школы и стажировки:

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

В следующем видео Валерий Бабушкин интересно рассказывает о карьере в Data Science и типичных ошибках на собеседованиях.

Как готовиться к собеседованиям? Каких навыков и знаний не хватает специалистам, приходящим на работу в индустрии Data Science?

По-моему опыту, сейчас людей не надо готовить. Многие понимают свой уровень подготовки. Тонкий вопрос – куда можно устроиться и как, если ты совсем новичок. Некоторые компании имеют программы стажировок, другие только нанимают. Многому можно научиться в домашних условиях.
Другое дело, вот пример самой странной ситуации на собеседовании. Мы нанимали парня из Новосибирска, неплохого учёного, с медалью Академии Наук за лучшую работу, преподавателя машинного обучения, который мог рассказать о любом из алгоритмов, то есть имеются необходимые математические знания. Но потом мы задали несколько простых вопросов на программирование: есть список на Python ['a', 'b', 'c', 'd']. Что нужно, сделать, чтобы получить ['d', 'c', 'b', 'a']? Элементарный вопрос на знание синтаксиса языка. Он говорит: я не могу так, на бумажке, мне нужен компьютер с доступом к интернету, я загуглю. Зачем мне сотрудник, который каждую строчку кода будет гуглить?
Александр Дьяконов в интервью Юрию Кашницкому и Алексею Натекину

12. Поделитесь опытом с сообществом 📢

Расскажите о своем проекте или находке с сообществом Data Science. Подготовьте доклад и выступите на локальном митапе – ближайшие можно найти среди каналов через поиск в Slack ODS. Заведите блог, в котором вы будете делиться находками, собственными идеями и репозиториями. Опубликуйте статью на Proglib. Мы помогаем нашим читателям распространить интересные идеи и полезные знания.

И последнее, но не менее важное – успевайте насладиться тем, как ваши навыки помогают делать мир лучше!

Больше полезной информации вы можете получить на нашем телеграм-канале «Библиотека data scientist’а».
***

Хочу подтянуть знания по математике, но не знаю, с чего начать. Что делать?

Если базовые концепции языка программирования можно достаточно быстро освоить самостоятельно, то с математикой могут возникнуть сложности. Чтобы помочь освоить математический инструментарий, «Библиотека программиста» совместно с преподавателями ВМК МГУ разработала курс по математике для Data Science, на котором вы:

  • подготовитесь к сдаче вступительных экзаменов в Школу анализа данных Яндекса;
  • углубитесь в математический анализ, линейную алгебру, комбинаторику, теорию вероятностей и математическую статистику;
  • узнаете роль чисел, формул и функций в разработке алгоритмов машинного обучения.
  • освоите специальную терминологию и сможете читать статьи по Data Science без постоянных обращений к поисковику.

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

Комментарии

ВАКАНСИИ

Добавить вакансию
Разработчик C++
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ