В статье привожу курсы и книги, которые мне кажутся наиболее оптимальными для изучения машинного обучения/data science c нуля. Стараюсь привести список, который будет наиболее кратким и одновременно даст все знания, необходимые для начала работы на практике, без серьезных пробелов в знаниях.
Disclaimer
Понять исходя из чего составлены данные рекомендации можно прочитав предыдущие статьи, в которых описаны мой путь и принципы самообучения, а также общие соображения о том, как выстраивать этапы обучения:
Предыдущие статьи
Рекомендации данной статьи будут устаревать, и наверняка, и сейчас существуют отличные курсы и книги, которые могли бы в него входить. Но это, как минимум, одни из лучших материалов по своим темам. Для подготовки данного списка были отброшены десятки курсов и книг, которые тоже нацелены на обучение с нуля, но хуже излагают фундаментельные концепции.
Рекомендации покрывают не все потенциально необходимые технические навыки. Чтобы составить представление обо всём, что скорее всего будет необходимо освоить - см. Изучение data science c нуля: этапы и вехи
Не привожу материалов о нейронных сетях потому что, в большинстве случаев, считаю неэффективным начинать изучение с них, или изучать их на ранних этапах самообучения.
Необходимые базовые навыки
Знание основ программирования: Python и SQL
Невозможно заниматься машинным обучением или data science не владея программированием в Python или R (Начинать лучше с Python). Также, подавляющее большинство вакансий в "классическом" машинном обучении (решение бизнес-задач, и работа с изначально числовыми/статистическими данными) потребует знание SQL. Базовые рекомендации по их изучению есть в статье Самообучение в Data science, с нуля до Senior за два года.
Математика
Также невозможно стать хорошим специалистом без достаточного уровня математики. Но, мне кажется, эффективнее изучать математику постепенно, предварительно знакомясь с теми целями в которых она применяется.
Тем не менее, есть определенный минимально-необходимый базовый уровень: понимание производных (школьная программа алгебры), понимание градиентного спуска (градиент, обычно, объясняют в начальных курсах математического анализа в университете, и объяснение есть также в курсах о машинном обучении), знания основ дискретной математики, теории вероятностей и статистики.
Основы теории вероятностей неплохо объяснены в специализации: Математика для анализа данных. Необходимый минимум теории вероятностей дан в последнем курсе специализации, который не требует знаний из 2 и 3 курсов. Курсы 2 и 3 дают знания, полезные для понимания градиентного спуска и для изучения нейронных сетей и некоторых других методов машинного обучения. По указанным темам мне очень нравится англоязычная специализация Math for machine learning, от London Imperial College.
Если у вас проблемы с пониманием производных и пределов (школьная программа, самые продвинутые её темы), то, если понимаете английский: крайне рекомендую все курсы от Robert Ghrist. Более интуитивное и наглядное объяснение математики я вообще не встречал. На русском поищите курсы на coursera.org, также неплохие бесплатные курсы по математике есть на stepik.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 (эффективными мне кажутся курсы 1 и 3. По темам курсов 2, 4 мне попадались источники лучше)
Альтернативные курсы
Возможно, курс Воронцова потребует сразу слишком много базовых или дополнительных знаний (умения работать с jupyter, pandas). В этом случае, возможно, проще будет сначала пройти следующую комбинацию курсов. Также, в чём-то специализация от Яндекса будет подробнее.
https://stepik.org/course/4852/syllabus
Специализация от Яндекс «Машинное обучение и анализ данных» (Если записываться на отдельные курсы и в последней форме при записи выбрать вариант "только аудит" то все занятия можно просмотреть бесплатно). В 3 курсе специализации,на первом этапе, можно осваивать только 1 неделю, о кластеризации. Остальные темы сложнее, и могут не пригодиться в первое время; можно просмотреть наискосок. Весь 4 курс, по началу погружения в специалиность, рекомендую просмотреть, чтобы было общее представление, но не обязательно досконально разбираться.. Эти вещи легко забываются, и не всем встречаются на пратике.
Отработка базовых навыков
Kaggle полезен сразу несколькии вещами: можно посмотреть разные реальные (и не очень) задачи, решаемые с помощью машинного обучения, и изучить пути решения, которые применяют другие спецалисты (и на этом сайте соревнуются в своих навыках в т.ч. топовые специалисты мировго уровня). У них также есть хорошие бесплатные мини-курсы по разным темам, в рамках которых, в том числе, можно отработать навыки на тестовых задачах.
Обязательно следует ознакомиться с документацией
scikit-learn - официальное руководство пользователя по самой популярной и классической библиотеке методов машинного обучения отлично демонстрирует как с её помощью решать разные задачи. По ней также можно изучать разные методы, т.к. их самая суть в ней неплохо изложена.
pandas, официальная документация - данная библиотека будет вашим основным рабочим инструментов, и документация к ней очень хорошо написана. Функционала в ней намного больше, чем даётся в вводных курсах. Поэтому, имеет смысл ознакомиться с ней по документации.
Python и python standard library - необходимо уметь пользоваться официальной онлайн документацией для нахождения нужных библиотек. функций и методов, необходимых при решении задач. Например, уже на самых ранних этапах вы вероятно встретитись с библиотеками collections и itertools
Следующий шаг - полировка и углубление знаний
В машинном обучении половина успеха заключается в правильной подготовке данных для алгоритом и правильном формулировании решаемой задачи (целевой функции). Также важно научиться проходить все шаги построения моделей машинного обучения в наиболее оптимальной последовательности. Все данные темы отлично раскрыты в курсе, записанными русскими ребятами, но на английском языке: https://www.coursera.org/learn/competitive-data-science. Не стоит обращать внимание на kaggle - приведенные методы актуальны для реальных задач. Пройдя этот курс вы сможете понять комикс ниже
В статьях сообщества 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, Олег
Некоторые поняли, что им лучше уйти в другую сферу (программирование, биг дата), некоторым смог скорректировать учебный/карьерный план под индивидуальные потребности, некоторым я посоветовал тех, кто им сможет лучше помочь, а кого-то спас (?) от неэффективной траты времени на тупикове проекты.
И если мои статьи для вас полезны - на будущие статьи меня также можно мотивировать материально, под этой статьей должна быть кнопка "задонатить" для этих целей.
SegoItCh
Чем плохи C#/C++ для Data Science?
FFelix Автор
Они очень нишевые. Просто мало вакансий. Люди с высокими знаниями машинного обучения и этими языками — будут в цене. Но со знаниями уровня джуниор, и этими языками — может быть очень сложно найти работу