Condividi tramite


AutoML in Fabric (anteprima)

AutoML (Machine Learning automatizzato) è una raccolta di metodi e strumenti che automatizzano il training e l'ottimizzazione dei modelli di apprendimento automatico con un intervento umano minimo. L'obiettivo di AutoML è quello di semplificare e velocizzare il processo di scelta del modello di apprendimento automatico e degli iperparametri migliori per un determinato set di dati, che in genere richiede competenze e potenza di calcolo.

Importante

Questa funzionalità si trova in anteprima.

In Fabric i data scientist possono usare flaml.AutoML per automatizzare le attività di apprendimento automatico.

AutoML può aiutare professionisti e sviluppatori di ML di settori diversi a:

  • Creare soluzioni ML con codifica minima
  • Ridurre i tempi e i costi
  • Applicare le procedure consigliate di data science
  • Risolvere i problemi in modo rapido ed efficiente

Flusso di lavoro autoML

flaml.AutoML è una classe per AutoML basato sull'attività. Può essere usato come strumento di valutazione dello stile Scikit-learn con i normali metodi di ridimensionamento e previsione.

Per avviare una versione di valutazione di AutoML, gli utenti devono specificare solo i dati di training e il tipo di attività. Con le esperienze MLflow integrate in Fabric, gli utenti possono anche analizzare 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 a fit() come 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 su Spark dataframe usando to_pandas_on_spark(), e quindi passati a fit() 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)
    

Problemi con l’apprendimento automatico

Gli utenti possono specificare l'attività di apprendimento automatico usando l'argomento task. Sono disponibili varie attività di apprendimento automatico supportate, tra cui:

  • Classificazione: l'obiettivo principale dei modelli di classificazione è quello di prevedere in quali categorie rientreranno i nuovi dati, in base alle informazioni sui dati di training. Esempi di classificazione comuni includono il rilevamento delle frodi, il riconoscimento della grafia e il rilevamento degli oggetti.
  • Regressione: i modelli di regressione prevedono valori di output numerici basati su predittori indipendenti. Nella regressione, l'obiettivo è di stabilire la relazione tra le variabili del predittore indipendenti, prevedendo come una variabile influisce sulle altre. Ad esempio, il prezzo dell'automobile in base a caratteristiche quali il consumo di carburante, la valutazione della sicurezza ecc.
  • Previsione di serie temporali: viene usata per prevedere i valori futuri in base ai punti dei dati storici in ordine cronologico. In una serie temporale, i dati vengono raccolti e registrati a intervalli regolari in un periodo specifico, ad esempio quotidianamente, settimanalmente, mensilmente o annualmente. L'obiettivo della previsione delle serie temporali consiste nell'identificare modelli, tendenze e periodicità nei dati, e quindi usare queste informazioni per fare previsioni sui valori futuri.

Per maggiori informazioni sulle altre attività supportate in FLAML, consulta la documentazione relativa alle attività AutoML in FLAML.

Input facoltativi

Fornire 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, costruire argomenti di potenziali stime, 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 maggiori informazioni su queste configurazioni, consulta 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, oppure 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 maggiori informazioni su come sincronizzare i percorsi AutoML, consulta la documentazione FLAML per i processi Spark paralleli.

Rilevamento 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 una serie temporale
(PySpark) Classificatore di Alberi con gradient boosting (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 gradient boosting (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 Lisciamento 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 modulo flaml.visualization fornisce funzioni di utilità per tracciare il processo di ottimizzazione usando Plotly. Grazie a Plotly, gli utenti possono esplorare in modo interattivo i risultati dell'esperimento AutoML. Per usare queste funzioni di plottaggio, fornire l'oggetto flaml.AutoML o flaml.tune.tune.ExperimentAnalysis ottimizzato 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 sezione in uno studio.
  • plot_param_importance: tracciare l'importanza dell'iperparametro dell'esperimento.