Учимся машинному обучению: книги, курсы, подходы

22 июля
Людмила Дежкина, Solution Architect DataArt
Учимся машинному обучению: книги, курсы, подходы
Людмила Дежкина, Solution Architect DataArt, вместе с другими экспертами рассказала изданию «Типичный программист» о том, как подступить к изучению ML. Мы решили опубликовать ее рекомендации вместе со ссылками на полезные ресурсы. 

Знакомство с машинным обучением предлагаю начать с изучения того, из чего оно состоит. Python, математика, алгоритмы, глубокое обучение, компьютерное зрение и обработка естественных языков — основные составляющие того, что принято относить к machine learning. Давайте остановимся на каждом пункте по порядку.

Python

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

Python — один из самых быстроразвивающихся языков, и именно на нём построен целый экомир Data Scientist.

Зачастую на собеседованиях можно встретить вопросы по следующим библиотекам:

  • NumPy;
  • SciPy;
  • Pandas;
  • Scikit-learn;
  • Matplotlib/Seaborn;
  • NLTK.

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

Из книг достаточно сложно что-то посоветовать, но на моем рабочем столе их две:

  • Wes McKinney, «Python for Data Analysis»;
  • Francisko Blanko, «Learning SciPy for Numerical and Scientific Computing».

Математика

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

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

  • абсолютно бесплатный курс от создателей Kaggle;
  • книга о статистике, которую скорее можно использовать как справочник;
  • сайт о математике вообще для всех, но я бы оставила его здесь для любителей линейной алгебры;
  • курс от MIT для любителей математики и чего-то посложнее.

Из книг, которые лежат у меня на столе:

  • Trevor Hastie, Robert Tibshirani, Jerome Friedman «The Elements of Statistical Learning  Data Mining, Inference, and Prediction»;
  • Introduction to Probability, хоть я и не большая поклонница John N. Tsitsiklis.

Алгоритмы

Чем больше у вас алгоритмов, тем разнообразнее и точнее вы сможете решать задачи.

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

Я проходила этот курс, но любой курс Кирилла Ерёменко поражает простотой и насыщенностью материала. При помощи этого курса можно быстро покрыть всё перечисленное в списке и ещё много чего. В нём мало теории, но после окончания вы ощутите, что набрались практического опыта.

Я постаралась собрать наиболее общий список алгоритмов, чтобы лучше изучить этот раздел ML:

Basic Machine Learning Algorithms:

  • Linear Regression;
  • Logistic Regression;
  • Decision Trees;
  • KNN (K- Nearest Neighbors);
  • K-Means;
  • Naïve Bayes;
  • Dimensionality Reduction.

Advanced algorithms:

  • Random Forests;
  • Dimensionality Reduction Techniques;
  • Support Vector Machines;
  • Gradient Boosting Machines;
  • XGBOOST.

Глубокое обучение

Deep Learning — всевозможные архитектуры нейронных сетей. Я видела AI-специалистов, которые предпочитают ограничиваться ML и зачастую не выходят за рамки определённых алгоритмов. Поэтому начать без этого пункта не то чтобы можно, а, скорее, нужно. Но для людей, которые не знают, о чём речь, в этом пункте скрыта вся романтика.

Посоветовать что-то конкретное тяжело. Зачастую люди могут специализироваться на архитектуре одной конкретной сети. Общий обзор можно получить из курса Кирилла Ерёменко.

Компьютерное зрение

Computer Vision — отдельный мир внутри вселенной ML. Ну, почти отдельный — здесь кроется немного другая математика, немного другие алгоритмы и немного другие базовые знания.

Моё знакомство ограничилось следующим:

  • David A. Forsyth, «Computer Vision Modern Approach» — хотя почти уверена, что сейчас есть книги намного проще и лучше. Математика там достаточно сложная и уровень объяснений нетривиальный;
  • OpenCV — банально, но здесь есть хорошая документация с очень хорошими примерами.

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

Многие считают, что нет начинающего Data Scientist без проекта, связанного с NLP (Natural Language Processing). По собственному опыту могу сказать, что этот раздел на любителя. Погружаться в него стоит только при наличии страсти к филологии.

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