Время прочтения: 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, который будет относительно неплохо справляться со своей задачей. При более глубоком изучении и настройке параметров эти инструменты способны показывать более высокие результаты.