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 с помощью 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
: настроите важность гиперпараметра эксперимента.