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
enSpark
medianteto_pandas_on_spark()
y, a continuación, pasarlos afit()
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.