Путешествие по миру самообучающихся моделей на Python

1. Почему AutoML?

Когда-то автоматически обучаемые модели машинного обучения были мечтой специалистов по данным. Типичная работа Data Scientist будет заключаться в том, чтобы идентифицировать — понять — получить — проанализировать — подготовить — обучить — оценить — передать. Но большая часть их времени будет потрачена только на этапы подготовки, обучения и оценки. Иногда это может быть бесконечный цикл while!

По мере того, как все больше и больше предприятий обращались к машинному обучению для решения своих ключевых проблем, ожидалось, что специалисты по обработке и анализу данных будут получать результаты в более короткие сроки. Это создало потребность в автоматизации ключевых этапов проекта Data Science, чтобы специалисты по данным могли сосредоточиться на реальной проблеме, а не на написании сотен строк кода для поиска лучшей модели. Затем появилось модное слово, разговоры о городе AutoML (автоматическое машинное обучение).

2. Как это можно сделать?

В последние годы начали появляться многие пакеты AutoML, а некоторые даже разрабатываются так называемыми компаниями MAGNA (Meta — Apple — Google — Netflix — Amazon) и предоставляются как часть их облачные сервисы, такие как Google Cloud AutoML.

Некоторые из альтернатив с открытым исходным кодом: AutoWEKA, Auto-sklearn, Auto-PyTorch, PyCaret, H2O AutoML и т. д. Мы рассмотрим реализацию PyCaret в этом блоге.

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

Примечание. Я предполагаю, что PyCaret уже установлен на вашем компьютере. Вы можете установить его с помощью этой команды pip install pycaret

Я проведу вас через этот процесс, используя образец набора данных, предоставленный PyCaret. Это проблема классификации, и мы будем предсказывать, выполнит ли клиент дефолт или нет. Вы можете импортировать данные, используя функцию get_data().

from pycaret.datasets import get_data
# Import the data
df = get_data("credit")

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

# Prints the shape of the dataframe
df.shape
# Preparing Knowledge set
knowledge = df.sample(frac=.8, random_state=seed)
knowledge.reset_index(inplace=True, drop=True)
knowledge.shape
# Preparing Payload set
payload = df.drop(knowledge.index)
payload.reset_index(inplace=True, drop=True)
payload.shape

PyCaret включает несколько алгоритмов для задач классификации. Мы можем использовать их, импортировав их.

from pycaret.classification import *

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

clf = setup(data=knowledge, target="default", session_id=123)

Как только вы выполните это в своей записной книжке, нам будет предложено указать, являются ли обнаруженные типы данных столбца правильными или нет. Нажмите Enter для подтверждения, и PyCaret отобразит следующий набор информации.

Теперь мы можем сравнить, как разные модели работают в нашем поезде, используя функцию compare_models().

best_model = compare_models(fold=3)

В таблице ниже показано, как различные модели работали в нашем наборе данных, и по умолчанию они отсортированы по точности.

Мы можем визуализировать производительность модели, используя функцию plot_model().

plot_model(best_model, plot="auc")

Мы можем легко выполнить настройку гиперпараметров с помощью tune_model().

tuned = tune_model(best_model)

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

predictions = predict_model(final_model, data=payload)

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

save_model(final_model,'Tuned Model 13 Nov 2021')

Как мы видим, с очень минимальным кодом мы предварительно обработали наши данные, поэкспериментировали с более чем 15 алгоритмами и создали артефакт нашей модели, который можно развернуть для обслуживания прогнозов в реальном времени. И вот как легко использовать PyCaret для проектов Data Science. PyCaret также позволяет нам использовать передовые методы, такие как бэггинг, бустинг и стекирование с соответствующими функциями.

Полный код

3. Что это дает?

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

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

Рекомендации

PyCaret — документация по pycaret 2.2.0

Установка — документация pycaret 2.2.0

Почему AutoML станет будущим искусственного интеллекта

Как AutoML помогает создавать модели машинного обучения