Простые инструменты машинного обучения
Краткий обзор возможностей low-code-платформ PyCaret, BigQuery ML и fastai.
Иллюстрация: Катя Павловская для Skillbox Media
Ребекка Викери
(Rebecca Vickery)
Об авторе
Исследователь данных в Holiday Extras. Автор, докладчик, основатель в DatAcademy.
Переводчик
Сергей Попов
Теоретически машинное обучение позволяет справиться с кучей проблем как в бизнесе, так и в жизни вообще. Но чтобы разработать и адекватно внедрить обучающие модели, требуются глубокие познания в программировании и отличное понимание соответствующих алгоритмов. Это сильно ограничивает круг потенциальных пользователей и количество задач, которые можно было бы решить с помощью этих моделей.
К счастью, в последние годы появилось немало библиотек и инструментов, которые уменьшают количество необходимого кода, а порой и вовсе делают его необязательным. Благодаря этому специалисты по Data Science могут значительно быстрее создавать прототипы, а представители других профессий — пользоваться возможностями машинного обучения, не погружаясь в специфику работы с данными.
Вот некоторые из моих любимых low-code-инструментов.
PyCaret
Фактически это оболочка Python над популярными библиотеками машинного обучения вроде scikit-learn и XGBoost. Она позволяет разработать готовую для развёртывания модель с помощью всего нескольких строк кода. PyCaret можно установить с помощью pip. Более подробные инструкции по установке есть в документации.
Репозиторий открытых датасетов можно установить напрямую, используя модуль pycaret.datasets (полный список доступен на сайте PyCaret). В целях наглядности в этой статье для решения задачи классификации использован очень простой датасет под названием «Качество вина».
Библиотека PyCaret содержит набор модулей для решения всех самых распространённых задач:
- классификация;
- регрессия;
- кластеризация;
- обработка естественного текста (NLP);
- обучение ассоциативным правилам;
- поиск аномалий.
Для запуска модели используется модуль pycaret.classification. Процесс очень прост: нужно всего лишь вызвать функцию create_model(), принимающую в качестве параметра имя модели. Полный список поддерживаемых моделей и их имён тоже есть на сайте PyCaret, либо можно просмотреть его после импорта соответствующего модуля:
Но прежде чем использовать create_model(), нужно вызвать функцию setup() и задать нужные для эксперимента параметры. Можно, например, указать размер обучающей и контрольной выборок, а также добавить скользящий контроль, если он требуется.
Функция create_model() сама определяет тип данных и обрабатывает их методом по умолчанию. Например, вот так автоматически определяется тип данных для каждой переменной в модели из нашего примера:
Для таких операций, как обработка категориальных переменных и дополнение пропущенных значений, PyCaret использует стандартные препроцессинговые шаги. Если же требуется более специализированное решение, вы можете изменить в настройках модели соответствующий параметр — например, в примере ниже в numeric_imputation указан median.
Как только все используемые параметры указаны верно, нажимаем Enter. Модель обработает данные и отобразит сетку результатов.
В PyCaret также есть функция plot_model(), которая выводит результат работы модели в графическом виде.
Я продемонстрировала вам лишь самые основы использования библиотеки. В ней есть ещё множество функций и модулей. В совокупности это отличный инструмент для машинного обучения, включающий в себя конструирование и настройку моделей, их сохранение и развёртывание.
BigQuery ML
В 2018 году компания Google выпустила новый инструмент под названием BigQuery ML. Это облачное решение, призванное предоставить аналитикам и специалистам по Data Science быстрый доступ к большим объёмам данных. Можно разрабатывать модели машинного обучения прямо из облака BigQuery, используя только SQL.
C момента релиза возможности BigQuery ML значительно расширились. Теперь он поддерживает большинство задач машинного обучения — в частности классификацию, регрессию и кластеризацию. Можно даже импортировать в него собственные модели TensorFlow.
По моему опыту, BigQuery ML — крайне полезный инструмент для ускорения прототипирования моделей и вполне годная основная система для решения несложных задач.
Разберём, как построить и оценить классификационную модель логистической регрессии в BigQuery ML. Для примера возьмём датасет «Доход взрослого человека». Его можно найти в UCI Machine Learning Repository. Скачиваем датасет в виде CSV-файла и загружаем, используя следующий код на Python:
Работа с BigQuery ML идёт через Google Cloud Platform (GCP). На официальном сайте есть и страница регистрации. После регистрации вы получите бесплатный кредит в 300 долларов США — этого вполне достаточно, чтобы самостоятельно проработать наш пример и решить, нужен ли вам данный инструмент.
На сайте GCP выберите BigQuery в выпадающем меню. Если вы пользуетесь платформой впервые, придётся сначала создать проект и настроить его на BigQuery ML. Руководство по началу работы от Google тоже имеется.
CSV-файл датасета, который мы скачали раньше, можно загрузить в GCP и напрямую и вывести данные из него в виде таблицы.
Если нужно изучить данные самостоятельно, нажмите на название таблицы на боковой панели и выберите «Предварительный просмотр».
Далее пишем SQL-запрос, который берёт все данные (*) из таблицы, переименовывает целевую переменную (income) в label и добавляет логику для создания модели логистической регрессии под названием adults_log_reg.
Все параметры модели можно найти здесь.
Если кликнуть по модели, которая теперь отображается рядом с таблицей данных, мы увидим оценку эффективности её обучения.
Теперь можно использовать модель для постройки прогнозов с помощью функции ML.PREDICT.
fastai
Известно, что популярные фреймворки для глубокого машинного обучения, например TensorFlow, весьма сложны в освоении, и начинающим дата-сайентистам и аналитикам пользоваться ими практически невозможно. Эту проблему может решить библиотека fastai — она предлагает развитый программный интерфейс, позволяющий обучать нейронную сеть с помощью нескольких строк несложного кода.
fastai работает с PyTorch, поэтому нужно установить обе библиотеки.
Здесь есть модули для работы как со структурированными, так и с неструктурированными данными (например, текстом и изображениями). В своём примере я беру модуль fastai.tabular.all для решения классификационной задачи по тому же датасету «Качество вина», который мы использовали в разборе PyCaret.
Как и PyCaret, fastai предварительно обрабатывает все данные нечисловых типов через эмбеддинг. Для подготовки этих данных я использую вспомогательную функцию TabularDataLoaders, указывая в ней название датафрейма, типы данных колонок и препроцессинговые шаги, которые требуются от модели.
Для обучения нейронной сети берём функцию tabular_learner(), как показано ниже.
Результаты работы модели:
Чтобы применять эту модель для построения прогнозов, можно просто использовать learn.predict(df.iloc[0]).
Более подробно изучить библиотеку fastai можно по официальной документации.