Найти тему
LabelMe

Как автоматизировать машинное обучение с помощью EvalML

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

Одним из самых популярных и обсуждаемым фреймворков для автоматизации ML-процессов является EvalML на AutoML. Если эти слова вам ни о че мне говорят, то мы сейчас всё объясним.

Что такое AutoML и EvalML

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

EvalML - это библиотека AutoML с открытым исходным кодом, написанная на Python. Она автоматизирует большую часть процессов машинного обучения, и мы можем легко оценить, какой конвейер машинного обучения лучше работает для конкретного набора данных.

EvalML создает и оптимизирует конвейеры машинного обучения, используя определенные целевые функции. Он может

  • автоматически выполнять выбор функций,
  • выстраивать моделей,
  • настраивать гиперпараметры,
  • проводить перекрестную проверку

Библиотека имеет широкий набор инструментов для понимания моделей. К тому же она хорошо совместима с Featuretools (платформа для выполнения автоматизированного проектирования функций) и Compose (для автоматизированного проектирования прогнозирования).

Как установить EvalML

Для установки вам потребуется Python версии 3.5 и выше. Инициализировать установку можно любым удобным для вас способом:

pip install evaml --extra-index-url https://install.featurelabs.com/<license>/

Установить через PIP

pip install evalml

Установить из PyPI

pip install evalml

Что такое объективные функции?

Объективные функции - это то, что EvalML пытается максимизировать или минимизировать в конвейерном поиске. Поскольку эта обратная связь от конвейеров приводит к оптимизации моделей, важно иметь целевую функцию.

Мы можем обучать и оптимизировать модель для определенных проблем, оптимизируя целевые функции для конкретной предметной области или определяя пользовательские целевые функции с помощью EvalML. Просто вам нужно определить цель вашего варианта использования.

Особенности EvalML

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

  • Обнаружение утечки цели путем предоставления модели информации во время обучения.
  • Проверяет недопустимые типы данных
  • Классовый дисбаланс
  • Избыточные функции, такие как столбцы с нулевым значением, постоянные столбцы и т. Д.
  • Проверяет наличие столбцов бесполезных для моделирования.

NLP-задачи (Natural Language Processing)

Начнем с импорта набора данных. Используемый датасет представляет собой набор текстовых данных классификатора спама.

-2

Далее разделяем данные на независимые и зависимые функции:

X=data.drop('Category',axis=1)
y=data['Category']

Разделим оба значения на ham и spam:

y.value_counts()

ham      0.750084
spam    0.249916
Name: Category, dtype: float64

Теперь давайте импортируем нашу библиотеку AutoML EvalML.

import evalml

Разделим данные на тестовые и обучающие:

X_train,X_test,y_train,y_test=evalml.preprocessing.split_data(X,y,problem_type='binary')

Так как наша задача решается двоичной классификацией, то мы устанавливаем тип задачи как "двоичный". Предусмотрим и другие типы проблем для EvalML:

  • MULTICLASS: ‘multiclass’
  • REGRESSION: ‘regression’
  • TIME_SERIES_REGRESSION: ‘time-series regression’
  • TIME_SERIES_BINARY: ‘time-series binary’
  • TIME_SERIES_MULTICLASS: ‘time series multiclass’

Проверяем входные данные:

-3

Ищем лучший pipeline

Теперь давайте импортируем AutoMLSearch из EvalML и начнем поиск по конвейеру.

Рассмотрим оценку для разных конвейеров

automl.rankings
-4

Наш лучший конвейер:

best_pipeline = automl.best_pipeline
best_pipeline

Выход:

GeneratedPipeline(parameters={'Random Forest Classifier':{'n_estimators': 100, 'max_depth': 6, 'n_jobs': -1},})

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

automl.describe_pipeline(automl.rankings.iloc[0]["id"])
-5

Оценим тестовые данные:

Точность составляет 0,9732441471571907, что очень неплохо.

Регрессия

Теперь давайте найдем лучший конвейер для проблемы регрессии с помощью библиотеки EvalML. Набор данных, который мы здесь используем, представляет собой прогноз цен на жилье в Бостоне от sklearn. Итак, давайте импортируем необходимую библиотеку и набор данных.

-6

Тренируем тестовый сплит

-7

Ищем новый конвейер

Смотрим на рейтинг моделей:

automl.rankings
-8

Выбираем лучший конвейер и задаем выход:

best_pipeline = automl.best_pipeline
best_pipeline

GeneratedPipeline(parameters={'Imputer':{'categorical_impute_strategy': 'most_frequent', 'numeric_impute_strategy': 'mean', 'categorical_fill_value': None, 'numeric_fill_value': None}, 'Extra Trees Regressor':{'n_estimators': 100, 'max_features': 'auto', 'max_depth': 6, 'min_samples_split': 2, 'min_weight_fraction_leaf': 0.0, 'n_jobs': -1},})

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

automl.describe_pipeline (automl.rankings.iloc [0] ["id"])
-9

Заключение

В статье мы рассмотрели, как покажет себя EvalML в работе с регрессией и NLP. Мы можем с уверенностью сказать, что многие рутинные задачи машинного обучения действительно автоматизируются. Это позволяет даже начинающим специалистам экспериментировать и создавать свои модели с достаточно высокой точностью.

С другой стороны EvalML будет полезен и более опытным специалистам, так как позволит избавиться от рутины и оптимизировать рабочие процессы. Мы однозначно рекомендуем почитать больше о библиотеке, а еще лучше - покопаться в EvalML самим.

Другие наши статьи:

Наши соцсети:

-10