Visualizzare le prove di ottimizzazione e AutoML

Una versione di valutazione degli iperparametri o una versione di valutazione AutoML cerca i parametri ottimali per un modello di Machine Learning. Ogni versione di valutazione è costituita da più esecuzioni, in cui ogni esecuzione valuta una combinazione di parametri specifica. Puoi monitorare queste run usando elementi di esperimenti ML in Fabric.

Il modulo flaml.visualization offre funzioni per tracciare e confrontare le esecuzioni in FLAML. Puoi usare Plotly per interagire con i tuoi plot di esperimenti AutoML. Per utilizzare queste funzioni, devi fornire il tuo ottimizzato flaml.AutoML o flaml.tune.tune.ExperimentAnalysis oggetto.

Questo articolo illustra come usare il modulo flaml.visualization per analizzare ed esplorare i risultati della versione di valutazione AutoML. È possibile seguire gli stessi passaggi anche per il tentativo sugli iperparametri.

Creare una versione di valutazione di AutoML

AutoML offre una suite di processi automatizzati in grado di identificare la migliore pipeline di Machine Learning per il set di dati, rendendo l'intero processo di modellazione più semplice e spesso più accurato. In sostanza, consente di risparmiare i problemi di ottimizzazione manuale di modelli e iperparametri diversi.

Nella seguente cella di codice:

  1. Caricheremo il set di dati Iris.
  2. Suddividi i dati in set di addestramento e di test.
  3. Avvia una prova AutoML per adattarla ai dati di addestramento.
  4. Esplora i risultati dello studio AutoML con le visualizzazioni di flaml.visualization.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from flaml import AutoML

# Load the Iris data and split it into train and test sets
x, y = load_iris(return_X_y=True, as_frame=True)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=7654321)

# Create an AutoML instance and set the parameters
automl = AutoML()
automl_settings = {
    "time_budget": 10, # Time limit in seconds
    "task": "classification", # Type of machine learning task
    "log_file_name": "aml_iris.log", # Name of the log file
    "metric": "accuracy", # Evaluation metric
    "log_type": "all", # Level of logging
}
# Fit the AutoML instance on the training data
automl.fit(X_train=x_train, y_train=y_train, **automl_settings)

Visualizzeremo i risultati dell'esperimento

Dopo aver eseguito una prova AutoML, visualizza i risultati per analizzare quanto bene i modelli hanno funzionato e come si sono comportati. In questa parte della documentazione, impari come utilizzare le utility integrate nella libreria FLAML a questo scopo.

Importare il modulo di visualizzazione

Per accedere a queste utilità di visualizzazione, esegui il seguente comando di importazione:

import flaml.visualization as fviz

Cronologia dell'ottimizzazione

Un grafico di cronologia di ottimizzazione tipicamente ha il numero di tentativi o iterazioni sull'asse x e una metrica di prestazione, come la precisione o l'RMSE, sull'asse y. Man mano che il numero di prove aumenta, si vede un diagramma a linee o a scatter che indica la performance di ogni prova.

fig = fviz.plot_optimization_history(automl)
# or
fig = fviz.plot(automl, "optimization_history")
fig.show()

Ecco la trama risultante:

Grafico del tracciato della cronologia di ottimizzazione.

Importanza della caratteristica

Un grafico di importanza delle caratteristiche è uno strumento di visualizzazione potente che ti aiuta a comprendere l'importanza delle diverse caratteristiche di input nel determinare le previsioni di un modello.

fig = fviz.plot_feature_importance(automl)
# or
fig = fviz.plot(automl, "feature_importance")
fig.show()

Ecco la trama risultante:

Grafico del tracciato dell'importanza delle caratteristiche.

Tracciato delle coordinate parallele

Un tracciato delle coordinate parallele è uno strumento di visualizzazione che rappresenta i dati multidimensionali disegnando più linee verticali (assi) corrispondenti a variabili o iperparametri, con punti dati tracciati come linee connesse su questi assi. Nel contesto di un esperimento AutoML o di ottimizzazione, è fondamentale per visualizzare e analizzare le prestazioni di diverse combinazioni di iperparametri. Tracciando i percorsi delle configurazioni ad alte prestazioni, è possibile distinguere modelli o tendenze nelle scelte degli iperparametri e delle relative interazioni. Questo tracciato aiuta a capire quali combinazioni portano a prestazioni ottimali, individuando potenziali aree per un'ulteriore esplorazione e identificando eventuali compromessi tra iperparametri diversi.

Questa utilità accetta i seguenti altri argomenti:

  • learner: Specifica il modello di apprendimento che intendi studiare nell'esperimento. Questo parametro è applicabile solo per i risultati dell'esperimento AutoML. Lasciando vuoto questo campo, il sistema sceglie il miglior learner nell'intero esperimento.

  • params: elenco per specificare gli iperparametri da visualizzare. Lasciando vuoto questo campo, il sistema visualizza tutti gli iperparametri disponibili.

fig = fviz.plot_parallel_coordinate(automl, learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
# or
fig = fviz.plot(automl, "parallel_coordinate", learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
fig.show()

Ecco la trama risultante:

Grafico del tracciato delle coordinate parallele.

Tracciato di contorno

Un tracciato di contorno visualizza i dati tridimensionali in due dimensioni, in cui gli assi x e y rappresentano due iperparametri e le linee di contorno o i contorni riempiti rappresentano i livelli di una metrica delle prestazioni (ad esempio, accuratezza o perdita). Nel contesto di un esperimento AutoML o di ottimizzazione, un tracciato di contorno è utile per comprendere la relazione tra due iperparametri e il loro effetto combinato sulle prestazioni del modello.

Esaminando la densità e il posizionamento delle linee di contorno, è possibile identificare le aree dello spazio degli iperparametri in cui le prestazioni sono ottimizzate, verificare potenziali compromessi tra iperparametri e ottenere informazioni dettagliate sulle interazioni. Questa visualizzazione consente di perfezionare lo spazio di ricerca e il processo di ottimizzazione.

Questa utilità accetta gli argomenti seguenti:

  • learner: Specifica il modello di apprendimento che intendi studiare nell'esperimento. Questo parametro è applicabile solo per i risultati dell'esperimento AutoML. Lasciando vuoto questo campo, il sistema sceglie il miglior learner nell'intero esperimento.

  • params: elenco per specificare gli iperparametri da visualizzare. Lasciando vuoto questo campo, il sistema visualizza tutti gli iperparametri disponibili.

fig = fviz.plot_contour(automl, learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
# or
fig = fviz.plot(automl, "contour", learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
fig.show()

Ecco la trama risultante:

Grafico del tracciato di contorno.

Funzione di distribuzione empirica

Un tracciato di funzione di distribuzione empirica (EDF), spesso visualizzato come funzione passo, rappresenta la probabilità cumulativa che i punti dati siano minori o uguali a un determinato valore. All'interno di un esperimento di ottimizzazione o AutoML, è possibile usare un tracciato EDF per visualizzare la distribuzione delle prestazioni del modello in diverse configurazioni degli iperparametri.

Osservando la ripidità o l'appiattimento della curva in vari punti, si può comprendere rispettivamente la concentrazione di prestazioni del modello buone o scarse. Questa visualizzazione offre informazioni dettagliate sull'efficacia complessiva del processo di ottimizzazione, evidenziando se la maggior parte delle configurazioni tentate produce risultati soddisfacenti o se solo poche configurazioni si distinguono.

Nota

Per gli esperimenti AutoML, durante il training verranno applicati più modelli. Le prove di ciascun learner sono rappresentate come una serie di ottimizzazione. Per gli esperimenti di ottimizzazione degli iperparametri, verrà valutato solo un singolo learner. Tuttavia, è possibile fornire esperimenti di ottimizzazione aggiuntivi per visualizzare le tendenze in ogni learner.

fig = fviz.plot_edf(automl)
# or
fig = fviz.plot(automl, "edf")
fig.show()

Ecco la trama risultante:

Grafico del tracciato della funzione di distribuzione empirica.

Grafico della sequenza temporale

Un tracciato della sequenza temporale, spesso rappresentato come un diagramma di Gantt o una sequenza di barre, visualizza l'inizio, la durata e il completamento delle attività nel tempo. Nel contesto di un esperimento AutoML o di ottimizzazione, un tracciato della sequenza temporale può mostrare la progressione di varie valutazioni del modello e le rispettive durate, tracciate in base al tempo. Osservando questo tracciato, gli utenti possono cogliere l'efficienza del processo di ricerca, identificare eventuali colli di bottiglia o periodi di inattività e comprendere le dinamiche temporali delle diverse valutazioni degli iperparametri.

fig = fviz.plot_timeline(automl)
# or
fig = fviz.plot(automl, "timeline")
fig.show()

Ecco la trama risultante:

Grafico del tracciato della sequenza temporale.

Grafico delle sezioni

Tracciare la relazione dei parametri come grafico a sezioni in uno studio.

Questa utilità accetta gli argomenti seguenti:

  • learner: Specifica il modello di apprendimento che intendi studiare nell'esperimento. Questo parametro è applicabile solo per i risultati dell'esperimento AutoML. Lasciando vuoto questo campo, il sistema sceglie il miglior learner nell'intero esperimento.

  • params: elenco per specificare gli iperparametri da visualizzare. Lasciando vuoto questo campo, il sistema visualizza tutti gli iperparametri disponibili.

fig = fviz.plot_slice(automl, learner="sgd")
# or
fig = fviz.plot(automl, "slice", learner="sgd")
fig.show()

Ecco la trama risultante:

Grafico del tracciato delle sezioni.

Importanza degli iperparametri

Un tracciato dell'importanza degli iperparametri classifica visivamente gli iperparametri in base alla loro influenza sulle prestazioni del modello in un esperimento di AutoML o di ottimizzazione. Visualizzato in genere come grafico a barre, quantifica l'impatto di ogni iperparametro sulla metrica di destinazione. Esaminando questo tracciato, i professionisti possono distinguere quali iperparametri sono fondamentali per determinare i risultati del modello e quali hanno un effetto minimo.

Questa utilità accetta gli argomenti seguenti:

  • learner: Specifica il modello di apprendimento che intendi studiare nell'esperimento. Questo parametro è applicabile solo per i risultati dell'esperimento AutoML. Lasciando vuoto questo campo, il sistema sceglie il miglior learner nell'intero esperimento.

  • params: elenco per specificare gli iperparametri da visualizzare. Lasciando vuoto questo campo, il sistema visualizza tutti gli iperparametri disponibili.

fig = fviz.plot_param_importance(automl, learner="sgd")
# or
fig = fviz.plot(automl, "param_importance", learner="sgd")
fig.show()

Ecco la trama risultante:

Grafico del tracciato dell'importanza degli iperparametri.