Основные понятия AutoML в Fabric

AutoML (автоматизированная Машинное обучение) — это коллекция методов и инструментов, которые автоматизируют обучение и оптимизацию модели машинного обучения с небольшим участием человека. Целью AutoML является упрощение и ускорение процесса выбора оптимальной модели машинного обучения и гиперпараметров для данного набора данных, который обычно требует много навыков и вычислительной мощности.

В Fabric специалисты по обработке и анализу данных могут flaml.AutoML автоматизировать свои задачи машинного обучения.

AutoML может помочь специалистам и разработчикам машинного обучения из разных секторов:

  • Создание решений машинного обучения с минимальным кодом
  • Сокращение времени и затрат
  • Применение рекомендаций по обработке и анализу данных
  • Решение проблем быстро и эффективно

Рабочий процесс AutoML

flaml.AutoML — это класс для AutoML на основе задачи. Его можно использовать в качестве оценщика в стиле Scikit-learn с обычными методами fit и predict.

Чтобы запустить пробную версию AutoML, пользователям необходимо предоставить только обучающие данные и тип задачи. Благодаря интегрированным интерфейсам MLflow в Fabric пользователи также могут изучить различные запуски, которые были предприняты в пробной версии, чтобы узнать, как была выбрана окончательная модель.

Данные обучения

В Fabric пользователи могут передавать следующие типы входных данных функции AutoML fit :

  • Массив Numpy: когда входные данные хранятся в массиве Numpy, они передаются fit() в виде X_train и y_train.

  • Фрейм данных Pandas: когда входные данные хранятся в фрейме данных Pandas, они передаются fit() в качестве X_train и y_train, либо как фрейм данных и метка.

  • Pandas в кадре данных Spark: когда входные данные хранятся в виде кадра данных Spark, его можно преобразовать в PandasSpark кадр данных с помощью to_pandas_on_spark() , а затем передать fit() в качестве кадра данных и метки.

    from flaml.automl.spark.utils import to_pandas_on_spark
    psdf = to_pandas_on_spark(sdf)
    automl.fit(dataframe=psdf, label='Bankrupt?', isUnbalance=True, **settings)
    

Проблема машинного обучения

Пользователи могут указать задачу машинного обучения с помощью аргумента task . Существуют различные поддерживаемые задачи машинного обучения, в том числе:

  • Классификация: основная цель моделей классификации заключается в прогнозировании того, к каким категориям относятся новые данные на основе своих обучающих данных. К общим примерам классификации относятся обнаружение мошенничества, распознавание рукописного текста и обнаружение объектов.
  • Регрессия: модели регрессии прогнозируют числовые выходные значения на основе независимых прогнозаторов. В случае регрессии цель заключается в том, чтобы установить связь между этими независимыми переменными прогнозирования, оценивая, как одна переменная влияет на другие. Например, цены на автомобили, основанные на таких функциях, как, пробег газа, оценка безопасности и т. д.
  • Прогнозирование временных рядов: это используется для прогнозирования будущих значений на основе исторических точек данных, упорядоченных по времени. В временных рядах данные собираются и записываются по регулярным интервалам в течение определенного периода, например ежедневно, еженедельно, ежемесячно или ежегодно. Цель прогнозирования временных рядов — определить закономерности, тенденции и сезонность данных, а затем использовать эти сведения для прогнозирования будущих значений.

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

Необязательные входные данные

Укажите различные ограничения и входные данные для настройки пробной версии AutoML.

Ограничения

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

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

metric_constraints = [("train_loss", "<=", 0.1), ("val_loss", "<=", 0.1)]
automl.fit(X_train, y_train, max_iter=100, train_time_limit=1, metric_constraints=metric_constraints)

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

Метрика оптимизации

Во время обучения функция AutoML создает множество пробных версий, которые пытаются использовать различные алгоритмы и параметры. Средство AutoML выполняет итерацию по алгоритмам машинного обучения и гиперпараметрам. В этом процессе каждая итерация создает модель с оценкой обучения. Чем лучше оценка метрик, для которой требуется оптимизировать, тем лучше модель считается "подходящей" для ваших данных. Метрика оптимизации указывается с помощью аргумента metric . Это может быть строка, которая ссылается на встроенную метрику или определяемую пользователем функцию.

Метрики оптимизации AutoML

Параллельная настройка

В некоторых случаях может потребоваться ускорить пробную версию AutoML с помощью Apache Spark для параллелизации обучения. Для кластеров Spark по умолчанию FLAML запускает одну пробную версию для каждого исполнителя. Вы также можете настроить количество одновременных пробных версий с помощью аргумента n_concurrent_trials .

automl.fit(X_train, y_train, n_concurrent_trials=4, use_spark=True)

Дополнительные сведения о параллелизации маршрутов AutoML см. в документации FLAML для параллельных заданий Spark.

Отслеживание с помощью MLflow

Интеграцию Fabric MLflow можно также использовать для записи метрик, параметров и метрик исследуемых следов.

import mlflow
mlflow.autolog()

with mlflow.start_run(nested=True):
    automl.fit(dataframe=pandas_df, label='Bankrupt?', mlflow_exp_name = "automl_spark_demo")

# You can also provide a run_name pre-fix for the child runs

automl_experiment = flaml.AutoML()
automl_settings = {
    "metric": "r2",
    "task": "regression",
    "use_spark": True,
    "mlflow_exp_name": "test_doc",
    "estimator_list": [
        "lgbm",
        "rf",
        "xgboost",
        "extra_tree",
        "xgb_limitdepth",
    ],  # catboost does not yet support mlflow autologging
}
with mlflow.start_run(run_name=f"automl_spark_trials"):
    automl_experiment.fit(X_train=train_x, y_train=train_y, **automl_settings)

Поддерживаемые модели

AutoML в Fabric поддерживает следующие модели:

Категория Регрессия Прогнозирование временных рядов
(PySpark) Классификатор Gradient-Boosted Trees (GBT) (PySpark) Ускорение времени сбоя (AFT) регрессия выживания Arimax
(PySpark) Линейный SVM (PySpark) Обобщенная линейная регрессия AutoARIMA
(PySpark) Наивный Байес (PySpark) Регрессия градиентных деревьев (GBT) Среднее
(Synapse) LightGBM (PySpark) Линейная регрессия CatBoost
CatBoost (Synapse) LightGBM Дерево решений
Дерево решений CatBoost Экспоненциальное сглаживание
Крайне случайные деревья Дерево решений Крайне случайные деревья
Градиентное усиление Эластичная сеть ForecastTCN
Алгоритм "K-ближайших соседей" Крайне случайные деревья Градиентное усиление
Light GBM Градиентное усиление Экспоненциальное сглаживание Holt-Winters
Линейный классификатор опорных векторов Алгоритм "K-ближайших соседей" Алгоритм "K-ближайших соседей"
Логистическая регрессия LARS Lasso LARS Lasso
Логистическая регрессия с помощью нормализации L1/L2 Light GBM Light GBM
Наивный Байес Логистическая регрессия с помощью нормализации L1/L2 Наивный
Случайный лес Случайный лес Орбита
Случайный лес в Spark Случайный лес в Spark Пророк
Стохастический градиентный спуск (SGD) Стохастический градиентный спуск (SGD) Случайный лес
Классификация опорных векторов (SVC) XGBoost SARIMAX
XGboost XGBoost с ограниченной глубиной Среднесезонное
XGBoost с ограниченной глубиной Сезонный Наивный
Трансформер темпорального слияния
XGBoost
XGBoost для временных рядов
XGBoost с ограниченной глубиной для временных рядов
ElasticNet

Визуализация результатов

Модуль flaml.visualization предоставляет вспомогательные функции для построения процесса оптимизации с помощью Plotly. Используя Plotly, пользователи могут интерактивно исследовать результаты эксперимента AutoML. Чтобы использовать эти функции построения, предоставьте оптимизированный flaml.AutoML или flaml.tune.tune.ExperimentAnalysis объект в качестве входных данных.

В записной книжке можно использовать следующие функции:

  • plot_optimization_history: график истории оптимизации всех тестовых прогонок в эксперименте.
  • plot_feature_importance: график важности для каждой функции в наборе данных.
  • plot_parallel_coordinate: Постройте связи высокоразмерных параметров в эксперименте.
  • plot_contour: Построить зависимость параметров в виде контурного графика в эксперименте.
  • plot_edf: показано целевое значение EDF (эмпирическая функция распределения) эксперимента.
  • plot_timeline: Постройте временную шкалу эксперимента.
  • plot_slice: построить график среза для отображения связи параметров в исследовании.
  • plot_param_importance: Постройте график значимости гиперпараметров эксперимента.