Compartir vía


AutoML en Fabric (versión preliminar)

AutoML (Automated Machine Learning o aprendizaje automático automatizado) es una colección de métodos y herramientas que automatizan el entrenamiento y la optimización del modelo de aprendizaje automático con poca implicación humana. El objetivo de AutoML es simplificar y acelerar el proceso de elegir el mejor modelo de aprendizaje automático e hiperparámetros para un conjunto de datos determinado, que normalmente requiere una gran cantidad de aptitudes y potencia informática.

Importante

Esta característica se encuentra en versión preliminar.

En Fabric, los científicos de datos pueden usar flaml.AutoML para automatizar sus tareas de aprendizaje automático.

AutoML puede ayudar a los profesionales y desarrolladores de ML de diferentes sectores a:

  • Compilar de soluciones de ML con codificación mínima
  • Reducir el tiempo y el coste
  • Aplicar procedimientos recomendados de la ciencia de datos
  • Solucionar problemas de forma rápida y eficaz

Flujo de trabajo de AutoML

flaml.AutoML es una clase para AutoML basada en la tarea. Se puede usar como estimador de estilo Scikit-learn con los métodos de ajuste y predicción habituales.

Para iniciar una versión de prueba de AutoML, los usuarios solo necesitan proporcionar los datos de entrenamiento y el tipo de tarea. Con las experiencias de MLflow integradas en Fabric, los usuarios también pueden examinar las distintas ejecuciones que se intentaron en la prueba para ver cómo se eligió el modelo final.

Datos de aprendizaje.

En Fabric, los usuarios pueden pasar los siguientes tipos de entrada a la función AutoML fit:

  • Matriz numpy: cuando los datos de entrada se almacenan en una matriz de Numpy, se pasan a fit() como X_train e y_train.

  • Trama de datos de Pandas: cuando los datos de entrada se almacenan en una trama de datos de Pandas, se pasan a fit() como X_train e y_train, o como trama de datos y etiqueta.

  • Pandas en trama de datos de Spark: cuando los datos de entrada se almacenan como una trama de datos de Spark, se pueden convertir en una trama de datos de Pandas en Spark mediante to_pandas_on_spark() y, a continuación, pasarlos a fit() como trama de datos y etiqueta.

    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)
    

Problemas del aprendizaje automático

Los usuarios pueden especificar la tarea de aprendizaje automático mediante el argumento task. Hay varias tareas de aprendizaje automático admitidas, entre las que se incluyen:

  • Clasificación: el objetivo principal de los modelos de clasificación es predecir en qué categorías se incluirán los nuevos datos en función de lo aprendido de los datos de entrenamiento. Algunos ejemplos comunes de clasificación son la detección de fraudes, el reconocimiento de escritura a mano y la detección de objetos.
  • Regresión: los modelos de regresión predicen los valores de salida numéricos basados en indicadores independientes. En la regresión, el objetivo es ayudar a establecer la relación entre esas variables de predicción independientes mediante la estimación de cómo una variable afecta a las otras. Por ejemplo, el precio de un automóvil según características como, el kilometraje de gas, la clasificación de seguridad, etc.
  • Previsión de series temporales: se usa para predecir valores futuros basados en puntos de datos históricos ordenados por tiempo. En una serie temporal, los datos se recopilan y registran a intervalos regulares durante un período específico, como diario, semanal, mensual o anual. El objetivo de la previsión de series temporales es identificar patrones, tendencias y estacionalidad en los datos y, a continuación, usar esta información para realizar predicciones sobre el valor futuro.

Para obtener más información sobre otras tareas admitidas en FLAML, puede visitar la documentación sobre las tareas de AutoML en FLAML.

Entradas opcionales

Proporcione varias restricciones y entradas para configurar su prueba de AutoML.

Restricciones

Al crear una versión de prueba de AutoML, los usuarios también pueden configurar restricciones en el proceso de AutoML, argumentos de constructor de posibles estimadores, tipos de modelos probados en AutoML e incluso restricciones en las métricas de la prueba de AutoML.

Por ejemplo, el código siguiente permite a los usuarios especificar una restricción de métricas en la versión de prueba de 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)

Para obtener más información sobre estas configuraciones, puede visitar la documentación sobre las configuraciones en FLAML.

Métrica de optimización

Durante el entrenamiento, la función AutoML crea muchas pruebas que probarán diferentes algoritmos y parámetros. La herramienta AutoML recorre en iteración los algoritmos de ML y los hiperparámetros. En este proceso, cada iteración realiza un modelo con una puntuación de entrenamiento. Cuanto mejor sea la puntuación de la métrica que quiere optimizar, mejor se ajustará el modelo a los datos. La métrica de optimización se especifica mediante el argumento metric. Puede ser una cadena que hace referencia a una métrica integrada o a una función definida por el usuario.

Métricas de optimización de AutoML

Ajuste paralelo

En algunos casos, es posible que quiera acelerar la versión de prueba de AutoML mediante Apache Spark para paralelizar el entrenamiento. En el caso de los clústeres de Spark, de forma predeterminada, FLAML inicia una prueba por ejecutor. También puede personalizar el número de pruebas simultáneas mediante el argumento n_concurrent_trials.

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

Para obtener más información sobre cómo paralelizar los recorridos de AutoML, puede visitar la documentación de FLAML para trabajos paralelos de Spark.

Seguimiento con MLflow

También puede usar la integración de Fabric MLflow para capturar las métricas, los parámetros y las métricas de los recorridos explorados.

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)

Modelos admitidos

AutoML en Fabric admite los siguientes modelos:

Clasificación Regresión Previsión de series temporales
(PySpark) Clasificador de árboles potenciados por gradientes (GBT) (PySpark) Regresión de supervivencia de tiempo de error acelerado (AFT) Arimax
(PySpark) SVM lineal (PySpark) Regresión lineal generalizada AutoARIMA
(PySpark) Naive Bayes (PySpark) Regresión de árboles potenciados por gradientes (GBT) Media
(Synapse) LightGBM (PySpark) Regresión lineal CatBoost
CatBoost (Synapse) LightGBM Árbol de decisión
Árbol de decisión CatBoost ExponentialSmoothing
Árboles extremadamente aleatorios Árbol de decisiones Árboles extremadamente aleatorios
Potenciación del gradiente Red elástica ForecastTCN
K Vecinos más próximos Árboles extremadamente aleatorios Potenciación del gradiente
Light GBM Potenciación del gradiente Suavizado exponencial holt-winters
SVC lineal K Vecinos más próximos K Vecinos más próximos
Regresión logística Lazo LARS Lazo LARS
Regresión logística con regularización L1/L2 Light GBM Light GBM
Bayes naive Regresión logística con regularización L1/L2 Naive
Bosque aleatorio Bosque aleatorio Orbital
Bosque aleatorio en Spark Bosque aleatorio en Spark Prophet
Descenso de gradiente estocástico (SGD) Descenso de gradiente estocástico (SGD) Bosque aleatorio
Clasificación de vectores de soporte (SVC) XGBoost SARIMAX
XGboost XGBoost con profundidad limitada SeasonalAverage
XGBoost con profundidad limitada SeasonalNaive
Transformador de fusión temporal
XGBoost
XGBoost para serie temporal
XGBoost con profundidad limitada para series temporales
ElasticNet

Visualización de los resultados

El módulo flaml.visualization proporciona funciones de utilidad para trazar el proceso de optimización mediante Plotly. Al aprovechar Plotly, los usuarios pueden explorar interactivamente sus resultados del experimento de AutoML. Para usar estas funciones de trazado, proporcione su objeto optimizado flaml.AutoML o flaml.tune.tune.ExperimentAnalysis como entrada.

Puede usar las siguientes funciones en el cuaderno:

  • plot_optimization_history: traza el historial de optimización de todas las pruebas del experimento.
  • plot_feature_importance: traza la importancia de cada característica del conjunto de datos.
  • plot_parallel_coordinate: traza las relaciones de parámetros de alta dimensión en el experimento.
  • plot_contour: traza la relación de parámetros como trazado de contorno en el experimento.
  • plot_edf: traza el valor objetivo EDF (función de distribución empírica) del experimento.
  • plot_timeline: traza la escala de tiempo del experimento.
  • plot_slice: traza la relación de parámetros como trazado de segmentos en un estudio.
  • plot_param_importance: traza la importancia de hiperparámetros del experimento.