Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il machine learning automatizzato (AutoML) è un insieme di metodi e strumenti che automatizzano l'addestramento e l'ottimizzazione dei modelli di machine learning con un coinvolgimento 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.
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 basata sull'attività. Puoi usarlo come stima in stile Scikit-learn con i metodi usuali fitpredict .
Per avviare una prova AutoML, fornisci i dati di addestramento e il tipo di attività. Utilizzando le esperienze integrate MLflow in Fabric, puoi anche esaminare le diverse esecuzioni tentate durante la prova per vedere come è stato scelto il modello finale.
Dati di training
In Fabric, passa i seguenti tipi di input alla funzione AutoMLfit:
Array NumPy: Quando i dati di ingresso sono memorizzati in un array NumPy, passali come
fit()X_trainey_train.Pandas DataFrame: Quando i dati di input sono memorizzati in un Pandas DataFrame, passali a
fit()comeX_trainey_train, oppure comedataframeelabel.DataFrame Pandas su Spark: Quando i dati di input sono archiviati in un DataFrame Spark, convertili in un DataFrame
PandassuSparkutilizzandoto_pandas_on_spark(). Poi, passalo afit()comedataframeelabel.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 vari vincoli e input per configurare la prova 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 prove, che provano diversi algoritmi e parametri. Lo strumento AutoML itera attraverso algoritmi di Machine Learning e 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 prova di AutoML usando Apache Spark per parallelizzare l'addestramento. Per i cluster Spark, per impostazione predefinita, FLAML avvia una versione di valutazione per ogni executor. È anche possibile personalizzare il numero di prove simultanee usando l'argomento n_concurrent_trials.
automl.fit(X_train, y_train, n_concurrent_trials=4, use_spark=True)
Per saperne di più su come parallelizzare le tue prove AutoML, consulta la documentazione FLAML per i lavori paralleli di Spark.
Rilevamento con MLflow
Utilizza l'integrazione Fabric MLflow per catturare metriche, parametri e modelli provenienti dalle prove esplorate.
import mlflow
mlflow.autolog()
with mlflow.start_run(nested=True):
automl.fit(dataframe=pandas_df, label='Bankrupt?', mlflow_exp_name = "automl_spark_demo")
Puoi anche fornire un run_name prefisso per le run dei figli. Il seguente esempio crea una nuova istanza AutoML ed esegue una prova di regressione basata su Spark con impostazioni esplicite:
import flaml
import mlflow
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="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 | Regressione | Previsione di una serie temporale |
|---|---|---|
| (PySpark) Classificatore di Alberi a Gradient Boosting (GBT) | (Pyspark) Regressione di sopravvivenza AFT (Tempo di Guasto Accelerato) | Arimax |
| (PySpark) SVM lineare | (PySpark) Regressione lineare generalizzata | AutoARIMA |
| (PySpark) Naive Bayes | (Pyspark) Regressione con Alberi Potenziati dal Gradiente (GBT) | Media |
| (Sinapsi) LightGBM | (PySpark) Regressione lineare | CatBoost |
| CatBoost | (Sinapsi) LightGBM | Albero delle decisioni |
| Albero delle decisioni | CatBoost | ExponentialSmoothing |
| Alberi estremamente casuali | Albero delle decisioni | Alberi estremamente casuali |
| Aumento del gradiente | Rete elastica | ForecastTCN |
| K Vicini più vicini | Alberi estremamente casuali | Aumento del gradiente |
| GBM leggero | Aumento del gradiente | Lisciamento esponenziale di Holt-Winters |
| SVC lineare | K Vicini più vicini | K Vicini più vicini |
| Regressione logistica | LARS Lasso | LARS Lasso |
| Regressione logistica con regolarizzazione L1/L2 | GBM leggero | GBM leggero |
| Bayes ingenuo | Regressione logistica con regolarizzazione L1/L2 | Ingenuo |
| Foresta casuale | Foresta casuale | Orbita |
| Random Forest su Spark | Random Forest su Spark | Prophet |
| Discesa del Gradiente Stocastica (SGD) | Discesa del Gradiente Stocastica (SGD) | Foresta casuale |
| Classificazione a Vettori di Supporto (SVC) | XGBoost | SARIMAX |
| XGBoost | XGBoost con profondità limitata | Media Stagionale |
| XGBoost con profondità limitata | SeasonalNaive | |
| Trasformatore temporale a fusione | ||
| 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: visualizzare la storia di ottimizzazione di tutti i tentativi nell'esperimento. -
plot_feature_importance: Importanza del grafico per ogni caratteristica 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: Traccia la relazione tra parametri come un grafico a fette in un studio. -
plot_param_importance: Traccia l'importanza degli iperparametri dell'esperimento.