AutoML in Fabric (anteprima)
AutoML (Automated Machine Learning) è una raccolta di metodi e strumenti che automatizzano il training e l'ottimizzazione dei modelli di Machine Learning con un coinvolgimento umano minimo. L'obiettivo di AutoML è semplificare e velocizzare il processo di scelta del modello di Machine Learning e degli iperparametri migliori per un determinato set di dati, che in genere richiede molta capacità e potenza di calcolo.
Importante
Questa funzionalità è disponibile in anteprima.
In Infrastruttura i data scientist possono usare flaml.AutoML
per automatizzare le attività di Machine Learning.
AutoML può aiutare professionisti e sviluppatori di ML da diversi settori a:
- Creare soluzioni ml con codice minimo
- Ridurre i tempi e i costi
- Applicare le procedure consigliate per l'analisi scientifica dei dati
- Risolvere i problemi in modo rapido ed efficiente
Flusso di lavoro autoML
flaml.AutoML
è una classe per AutoML in base all'attività. Può essere usato come strumento di stima dello stile Scikit-learn con i normali metodi di adattamento e stima.
Per avviare una versione di valutazione di AutoML, gli utenti devono fornire solo i dati di training e il tipo di attività. Con le esperienze MLflow integrate in Fabric, gli utenti possono anche esaminare le diverse esecuzioni che sono state tentate nella versione di valutazione per vedere come è stato scelto il modello finale.
Dati di training
In Fabric gli utenti possono passare i tipi di input seguenti alla funzione AutoML fit
:
Matrice Numpy: quando i dati di input vengono archiviati in una matrice Numpy, vengono passati come
fit()
X_train e y_train.Dataframe Pandas: quando i dati di input vengono archiviati in un dataframe Pandas, vengono passati a
fit()
come X_train e y_train oppure come dataframe ed etichetta.Pandas nel dataframe Spark: quando i dati di input vengono archiviati come dataframe Spark, possono essere convertiti in un
Pandas
Spark
dataframe usandoto_pandas_on_spark()
e quindi passati afit()
come dataframe ed etichetta.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)
Problema di Machine Learning
Gli utenti possono specificare l'attività di Machine Learning usando l'argomento task
. Sono disponibili varie attività di Machine Learning supportate, tra cui:
- Classificazione: l'obiettivo principale dei modelli di classificazione è prevedere le categorie in cui i nuovi dati rientrano in base alle informazioni dai dati di training. Esempi di classificazione comuni includono rilevamento delle frodi, riconoscimento della grafia e rilevamento degli oggetti.
- Regressione: i modelli di regressione stimano i valori di output numerici in base a predictor indipendenti. Nella regressione l'obiettivo è di stabilire la relazione tra le variabili indipendenti del predittore stimando il modo in cui una variabile influisce sulle altre. Ad esempio, i prezzi delle automobili in base a caratteristiche come, chilometraggio del gas, valutazione della sicurezza e così via.
- Previsione di serie temporali: viene usata per stimare i valori futuri in base ai punti dati cronologici ordinati in base al tempo. In una serie temporale, i dati vengono raccolti e registrati a intervalli regolari in un periodo specifico, ad esempio giornaliero, settimanale, mensile o annuale. L'obiettivo della previsione delle serie temporali consiste nell'identificare modelli, tendenze e stagionalità nei dati e quindi usare queste informazioni per eseguire stime sul valore futuro.
Per altre informazioni sulle altre attività supportate in FLAML, è possibile visitare la documentazione relativa alle attività AutoML in FLAML.
Input facoltativi
Fornire vari vincoli e input per configurare la versione di valutazione di AutoML.
Vincoli
Quando si crea una versione di valutazione autoML, gli utenti possono anche configurare vincoli per il processo AutoML, argomenti del costruttore di potenziali estimatori, tipi di modelli provati in AutoML e anche vincoli sulle metriche della versione di valutazione autoML.
Ad esempio, il codice seguente consente agli utenti di specificare un vincolo delle metriche nella versione di valutazione di 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)
Per altre informazioni su queste configurazioni, vedere la documentazione sulle configurazioni in FLAML.
Metrica di ottimizzazione
Durante il training, la funzione AutoML crea molte versioni di valutazione, che provano diversi algoritmi e parametri. Lo strumento AutoML scorre gli algoritmi di Machine Learning e gli iperparametri. In questo processo ogni iterazione crea un modello con un punteggio di training. Migliore è il punteggio per la metrica che si vuole ottimizzare, migliore è il modello considerato "adatto" ai dati. La metrica di ottimizzazione viene specificata tramite l'argomento metric
. Può essere una stringa, che fa riferimento a una metrica predefinita o a una funzione definita dall'utente.
Metriche di ottimizzazione autoML
Ottimizzazione parallela
In alcuni casi, è possibile accelerare la versione di valutazione di AutoML usando Apache Spark per parallelizzare il training. Per i cluster Spark, per impostazione predefinita, FLAML avvia una versione di valutazione per ogni executor. È anche possibile personalizzare il numero di versioni di valutazione simultanee usando l'argomento n_concurrent_trials
.
automl.fit(X_train, y_train, n_concurrent_trials=4, use_spark=True)
Per altre informazioni su come parallelizzare i percorsi AutoML, è possibile visitare la documentazione FLAML per i processi Spark paralleli.
Tenere traccia con MLflow
È anche possibile usare l'integrazione di Fabric MLflow per acquisire le metriche, i parametri e le metriche dei percorsi esplorati.
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)
Modelli supportati
AutoML in Fabric supporta i modelli seguenti:
Valutazione | Regressionee | Previsione di serie temporali |
---|---|---|
(PySpark) Classificatore di alberi con boosting sfumato (GBT) | (PySpark) Regressione di sopravvivenza AFT (Accelerated Failure Time) | Arimax |
(PySpark) SVM lineare | (PySpark) Regressione lineare generalizzata | AutoARIMA |
(PySpark) Naive Bayes | (PySpark) Regressione degli alberi con boosting sfumato (GBT) | Media |
(Synapse) LightGBM | (PySpark) Regressione lineare | CatBoost |
CatBoost | (Synapse) LightGBM | Decision Tree |
Decision Tree | CatBoost | ExponentialSmoothing |
Extremely Randomized Trees | Decision Tree | Extremely Randomized Trees |
Gradient Boosting | Elastic Net | ForecastTCN |
K Nearest Neighbors | Extremely Randomized Trees | Gradient Boosting |
Light GBM | Gradient Boosting | Smoothing esponenziale di Holt-Winters |
Linear SVC | K Nearest Neighbors | K Nearest Neighbors |
Logistic Regression | LARS Lasso | LARS Lasso |
Regressione logistica con regolarizzazione L1/L2 | Light GBM | Light GBM |
Naive Bayes | Regressione logistica con regolarizzazione L1/L2 | Naive |
Random Forest | Random Forest | Orbita |
Foresta casuale in Spark | Foresta casuale in Spark | Prophet |
Stochastic Gradient Descent (SGD) | Stochastic Gradient Descent (SGD) | Random Forest |
Support Vector Classification (SVC) | XGBoost | SARIMAX |
XGboost | XGBoost con profondità limitata | SeasonalAverage |
XGBoost con profondità limitata | SeasonalNaive | |
Trasformatore fusion temporale | ||
XGBoost | ||
XGBoost per serie temporali | ||
XGBoost con profondità limitata per le serie temporali | ||
ElasticNet |
Visualizzare i risultati
Il flaml.visualization
modulo fornisce funzioni di utilità per tracciare il processo di ottimizzazione usando Plotly. Sfruttando Plotly, gli utenti possono esplorare in modo interattivo i risultati dell'esperimento AutoML. Per usare queste funzioni di tracciato, fornire l'oggetto o flaml.tune.tune.ExperimentAnalysis
ottimizzato flaml.AutoML
come input.
È possibile usare le funzioni seguenti all'interno del notebook:
plot_optimization_history
: tracciare la cronologia di ottimizzazione di tutte le versioni di valutazione nell'esperimento.plot_feature_importance
: importanza del tracciato per ogni funzionalità nel set di dati.plot_parallel_coordinate
: tracciare le relazioni dei parametri ad alta dimensione nell'esperimento.plot_contour
: tracciare la relazione di parametro come tracciato di contorno nell'esperimento.plot_edf
: tracciare il valore obiettivo EDF (funzione di distribuzione empirica) dell'esperimento.plot_timeline
: tracciare la sequenza temporale dell'esperimento.plot_slice
: tracciare la relazione di parametro come tracciato di sezioni in uno studio.plot_param_importance
: tracciare l'importanza dell'iperparametro dell'esperimento.
Contenuto correlato
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per