7 курсов по Data Science, которые помогли мне войти в профессию специалиста по машинному обучению и анализу данных


Уже почти год я занимаюсь машинным обучением и анализом данных, а не контекстной рекламой. Почему — это тема отдельной статьи, которую я, пожалуй, оставлю на потом 🙂 В основном, делюсь своими успехами в FB. Там же, в комментариях я пообещал написать небольшой обзор курсов, которые прошел, чтобы войти в профессию специалиста по машинному обучению и анализа данных. Собственно, вот этот обзор.

Войти в профессию в моем понимании — это начать зарабатывать этим деньги, если что.

С наскока не получится. Будет сложно

Перед тем, как я влез во все это, я думал: раз умею работать с трафиком, google certified trainer, разбираюсь в аналитике, пишу на JavaScript, PHP, когда-то писал на Java и вообще весь из себя такой крутой, то и с машинным обучением быстро разберусь. Месяц-два и я в теме. Редко я так сильно заблуждался 🙂

Машинное обучение и анализ данных тянет за собой целый хвост дисциплин, в которых стоит разбираться хотя бы на уровне «могу примерно понять, что здесь происходит»:

  • статистика
  • линейная алгебра
  • математический анализ
  • комбинаторика
  • теория вероятности
  • алгоритмы и структуры данных
  • методы численной оптимизации
  • … список неполный, если что 🙂

Ну и само собой, придется писать код. Скорее всего, это будет Python или R. А если собираетесь стать хардкорным ML-инженером — то еще и на C++.

В общем, если вы, в отличие от меня, олимпиадник и PhD по математике, то все просто.

Итак, поехали.

1. Специализация «Машинное обучение и анализ данных» от Яндекса и МФТИ на Coursera

Не зря это называется «специализация». 5 полноценных курсов + последний — финальный проект. Рассчитана на 8 месяцев, хотя я довольно спокойно прошел за 5, проходя параллельно другие курсы и добирая знаний там, где их было недостаточно. 

По каждой теме курса — отличные конспекты и довольно интересные задания. В чатике курса — на момент написания статьи 5754 человека. Мне помогали даже глубокой ночью в пятницу 🙂

Единственное, что может смутить кого-то — это то, что видео курса записан для Python 2. Но задания уже переделали под 3-й питон. Реальная разница в коде в 99% случаев — это наличие или отсутствие скобочек у оператора print. Поэтому я забил на это и спокойно проходил. Актуальность в порядке.

Пройдемся по каждому курсу по отдельности:

1. Математика и Python для анализа данных

Супрекомпактный курс, в котором всего по чуть-чуть: основы Pandas, Numpy, Matplotlib, немного про матрицы и линейную алгебру, оптимизацию функций в scipy, градиентный спуск и другие методы оптимизации, основные понятия статистики и центральную предельную теорему. 

Что такое производная и как писать на Python «Hello World», никто объяснять не будет, поэтому будьте готовы к тому, что придется вспомнить что-то из программы математики старших классов и посмотреть самую бузе про то, как писать на Python. Что-то вроде «Python с нуля за 20 секунд» вполне сойдет.

2. Обучение на размеченных данных

Здесь уже начинается само машинное обучение: будете обучать алгоритмы на размеченных данных и потом ими что-то предсказывать 🙂 Будет про линейные модели, деревья и ансамбли алгоритмов. Ну и конечно, про то, как оценивать качество моделей. 

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

3. Поиск структуры в данных

Если в предыдущем курсе говорили о данных с «ответами» (ценой), то здесь речь о том, что можно сделать с данными, у которых «ответа» нет. К примеру, как разбить всех клиентов клиентской базы на 8 сегментов (кластеров), каждый из которых обладает какими-то своими особенностями. Или найти клиентов из базы, выбивающихся из общей массы (поиск аномалий). Или научить алгоритм выделять в куче разных текстов темы и разделять тексты по этим темам (тематическое моделирование). 

4. Построение выводов по данным

Здесь о статистике. Я полюбил и возненавидел этот курс одновременно 🙂 Полюбил за интересные задания. А возненавидел за то, как сухо и без объяснений «почему именно так» подается теория. Про проверку статистических гипотез, различные статистические критерии, АБ-тестирование и т.д. Мне с нуля было сложно. В общем, это нужно просто пережить 🙂

5. Прикладные задачи анализа данных

Курс очень кратко по верхам про 4 больших раздела в машинном обучении: прогнозирование временных рядов (продажи, погода, курс биткойна), компьютерное зрение (это о том, как, к примеру, научить алгоритм отделять фоточки енотов от своих селфи), анализ текстов (к примеру, как научить алгоритм отличать позитивный отзыв в соцсетях от негативного) и рекомендательные системы. Лента в фейсбучке, рекомендации в яндекс.музыке, рекомендации фильмов в Netflix — это все работа рекомендательных систем.

6. Финальный проект

Берете на выбор один из 4-х проектов и доводите его по шагам до точки, в которой проект можно положить к себе в портфолио. Можно сделать и все 4, если к этому моменту у вас еще будет на это время 🙂 

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

И да, к каждой неделе есть конспект. И эти конспекты шикарны: все кратко и в одном месте. Я до сих пор в них иногда заглядываю.

2. «Линейная алгебра» от Высшей школы экономики на Coursera

Наверное, не самый лучший курс по линейной алгебре в мире 🙂 У меня осталось впечатление излишнего формализма: очень правильно и точно рассказывают и доказывают формулы, но не объясняют, почему так и откуда эти формулы взялись. Т.е. понятно, что рассказали, но не понятно, для чего это и почему так. Но для вводной подойдет.

По содержанию — разбирают самые азы: как найти определитель, собственные векторы и собственные значения матрицы, решить СЛАУ, решить уравнение в матричном виде, отличать отображение от ядра и т.д. Для того, чтобы без особого ужаса читать формулы и не пугаться фраз типа «матрица плохо обусловлена» более чем достаточно. 

Проходить стоит, потому что линейной алгебры в машинном обучении много.

3. «Основы статистики» на Stepik

Шикарный вводный курс от института биоинформатики. Ведет Анатолий Карпов, и ведет просто замечательно. 

Чаще всего я встречал случаи, когда даже простые вещи на курсах преподаватели объясняют сложно. Почему так — большой вопрос. Может, стараются так поднять свой авторитет. Или следуют принципу «я страдал — и ты будешь». Это не преподавание, а способ потешить свое эго. Сам через это проходил и представляю, соблазн велик 🙂

Здесь же обратная ситуация: объясняют для того, чтобы мы поняли. Получается просто, понятно и интересно. Прошел курс быстро и с огромным удовольствием. Пока что, по мне, лучший курс по основам статистики. Если быть точным, там 3 части курса, со 2-й части начинаются задания на R. 

Просто настоятельно рекомендую этот курс пройти. Хотя бы 1-ю часть. Я его начал проходить вместе с курсом «Построение выводов по данным» специализации Яндекса и МФТИ, ибо хотел понимать, что происходит 🙂 Это секретная техника «пройти курс, чтобы пройти курс.»

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

4. «Комбинаторика для начинающих» на Coursera

Еще один отличный курс как по содержанию, так и по преподавателю. Мистер Райдогорский преподает и в ШАД, и в МФТИ и где-то еще, и делает это хорошо. Очень последовательно, от очевидных вещей до не очень, постепенно наслаивая за каждый урок ровно по одному слою новых знаний и объясняя все с азов.

Обычно, комбинаторные задачи отвечают на вопрос «сколько всего существует комбинаций чего-то». Пример простейшей комбинаторной задачи: сколькими способами могут рассесться 30 учеников в классе.

Проходить рекомендую по 3-м причинам: 

  • Решение многих задач по теории вероятности (в машинном обучении это встречается) часто сводится к комбинаторным задачам.  
  • Комбинаторные задачи вполне могут попасться на собеседовании или при поступлении в условный ШАД / MADE / Ozon Masters. 
  • Это просто забавно и интересно 🙂

5. «Algorithmic Toolbox» на Coursera [EN] («Алгоритмы: теория и практика. Методы» на stepik [RU])

Обычно, этот предмет называется «Алгоритмы и структуры данных». Так вот в курсе — про первую часть, алгоритмы.

Курс для тех, кто любит «пожестче». Здесь не про то, как писать код. Здесь именно про сами алгоритмы: сортировки, расстояние Левенштейна, жадные алгоритмы, динамическое программирование и т.д. То, что обычно спрашивают на собеседованиях в условный Яндекс и Google, но в реальной работе применяется редко. 

Подразумевается, что вы уже знаете любой популярный язык программирования, от Python и Ruby до C и C++, хотя бы на самом базовом уровне (даже без ООП, просто функции, переменные и т.д.). А большего здесь и не понадобится. Сложность будет не в том, как писать код, а в том, что же писать 🙂 

Крус «Algorithmic Toolbox» на английском, но в его делали и русскоязычные ребята, которые еще запустили аналог этого курса на stepik: «Алгоритмы: теория и практика. Методы». 

В каком случае рекомендую проходить:

  • Если будете поступать куда-то, где нужны базовые знания алгоритмов
  • Если собираетесь ходить по собеседованиям в большие компании

6. «Алгоритмы: теория и практика. Структуры данных» на stepik

Продолжение курса алгоритмов. Здесь про стеки, очереди, кучи, хэш-таблицы, самобалансирующиеся деревья. После него становится понятно, что же «под капотом», к примеру, list и dict в Python и почему до Python 3.6 dict не сохранял порядок элементов, а теперь сохраняет, и чем за это приходится платить. 

Для тех, кто хочет «пожестче», проходите на C++. Так получится ощутить на себе все нюансы по работе с памятью, про которые рассказывают в курсе. 

Именно этот курс я проходил уже после того, как поступил в MADE. Без него бы было сложнее сдавать там алгоритмы. 

У обоих курсов по алгоритмам есть пробел: к сожалению, в них нет ничего про алгоритмы на графах. Но, если что, под это есть отдельный курс специализации, из которой курс «Algorithmic Toolbox» на Coursera. Я сам его не проходил, но слышал, люди хвалили.

7. «Нейронные сети и компьютерное зрение» от Samsung Research Center на stepik

Отличный базовый курс про нейронки: как они устроенны, что такое нейрон, как нейроны складываются в слои, какие слои бывают, какие бывают функции активации, как нейросети учатся, как работает backprop и т.д. 

Все на PyTorch, что очень здорово и наглядно.

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

А тем, кому нужно «пожестче», добавили в каждую неделю блоки теоретических заданий. Там будет и про матричное дифференцирование, и ручками производные сложных функций для алгоритма обратного распространения ошибки придется считать, и много еще всего. Лично я исписал далеко не одну страницу блокнота 🙂

И это все?

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

К тому же, у больших IT-компаний — еще и свои программы подготовки специалистов по машинному обучению и анализу данных (ШАД, MADE, Ozon Masters). Попасть туда обычно непросто (конкурс 20-30+ человек на место), учиться обычно 1.5-2 года. Учиться сложно. К примеру, я поступил в MADE (data.mail.ru), и из-за алгоритмов после первого семестра вылетела примерно половина. Но, по мне, это того стоит.