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

FLAML (Fast and Lightweight Auto ML) — это библиотека Python, которая помогает создавать модели машинного обучения с высокой точностью. Она поддерживается Microsoft Research и предоставляет пользователям готовую оптимизацию гиперпараметров с низкими вычислительными затратами. В частности, при использовании этой библиотеки пользователю не нужно выбирать обучающиеся и настраивать гиперпараметры для большей точности — она выполняет все эти задачи автоматически и выдает результат с наилучшей точностью. FLAML предлагает лучший алгоритм для решения конкретной проблемы.

Для начала я установил библиотеку:

pip install flaml

Перехожу в Jupyter Notebook и импортирую flaml:

from flaml import AutoML

Я взял набор данных Wine, который является классическим и легким набором данных для многоклассовой классификации, можно его импортировать из библиотеки sklearn:

from sklearn.datasets import load_wine

Загружаю данные:

wine = load_wine(as_frame=True)

Давайте посмотрим на набор данных:

wine.frame.sample(5)

Отлично, набор данных загружен успешно. Теперь разделю его на train и test:

from sklearn.model_selection import train_test_split

X, y = wine.data, wine.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1)
X_train.shape, X_test.shape, y_train.shape, y_test.shape

((124, 13), (54, 13), (124,), (54,))

Далее инициализирую AutoML и задам некоторые параметры, которые помогут в обучении модели:

  1. time_budget: время, за которое модель должна быть обучена
  2. metric: метрики, по которым мы будем смотреть производительность нашей модели
  3. task: определение задачи (регрессия/классификация). В моем случае это будет задача классификации.
automl = AutoML()

parametrs = {
     "time_budget": 120,
     "metric": "accuracy",
     "task": "classification"
}

Чем больше time_budget, тем лучше будет модель, поскольку она потратит больше времени на подбор гиперпараметров и поиск лучшей модели. Вам предоставляется возможность установить значение гиперпараметров в соответствии с вашими ожиданиями.

Теперь передам данные и параметры для обучения.

automl.fit(X_train=X_train, y_train=y_train, **parametrs)

Output:

[flaml.automl: 04-18 10:30:28] {2974} INFO - retrain xgb_limitdepth for 0.0s
[flaml.automl: 04-18 10:30:28] {2981} INFO - retrained model: XGBClassifier(base_score=0.5, booster='gbtree',
              colsample_bylevel=0.6522362095190645, colsample_bynode=1,
              colsample_bytree=1.0, gamma=0, gpu_id=-1, importance_type='gain',
              interaction_constraints='', learning_rate=0.2895668884947081,
              max_delta_step=0, max_depth=5,
              min_child_weight=2.1865910007993596, missing=nan,
              monotone_constraints='()', n_estimators=13, n_jobs=-1,
              num_parallel_tree=1, objective='multi:softprob', random_state=0,
              reg_alpha=0.003823758644135413, reg_lambda=2.148695082230283,
              scale_pos_weight=None, subsample=1.0, tree_method='exact',
              use_label_encoder=False, validate_parameters=1, verbosity=0)
[flaml.automl: 04-18 10:30:28] {2310} INFO - fit succeeded
[flaml.automl: 04-18 10:30:28] {2311} INFO - Time taken to find the best model: 16.942512273788452

Теперь я предскажу результат:

pred_prob = automl.predict_proba(X_train)
pred_prob_shape = automl.predict_proba(X_train).shape
best_model = automl.model
print(pred_prob_shape)
print(best_model)

Output:

(124, 3)
<flaml.model.XGBoostLimitDepthEstimator object at 0x168c8da30>

Лучшей моделью для задачи является XGBoost.

Данная AutoML библиотека в основном ориентирована на feature engineering, model selection, hyperparametr tuning, neural architecture search и model compression.

В данном посте я использовал библиотеку FLAML и построил модель классификации для набора данных Wine. Таким же образом можно построить модель регрессии для других данных. Она полезна даже для опытных специалистов, поскольку они могут больше сосредоточиться на процессе подготовки данных, оставив повторяющийся процесс обучения модели ML и выполнение настройки гиперпараметров для FLAML. Данная библиотека также помогает сократить время и усилия, необходимые для построения моделей машинного обучения. Оставляю ссылки на документацию FLAML и Jupyter Notebook.

Спасибо за внимание!