Как стать автором
Обновить

Курсы и книги для изучения data science c нуля

Время на прочтение11 мин
Количество просмотров89K

В статье привожу курсы и книги, которые мне кажутся наиболее оптимальными для изучения машинного обучения/data science c нуля. Стараюсь привести список, который будет наиболее кратким и одновременно даст все знания, необходимые для начала работы на практике, без серьезных пробелов в знаниях.

Disclaimer

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

Предыдущие статьи

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

Рекомендации покрывают не все потенциально необходимые технические навыки. Чтобы составить представление обо всём, что скорее всего будет необходимо освоить - см. Изучение data science c нуля: этапы и вехи

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

Необходимые базовые навыки

Основа: английский на уровне чтения технической литературы. Это самоё легкое в языке, т.к. не требует от вас самим уметь формулировать мысли. И техническая литература отличается ограниченным словарём используемых терминов. После первой пары книг - остальные пойдут как по маслу.

Знание основ программирования: Python и SQL

Невозможно заниматься машинным обучением или data science не владея программированием в Python или R (Начинать лучше с Python). Также, подавляющее большинство вакансий в "классическом" машинном обучении (решение бизнес-задач, и работа с изначально числовыми/статистическими данными) потребует знание SQL. Базовые рекомендации по их изучению есть в статье Самообучение в Data science, с нуля до Senior за два года. Продублирую:

Python:

  • pythontutor.ru для знакомств с основами Python, набить руку в основных структурах данных. Смотрите также "решение учителя" как образец. Понять их поможет книга ниже.

  • "Learning Python" by Mark Lutz - лучшая книга по питону, из дюжины тех, которые я просматривал. Автор очень медленно вводит в тему, но потом наиболее досконально объсняет, в том числе и продвинутые темы. Применение прочитанного из этой книги позволило мне за год оказаться в знаниях питона выше, чем синьорные разработчики, которые её не читали, и учили Питон менее систематически. Главное преимущество книги - она задает последовательность для изучения, от самых простых до очень продвинутых тем. Её можно читать без наличия компьютера под рукой, не придётся ничего пробовать, т.к. там много примеров команд и результаты их выполнения.

  • Realpython.com - лучшие обзоры и объяснения отдельных тем. Я пользуюсь уже по мере возникновения конкретных вопросов, когда ответов нет в книге выше, или они касаются нововведений c Python 3.5 и позднее.

  • Как только начнёте применять библиотеки - не избегайте читать их официальную документацию: https://docs.python.org/3/ (и гугл подскажет)

  • Задавайте вопросы в гугл и phind.com, perplexity.ai, читайте ответы по ссылкам. Каждый эффективный программист много использует поисковик для поиска примеров по отдельным задачам. Никто не держит в голове информацию о всех библиотеках. Не имеет смысл пытаться "вызубрить" синтаксис, это придёт естественным путём, когда вы будете использовать язык больше.

  • Используйте эффективные редакторы: VS Code это стандарт, PyCharm очень хорош.

SQL: знаю очень давно, современные курсы не проходил. Люди, которых менторил, и которые относильно быстро и глубоко в нём разобрались, использовали курсы:

  • https://stepik.org/course/63054/, https://stepik.org/course/95367/

  • https://www.postgresqltutorial.com/ и официальная документация к СУБД, например Postgres, она там хорошо написана.

    На что обращать внимание:
    Основа основ - понимает всех типов операций join и умение работать с ними (и другими функциями) в случае наличия Null значений. Важно разобраться в оконных функциях. Когда я еще программировал в 1С, где есть встроенный язык запросов - подобным я не пользовался. Но в дата сайенс, для задач feature engineering и продвинутой аналитики - это самые часто используемые функции.

  • Полезно набить руку на примерах. Их можно найти на hackerrank.com, https://www.sql-ex.ru/learn_exercises.php и т.д.

Математика

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

Тем не менее, есть определенный минимально-необходимый базовый уровень: понимание производных (школьная программа алгебры), понимание градиентного спуска (градиент, обычно, объясняют в начальных курсах математического анализа в университете, и объяснение есть также в курсах о машинном обучении), знания основ дискретной математики, теории вероятностей и статистики.

Эта математика, на уровне университета, очень простым языком объяснена в англоязычной специализация Math for machine learning, от London Imperial College (coursera.org). На том же уровне, очень детально объяснено, от самых основ: Mathematics for Machine Learning and Data Science Specialization, Deeplearning.ai (coursera.org).

Если у вас проблемы с пониманием производных и пределов (школьная программа, самые продвинутые её темы), то, если понимаете английский: крайне рекомендую все курсы от Robert Ghrist. Более интуитивное и наглядное объяснение математики я вообще не встречал. На русском есть неплохие бесплатные курсы по математике есть на stepik.org. Лучшие русскоязычный курсы, на мой взгляд, были раньше на платформе coursera.org, но они были оттуда сняты в связи с введением санкций.

Начальный уровень

Книги и статьи, рекомендуемый минимум

Datasmart (на русском) - отличный набор примеров применения популярных методов машинного обучения. Книга хороша тем, что даёт общее представление о сфере data science. По рекомендации друга, я начал изучение сферы машинного дата сайенс именно с этой книги, и считаю это лучшим вариантом для знакомства с областью и возможностями применения данных знаний. Для получения необходимого практического опыта, после знакомства с python, pandas, scikit-learn - полезно примеры из этой книги проделать с помощью этих инструментов (кроме примеров на базе линейного программирования, т.к. оно требует других инструментов и намного реже бывает необходимо).

Статьи на Хабре из курса от сообщества Open Data Science (ODS):

Данные статьи и курс дают отличные базовые знания и навыки для изучения основ машинного обучения. Также в статьях дан хороший список дополнительных материалов. По данным статьям существуют также лекции (лекции я не смотрел, т.к. статьи, субъективно, намного эффективнее). Для меня данные материалы стали отличным дополнение к он-лайн курсу Воронцова (ниже). Освоив курс и данные статьи долгое время мне хватало только отработки навыков применения данных методов, не изучая ничего сверх них. В этих статьях — тему 8 можно смело пропустить, по теме 2 — больше смотрите на seaborn и имейте в виде что синтаксис команд данных библиотек уже устарел (полезно научиться пользоваться официальной документацией, чтобы понять как такие вещи делать на практике).

Книга Data Science from Scratch: First Principles with Python даёт хороший обзор всех основных принципов data science и демонстрацию как простейшим образов реализовать данные вещи с помощью Python. В целом, почти всё из неё перекрывается книгой Datasmart (в той, на мой взгляд, более интутивное изложение, но эта книга хороша примерами на Python) или статьями ODS. Большая выгода этой книги - изложение порядка решения задач с помощью Python, которое помогает лучше освоить язык программированиея что самом по себе очень ценно.

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

Дополнительные печатные источники

Data Science for Business: What You Need to Know about Data Mining and Data-Analytic Thinking, by Foster Provost (тут можно скачать) - возможно, лучший обзор всех базовых принципов применения машинного обучения, в виде книги. Отличо дополнит книгу Datasmart, в этом плане. В курсе Воронцова "Введение в машинное обучение" (ниже) также раскрывается большинство тем из этой книги. Я её читал отрывками, как дополнение к этому курсу..

Машинное обучение, Флах - мне показалось хорошим изложением всех методов и их деталей, удобным как дополнение/расширение материалов он-лайн курсов. Как самостоятельное учебное пособие наверное книга будет суховатой.

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

Курсы

Необходимый минимум

"Введение в машинное обучение" от Воронцова - покрывает все базовые методы машинного обучения, и необходимые базовые концепции. Знания и умения применять все представленные методы будет достаточно для выполнения львиной части бизнес-задач, связанных с машинным обучением. Другие курсы начального уровня по машинному обучению можно не смотреть, если вы полностью освоите данный курс. Но после прохождения данного курса явно возникнет потребность отточить навыки Python, Pandas, scikit-learn.

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

Помимо знакомства с теорией методов - необходимо будет научиться применять их на практике, с помощью Python. Для этого можно использовать курсы из специализации Applied DS with Python (первые 3 курса, другие очень быстро устаревают и есть специализированные курсы лушче)

Альтернативные курсы

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

https://stepik.org/course/4852/syllabus

Специализация от Яндекс «Машинное обучение и анализ данных» (Если записываться на отдельные курсы и в последней форме при записи выбрать вариант "только аудит" то все занятия можно просмотреть бесплатно). В 3 курсе специализации,на первом этапе, можно осваивать только 1 неделю, о кластеризации. Остальные темы сложнее, и могут не пригодиться в первое время; можно просмотреть наискосок. Весь 4 курс, по началу погружения в специалиность, рекомендую просмотреть, чтобы было общее представление, но не обязательно досконально разбираться.. Эти вещи легко забываются, и не всем встречаются на пратике.

Отработка базовых навыков

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

Обязательно следует ознакомиться с документацией

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

pandas, официальная документация - данная библиотека будет вашим основным рабочим инструментов, и документация к ней очень хорошо написана. Функционала в ней намного больше, чем даётся в вводных курсах. Поэтому, имеет смысл ознакомиться с ней по документации.

Python и python standard library - необходимо уметь пользоваться официальной онлайн документацией для нахождения нужных библиотек. функций и методов, необходимых при решении задач. Например, уже на самых ранних этапах вы вероятно встретитись с библиотеками collections и itertools

Следующий шаг - полировка и углубление знаний

В машинном обучении половина успеха заключается в правильной подготовке данных для алгоритом и правильном формулировании решаемой задачи (целевой функции). Также важно научиться проходить все шаги построения моделей машинного обучения в наиболее оптимальной последовательности. Все данные темы отлично раскрыты в курсе, записанными русскими ребятами, но на английском языке: "Learn from Top Kagglers: How to Win a Data Science". Не стоит обращать внимание на kaggle - приведенные методы актуальны для реальных задач. Пройдя этот курс вы сможете понять комикс ниже. Проблема: он записан русскими ребятами из МГУ и после начала войны пропал с платформы. Поскольку ничего подобного, собранного в одном курсе, я больше не находил (хотя целенаправленно искал), поэтому стоит его найти и посмотреть. Говорят, записи есть на торрентах. Ребята, его записавшие, вероятно состоят в сообщесте ODS.ai.

В статьях сообщества ODS (см.выше) дано множество ссылок на дополнительные источники. Рекомендую с ними ознакомиться. Также, через сайт сообщества можно найти видеозаписи многих семинаров, в которых также иногда рассматриваются очень полезные и фундаментальные темы. Например, мне были полезны все выстпления от основателя сообщества, Алексея Натенкина (прогнозирование временных рядов, еще пример)

Разные смежные концепции, которые необходимо знать

Нужно четко понимать разницу между корреляцией и причино-следственной связью. Не понимая этого - нельзя работать дата-сайентистом.

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

Также, с точки зрения постановки целей - поведение людей часто оказывается искажено, о чём рассказывает Goodhart's law. Знание данного эффекта может подсказать направления анализа разных явлений.

Другие полезные книги/ материалы

Куча англоязычных статей по использованию разных библиотеке, в основном очень начального уровня, регулярно публикуется на сайте https://towardsdatascience.com; до 3 статей в месяц можно читать бесплатно.

Statistics Done Wrong .The woefully complete guide by Alex Reinhart - отличная иллюстрация того как не стоит применять математические методы проверки гипотез. Автор рассказывает как даже профессиональные учёные всё время ошибаются в их использовании.

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

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

Необходимые технические знания

Git необходимо выучить чтобы работать над каким-либо кодом совместном с другими людьми. Замечательно простая и бесплатня книжка на английском - Ry's Git tutorial. Также много книг доступно бесплатно на официальном сайте git. Отличное визуальное объяснение разных концепций: http://ndpsoftware.com/git-cheatsheet.html

https://www.practicaldatascience.org/ - хороший набор материалов по разным библиотекам и дополнительным инструментам. Фактически, даётся исчерпывающий перечень тем, которые придётся освоить для работы в дата саенс, с вводными материалами по всем темам (секцию Cloud точо стоит читать наискосок, т.к. тут с большой вероятностью придется работать с подобными технологиями других вендоров, которые имеют отличия).


Что я упустил?

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

Готов выступить ментором в самообучении

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

Если у вас есть индивидуальные вопросы, на которые не отвечают мои статьи - пишите на почту self.development.mentor в gmail.com, Олег

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

И если мои статьи для вас полезны - на будущие статьи меня также можно мотивировать материально, под этой статьей должна быть кнопка "задонатить" для этих целей.

Для получения скидок на первый месяц/курс специализаций на Coursera.org - можете воспользоваться ссылкой: http://fbuy.me/v/odemidenko

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 15: ↑14 и ↓1+13
Комментарии4

Публикации