Поделиться через


AutoML в Fabric (предварительная версия)

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

Внимание

Эта функция доступна в предварительной версии.

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

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

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

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

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

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

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

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

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

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

  • Pandas в кадре данных Spark: когда входные данные хранятся в виде кадра данных Spark, его можно преобразовать в pandas в кадр данных Spark с помощью, 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 ExponentialSmoothing
Крайне случайные деревья Дерево решений Крайне случайные деревья
Градиентное усиление Эластичная сеть ForecastTCN
Алгоритм "К ближайших соседей" Крайне случайные деревья Градиентное усиление
Упрощенный алгоритм GBM Градиентное усиление Экспоненциальное сглаживание Holt-Winters
Линейная классификация опорных векторов Алгоритм "К ближайших соседей" Алгоритм "К ближайших соседей"
Логистическая регрессия Лассо LARS Лассо LARS
Логистическая регрессия с помощью нормализации L1/L2 Упрощенный алгоритм GBM Упрощенный алгоритм GBM
Упрощенный алгоритм Байеса Логистическая регрессия с помощью нормализации L1/L2 Naive
Случайный лес Случайный лес Орбита
Случайный лес в Spark Случайный лес в Spark Prophet
Стохастический градиентный спуск (SGD) Стохастический градиентный спуск (SGD) Случайный лес
Классификация опорных векторов (SVC) XGBoost SARIMAX
XGboost XGBoost с ограниченной глубиной SeasonalAverage
XGBoost с ограниченной глубиной SeasonalNaive
Преобразователь темпорального слияния
XGBoost
XGBoost для временных рядов
XGBoost с ограниченной глубиной для временных рядов
ElasticNet

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

Модуль flaml.visualization предоставляет служебные функции для построения процесса оптимизации с помощью графики. Используя графики, пользователи могут интерактивно изучить результаты эксперимента 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: настроите важность гиперпараметра эксперимента.

Следующие шаги