👨🎓️📊 Как научиться Data Science онлайн: 12 шагов от новичка до профи
12 шагов для тех, кто хочет с нуля построить карьеру в Data Science. Руководство к действию и россыпь ссылок на полезные ресурсы.
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 есть подходящие бесплатные видеокурсы по каждой из областей с тестированием знаний:
- Линейная алгебра (17 часов занятий)
- Введение в математический анализ (26 часов)
- Теория вероятностей (38 часов)
- Основы статистики, часть 2, часть 3 (суммарно 43 часа)
Если иллюстраций, визуализации окажется недостаточно, обратите внимание на замечательный канал 3Blue1Brown. Канал англоязычный, но ко многим видеороликам сообщество поклонников подготовило русские субтитры. Есть плейлисты по линейной алгебре, анализу, дифференциальным уравнениям. Кстати, по многомерному математическому анализу есть подробный курс из 175 видео на канале Khan Academy.
Занимаясь по видеолекциям, не забывайте о возможности ускоренной перемотки. Чтобы задействовать моторную память и глубже проработать материал, ведите конспект.
3. Учитесь программировать 👨💻️
Кроме математики, нужно уметь программировать. Обычно в качестве основного языка аналитики данных выбирают Python или R. На Stepik есть хорошие курсы по обоим языкам, в том числе с упором на анализ данных:
У новичков в Data Science часто возникает вопрос о том, какой язык выбрать основным – созданный специально для обработки данных R или универсальный Python. Соответствующую дискуссию мы осветили в статье «Python и R: что выбрать для Data Science».
Коротко: если вы планируете сделать карьеру в науке о данных, мы советуем освоить оба языка. Знание концепций и библиотек R позволит быть на шаг впереди тех, кто использует только Python, и наоборот. Вот как об этом пишет специалист по анализу данных Ирина Голощапова:
Совмещая наиболее мощные и стабильные библиотеки R и Python в некоторых случаях можно повысить эффективность расчётов или избежать изобретения велосипедов для реализации каких-либо статистических моделей.
Во вторую очередь, это повышение скорости и удобства выполнения проектов, в случае если разные люди в вашей команде (или вы сами) обладают хорошими знаниями разных языков. Здесь может помочь разумная комбинация имеющихся навыков программирования на R и Python.
Но если хочется идти пусть и не простым, но более лёгким путём, то достаточно одного Python — по нему вы найдете больше курсов и ответов на всевозможные вопросы.
4. Учитесь пользоваться инструментами 🛠️
Одним из самых популярных инструментов для обмена результатами анализа данных стали блокноты Jupyter:
- JupyterLab и Jupyter Notebook — мощные инструменты Data Science
- Jupyter Notebook: галерея блокнотов по ML и Data Science
Блокноты Jupyter и платформа Jupyter Lab позволяют в одном документе соединять код, текст в разметке Markdown и формулы в LaTeX, средства тестирования и профилирования. Кроме того, над блокнотами можно работать совместно с помощью Google Colab или JupyterHub.
Научитесь пораньше пользоваться Git. В процессе работы вам придётся выбирать между множеством моделей и архитектурных решений – контроль версий здесь как нельзя кстати.
Кроме того, на GitHub вы найдёте множество прекрасных проектов в области Data Science. Помните, что open source — один из простейших способов приобрести необходимый опыт работы в команде и внести свой вклад в общее дело.
С прочими популярными инструментами вы естественным образом столкнётесь в ходе прохождения курсов. Например, в Python для скоростной обработки массивов данных потребуется знание NumPy, для табличного представления данных обычно используются датафреймы Pandas, для визуализации – MatplotLib или Plotly, готовые классы популярных моделей машинного обучения импортируются из Scikit-learn.
Немногие курсы заостряют на этом внимание, но на практике данные обычно хранятся в базах данных – SQL или NoSQL. Для дальнейшей работы потребуется научится с ними общаться:
- Введение в базы данных
- Интерактивный тренажёр по SQL
- Hadoop. Система для обработки больших объёмов данных
Для глубокого обучения необходимо познакомиться с фреймворками – TensorFlow или PyTorch. Есть и другие – их мы сравнили в статье «Фреймворк глубокого обучения: выбираем из 10 лучших».
5. Пройдите столько курсов Data Science, сколько сможете 🎓
Курсы:
- Специализация Машинное обучение и Анализ данных (Яндекс и МФТИ) (Coursera), множество полезных дополняющих материалов в списке Кати Демидовой
- Введение в Data Science и машинное обучение (Stepik)
- Курс по Эконометрике от ВШЭ (Coursera)
Англоязычные курсы:
- Курс Эндрю Ына по машинному обучению на Coursera (англ.) – один из самых популярных MOOC-курсов. Cтоит пройти хотя бы потому, что к нему часто отсылают другие продвинутые курсы. Однако вместо стандартных Python и R используется Octave/Matlab.
- Погружение в глубокое обучение: бесплатная интерактивная книга с кодом, математикой и обсуждениями http://d2l.ai
- Лесковец и др. Майнинг массивных наборов данных. Есть разбивка по главам: pdf, упражнения, презентации, видео.
- Вероятностное программирование и байесовские методы для хакеров
- Курсы на DataCamp
- Гарвардский курс по Data Science (eDX)
В качестве дополнения к курсам на MOOC-платформах можно смотреть YouTube-курсы, приведённые нами в статье 30 YouTube-каналов и плейлистов о Data Science:
- На канале Яндекса Компьютерные науки можно прослушать курс К.В. Воронцова «Машинное обучение» (2019).
- Более доступный курс, не требующий сильного математического бэкграунда – Открытый курс по машинному обучению Юрия Кашницкого.
- Курс Deep Learning на пальцах – курс Семёна Козлова, разработчика стартапа Instrumental, бывшего сотрудника Dropbox и Microsoft.
Не волнуйтесь, если вы проходите курсы быстрее (или медлее), чем это предполагали авторы. Интервал времени, необходимый для прохождения курса – вещь субъективная, тем более, что часть знаний в курсах пересекается.
Учебники на русском:
- Воронцов К. В. Математические методы обучения по прецедентам (теория обучения машин)
- 10 Data Science книг к прочтению в 2020 году
Учебники на английском:
- Хасти и др. Элементы статистического обучения (pdf)
- Академически оформленный курс по машинному обучению Hal Daumé III
- Шалев-Шварц и Бен-Давид. Понимание машинного обучения: от теории к алгоритмам (pdf)
- Дэвид Барбер. Байесовская теория принятия решений и Машинное обучение (pdf)
- Том Митчелл. Машинное обучение (pdf)
- Деврой и др. Вероятностная теория распознавания образов (pdf)
- Аккуратно оформленные издания с удобным копированием кода R в действии: анализ данных и графики с R и Машинное обучение в действии
- Более 100 бесплатных книг по Data Science
- Бесплатные книги по Data Science издательства O'Reilly
- Шпаргалка-справочник по ключевым понятиям и алгоритмам машинного обучения
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-файл.
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:
- Нейронные сети курса Институт Биоинформатики.
- Курс Deep Learning от Школы глубокого обучения МФТИ: базовый поток и продвинутый поток.
- Нейронные сети и компьютерное зрение.
- Нейронные сети и обработка текста.
- Введение в обработку естественного языка.
- Вероятностные графовые модели.
- Курс по структурам данных Data Structures (англ.).
- Компьютерная графика: основы (пригодится для работы с моделями, обрабатывающими изображения).
Также пригодятся YouTube-каналы:
- На YouTube-канале Computer Science Center курсы по специальным разделам удобно организованы в плейлисты: машинное обучение (вторая часть), анализ изображений и видео (вторая часть), введение в обработку естественного языка, анализ данных на Python в примерах и задачах (продолжение), анализ данных на R, технологии хранения и обработки больших объемов данных, математическая статистика.
- На YouTube-канале Факультета компьютерных наук ВШЭ есть плейлист с курсами Машинное обучение, Байесовские методы в машинном обучении, анализу сетевых структур (последний на английском).
- На канале Лекториума разбросаны плейлисты курсов Сергея Николенко о машинном обучении, генеративных состязательных нейросетях, коммуникационной сложности, байесовском выводе. Ещё есть лекции Евгения Соколова о рекомендательных системах, Александра Дайняка о математических методах визуализации данных.
Не переставайте учиться. Просмотрите топ и сайдбар сабреддитов по темам, смежным машинному обучению:
- /r/analyzit
- /r/bigdata
- /r/computervision
- /r/datacleaning
- /r/datagangsta
- /r/dataisbeautiful
- /r/dataisugly
- /r/datascience
- /r/datasets
- /r/dataviz
- /r/JupyterNotebooks
- /r/LanguageTechnology
- /r/learnmachinelearning
- /r/MachineLearning
- /r/opendata
- /r/rstats
- /r/probabilitytheory
- /r/pystats
- /r/SampleSize
- /r/semanticweb
- /r/statistics
- /r/textdatamining
9. По итогам каждого курса делайте проект 🏗️
Используйте новые знания в области Data Science на пользу себе и другим людям. Создайте что-то, что заставит других воскликнуть «вау»! Множество идей для проектов перечислено в списках awesome-ai-usecases, 51 toy data proble, practical-pandas-projects.
Можно отталкиваться не от проекта, а интересного датасета. Список популярных реестров:
- Реестр открытых данных на data.gov.ru
- Публичные наборы данных Google
- Датасеты Kaggle (40 тыс.)
- Ветка reddit /r/datasets
- Репозиторий машинного обучения UCI
- Агрегирующий список открытых источников датасетов awesome-public-datasets
- Перечень крупных публичных датасетов
- Список качественных датасетов Webhose.io
- Датасеты общества IEEE
- Аккумулятор данных Wolfram Data Drop
- База статистических данных по финансам, спорту, географии, промышленности
Множество обсуждений с идеями проектов можной найти на Quora:
- Какие проблемы Data Science могут быть решены в выходные дни одним программистом? Я изучаю машинное обучение и статистику и ищу что-то социально значимое с использованием общедоступных наборов данных и API
- Как начать создавать систему рекомендаций? С помощью каких инструментов / технологий / алгоритмов лучше всего построить движок? Как проверить эффективность рекомендаций?
Для каждого проекта создавайте публичный репозиторий на GitHub. Доводите результат до ума, делитесь ими в своём блоге и сообществе. Вносите вклад в сторонние проекты, публикуйте свои идеи и мысли. Всё это поможет составить портфолио и познакомиться с людьми, работающими над родственными задачами.
10. Читайте научные статьи🔬
Главные языки науки о данных это не Python или R, а английский язык и язык математики. Хотя появляется всё больше курсов на русском языке, самая актуальная информация — в последних международных статьях.
К академическому языку нелегко привыкнуть. Чтобы эффективно работать с научными публикациями, прочитайте наш материал «Как правильно искать и читать научные статьи?»
Препринты статей публикуются на сайте arXiv. Самые полезные для дата-сайентистов разделы:
Уследить за всеми публикациями просто невозможно. Вычленить самые важные тексты помогут перечисленные выше ветки Reddit, а также сайт Андрея Карпатого Arxiv Sanity Preserver (с тех пор, как автор стал главой отдела по ИИ в Tesla, сайт стал чаще ломаться, но всё равно это лучший инструмент). Ещё есть вот такой список статей с комментариями и записи вебинаров с YouTube-канала Kaggle с разбором научных статей, связанных с алгоритмами науки о данных.
11. Устройтесь на стажировку/работу по Data Science🕴
Data Science – востребованная профессия с высокой конкуренцией. Но даже результаты собеседований участники сообщества превращают в данные. Существует множество списков вопросов для подготовки к интервью на позицию data scientist'а:
- Data Science Interview Questions
- Как мне подготовиться к собеседованию по Data Science
- Как подготовиться к вопросам по статистике
- Какого типа вопросы по A/B-тестированию следует ожидать на собеседовании
В этом году с этим труднее, но надеемся, что скоро вернутся летние школы и стажировки:
- В каких компаниях есть стажировки по Data Science для студентов
- Какие советам следовать, если я хочу подать заявку на стажировку по Data Science или Software Engineering
- Когда лучше всего подавать заявки на летние стажировки по Data Science
Обязательно воспользуйтесь своими навыками в майнинге данных для анализа рынка труда – проанализируйте, какие навыки встречаются в вакансиях чаще, чтобы их максимально отточить. Оцените, какой доход можно ожидать с учётом трат на месте, аренды жилья и переезда в другой город.
В следующем видео Валерий Бабушкин интересно рассказывает о карьере в Data Science и типичных ошибках на собеседованиях.
Как готовиться к собеседованиям? Каких навыков и знаний не хватает специалистам, приходящим на работу в индустрии Data Science?
По-моему опыту, сейчас людей не надо готовить. Многие понимают свой уровень подготовки. Тонкий вопрос – куда можно устроиться и как, если ты совсем новичок. Некоторые компании имеют программы стажировок, другие только нанимают. Многому можно научиться в домашних условиях.
Другое дело, вот пример самой странной ситуации на собеседовании. Мы нанимали парня из Новосибирска, неплохого учёного, с медалью Академии Наук за лучшую работу, преподавателя машинного обучения, который мог рассказать о любом из алгоритмов, то есть имеются необходимые математические знания. Но потом мы задали несколько простых вопросов на программирование: есть список на Python['a', 'b', 'c', 'd']
. Что нужно, сделать, чтобы получить['d', 'c', 'b', 'a']
? Элементарный вопрос на знание синтаксиса языка. Он говорит: я не могу так, на бумажке, мне нужен компьютер с доступом к интернету, я загуглю. Зачем мне сотрудник, который каждую строчку кода будет гуглить?
12. Поделитесь опытом с сообществом 📢
Расскажите о своем проекте или находке с сообществом Data Science. Подготовьте доклад и выступите на локальном митапе – ближайшие можно найти среди каналов через поиск в Slack ODS. Заведите блог, в котором вы будете делиться находками, собственными идеями и репозиториями. Опубликуйте статью на Proglib. Мы помогаем нашим читателям распространить интересные идеи и полезные знания.
И последнее, но не менее важное – успевайте насладиться тем, как ваши навыки помогают делать мир лучше!
Хочу подтянуть знания по математике, но не знаю, с чего начать. Что делать?
Если базовые концепции языка программирования можно достаточно быстро освоить самостоятельно, то с математикой могут возникнуть сложности. Чтобы помочь освоить математический инструментарий, «Библиотека программиста» совместно с преподавателями ВМК МГУ разработала курс по математике для Data Science, на котором вы:
- подготовитесь к сдаче вступительных экзаменов в Школу анализа данных Яндекса;
- углубитесь в математический анализ, линейную алгебру, комбинаторику, теорию вероятностей и математическую статистику;
- узнаете роль чисел, формул и функций в разработке алгоритмов машинного обучения.
- освоите специальную терминологию и сможете читать статьи по Data Science без постоянных обращений к поисковику.
Курс подойдет как начинающим специалистам, так и действующим программистам и аналитикам, которые хотят повысить свой уровень или перейти в новую область.