С чего начать работу с ML и DL. Обзор лучших библиотек

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

Сегодня существует огромное количество библиотек для машинного и глубокого обучения. Чтобы облегчить задачу выбора для новичков, мы рассмотрим только самые популярные и необходимые библиотеки, которые покрывают все базовые потребности для начала работы с ML и DL.

Язык программирования: Python или R?

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

Именно поэтому в последние пару лет Python набрал огромную популярность и стал lingua franca в сообществе машинного обучения. Практически любая современная ML или DL библиотека предоставляет Python API.

Поэтому сейчас задача выбора сильно упростилась: используйте Python и не ошибетесь.

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

Jupyter Notebook: работа с данными, кодом и графиками

Если в традиционном программировании большую часть времени вы проводите в текстовых редакторах или IDE-шках, то в Data Science большая часть кода пишется в Jupyter Notebook.

Это простой и мощный инструмент для анализа данных. Он позволяет писать код на Python, R и других языках, добавлять текстовые описания в Markdown, встраивать графики и диаграммы непосредственно в интерактивную веб-страницу.

Плюс ко всему, Google выпустил бесплатный сервис Google Colab, который предоставляет облачную версию Jupyter Notebook и дает возможность производить вычисления на CPU и GPU. Все нужные питоновские ML библиотеки уже установлены, так что можно начинать сразу там, если лень устанавливать все локально.

Scikit-learn: лучшая библиотека для классических ML алгоритмов

Scikit-learn — одна из самых популярных ML библиотек на сегодня. Она поддерживает большинство алгоритмов обучения, как с учителем, так и без: линейная и логистическая регрессия, метод опорных векторов (SVM), Naive Bayes классификатор, градиентный бустинг, кластеризация, KNN, k-средние и многие другие.

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

В дополнение к очень качественной документации, Scikit-learn содержит раздел с туториалами, в котором показано, как работать с библиотекой, а также даются базовые знания по машинному обучению.

Pandas: извлечение и подготовка данных

Анализ и подготовка данных зачастую занимает большую часть времени при решении ML задач. Данные могут быть получены в CSV, JSON, Excel или другом структурированном (или не очень) формате, и вам нужно обработать их для того, чтобы использовать в ML моделях.

Для этих целей используется библиотека Pandas. Это мощный инструмент, который позволяет быстро анализировать, модифицировать и подготавливать данные для дальнейшего использования в других ML и DL библиотеках, таких как Scikit-learn, TensorFlow или PyTorch.

В Pandas можно загружать данные из различных источников: SQL баз, CSV, Excel, JSON файлов и других менее популярных форматов.

Когда данные загружены в память, с ними можно выполнять множество различных операций для анализа, трансформации, заполнения отсутствующих значений и очистки набора данных. Pandas позволяет выполнять множество SQL-подобных операций над наборами данных: объединение, группировка, агрегирование и т. п. Также она предоставляет встроенный набор популярных статистических функций для базового анализа.

Jupyter Notebook также поддерживает Pandas и реализует красивую визуализацию его структур данных.

Сайт Pandas содержит очень подробную документацию. Но начать можно с 10-минутного туториала, который показывает все основные фишки и возможности библиотеки.

Библиотека NumPy: многомерные массивы и линейная алгебра

Основной функционал NumPy заключается в поддержке многомерных массивов данных и быстрых алгоритмов линейной алгебры. Именно поэтому NumPy — ключевой компонент Scikit-learn, SciPy и Pandas.

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

Для этого отлично подойдет вводный туториал по Numpy, а также основы NumPy.

Matplotlib и Seaborn: построение графиков и визуализация данных

Matplotlib — это стандартный инструмент в наборе дата-инженера. Он позволяет создавать разнообразные графики и диаграммы для визуализации полученных результатов.

Графики, созданные в Matplotlib, легко интегрируются в Jupyter Notebook. Это дает возможность визуализировать данные и результаты, полученные при обработке моделей.

Для этой библиотеки создано множество дополнительных пакетов. Один из наиболее популярных — это Seaborn. Его основная фишка — готовый набор самых часто используемых статистических диаграмм и графиков.

Традиционно, обе библиотеки имеют раздел с туториалами на их сайтах, но более эффективным подходом будет зарегистрироваться на сайте Kaggle и посмотреть в разделе «Kernels» готовые примеры использования, например, Comprehensive Data Exploration with Python.

Tensorflow и Keras: библиотеки глубокого обучения

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

В Tensorflow, библиотеке глубокого обучения от Google, отлично реализованы все три компонента. Наряду с CPU, она поддерживает вычисления на GPU и TPU (тензорных процессорах Google).

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

Keras — это надстройка над Tensorflow, которая решает множество юзабилити-проблем последней. Ее главная фишка — это возможность строить архитектуру нейронной сети с использованием красивого Python DSL. Для Keras также написано множество обучающих материалов, поэтому разобраться с ней несложно.

PyTorch: альтернативная библиотека глубокого обучения

Пожалуй, PyTorch — это вторая по популярности DL библиотека после Tensorflow, которая создана в Facebook. Ее сильная сторона в том, что она была разработана для Python, и поэтому использует его стандартные идиомы. По сравнению с Tensorflow, здесь порог входа намного ниже, а любую нейронную сеть можно построить с использованием стандартных ООП классов и объектов.

Также ее легче отлаживать, потому что код исполняется как обычный Python код — нет этапа компиляции, как в TensorFlow. Поэтому можно пользоваться даже питоновским отладчиком.

Если сравнивать с Keras, PyTorch — более многословный, но менее магический.

У PyTorch тоже есть своя надстройка — это библиотека fastai. Она позволяет решить большинство стандартных DL задач в пару строчек кода. Но что делает fastai действительно особенной — это их невероятный онлайн-курс Practical Deep Learning for Coders.

На что обратить внимание

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

Чтобы сделать процесс обучения более гладким, есть смысл начать эксперименты с классических задач ML и сфокусироваться на использовании Scikit-learn и Pandas. И после этого уже двигаться в сторону глубокого обучения.

Если вы задаетесь вопросом, какую DL библиотеку лучше выбрать: TensorFlow/Keras или PyTorch, то лучшим ответом будет найти онлайн-курс, который вам нравится, и курс сделает выбор за вас.

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

Похожие статьи:
Глубокое погружение в мир IT!Ищете надежную платформу для обучения и профессионального роста?Brain Academy Odessa объявляет набор на обучение...
Айтівиця Олена Салакс родом з Рівного, але змалечку живе у Сполучених Штатах. Хоча має бізнес-освіту, в IT-сфері працює з 2007-го. 10 років...
Мы собрали список компаний, которые готовы бесплатно принимать у себя в офисе разные IТ-мероприятия — выступления докладчиков,...
Нещодавно я запостив пост-запитання про нове німецьке міграційне законодавство та отримав більше тисячі коментарів...
Мы уже писали в новостях о смартфоне Samsung Galaxy Grand On, который еще не был официально анонсирован. А теперь это недорогое...
Яндекс.Метрика