Время прочтения: 3 мин.

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

  • Заполнение пустых значений.
  • Кодировка категориальных переменных.
  • Масштабирование числовых переменных.
  • Подбор необходимых признаков.
  • Выбор лучшей модели.
  • Настройка различных гиперпараметров.

В данной статье мы рассмотрим две библиотеки AutoML., сравним ее с классическим алгоритмом машинного обучения.

Для начала обучим простой классификатор из библиотеки sklearn для нашей задачи.

import random
import pandas as pd
from sklearn.metrics import f1_score, make_scorer
from sklearn.model_selection import KFold, cross_val_score, train_test_split
from sklearn.tree import DecisionTreeClassifier as clf

RS=42
f1 = make_scorer(f1_score,average='weighted')

DF_URL = 'https://archive.ics.uci.edu/ml/machine-learning-databases/zoo/zoo.data'

cols = range(1, 18)
dataframe = pd.read_csv(DF_URL, header=None, usecols=cols)

X = dataframe.iloc[:, 0:16]
y = dataframe.iloc[:, 16]

kf = KFold(5, True,RS)

clf = clf(random_state=RS)
    
def getMeanf1(X, y, clf):
    cv_results = cross_val_score(clf, X, y, cv=kf, scoring=f1)
    return cv_results.mean()
getMeanf1(X,y, clf)

По итогам работы обученный классификатор показывает следующий результат:

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

Библиотекой AutoML, которую мы рассмотрим будет tpot. Данная библиотека проста в установке и использовании. Для того, чтобы установить библиотеку, необходимо зайти в виртуальное окружение проекта, а затем ввести в командной строке:

pip install tpot

Далее

from tpot import TPOTClassifier
tpot = TPOTClassifier(generations=5, population_size=50,scoring=f1, random_state=42, n_jobs=-1 )
df.getMeanf1(X,y,tpot)

В результате получим следующий результат:

В общем случае библиотека TPOT работает дольше, чем обычный классификатор, при этом результирующая модель получается менее точной. Однако у TPOT есть полезные встроенные методы, такие как predict_proba и fitted_pipeline_ которые позволяют получить вероятность принадлежности классу и sklearn pipeline соответственно.

Другой библиотекой, которую мы рассмотрим является mljar-supervised. Для ее установки необходимо выполнить:

pip install mljar-supervised

Далее

from sklearn.model_selection import train_test_split
from supervised.automl import AutoML
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1)
automl = AutoML(algorithms=["Decision Tree", "Linear", "Random Forest"],
                eval_metric='accuracy',total_time_limit=5*60)
automl.fit(X_train, y_train)

В результате получим следующий вывод:

Кроме того, данная библиотека создает различные файлы логов экспериментов, confusion matrix для каждой модели в папке скрипта.

Данная библиотека не совсем гибкая в плане подбора гиперпараметров, но очень хорошая для построения baseline`ов.

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