Opplæringsvisualiseringer (forhåndsvisning)
En hyperparameterprøve eller AutoML-prøveversjon søker etter de optimale parameterne for en maskinlæringsmodell. Hver prøveversjon består av flere kjøringer, der hver kjøring evaluerer en bestemt parameterkombinasjon. Brukere kan overvåke disse kjøringene ved hjelp av ML-eksperimentelementer i Fabric.
Modulen flaml.visualization
tilbyr funksjoner for å tegne inn og sammenligne kjøringene i FLAML. Brukere kan bruke Plotly til å samhandle med AutoML-eksperimentplottene sine. Hvis du vil bruke disse funksjonene, må brukerne angi optimaliserte flaml.AutoML
funksjoner eller flaml.tune.tune.ExperimentAnalysis
objekter.
Denne artikkelen lærer deg hvordan du bruker modulen flaml.visualization
til å analysere og utforske prøveresultatene for AutoML. Du kan også følge de samme trinnene for hyperparameterprøven.
Viktig
Denne funksjonen er i forhåndsvisning.
Opprett en AutoML-prøveversjon
AutoML tilbyr en rekke automatiserte prosesser som kan identifisere det beste datalæringssamlebåndet for datasettet, noe som gjør hele modelleringsprosessen enklere og ofte mer nøyaktig. I hovedsak sparer det deg bryet med håndjustering av forskjellige modeller og hyperparametere.
I kodecellen nedenfor gjør vi følgende:
- Last inn Iris-datasettet.
- Del dataene inn i opplærings- og testsett.
- Start en AutoML-prøveversjon for å tilpasse opplæringsdataene våre.
- Utforsk resultatene av AutoML-prøveversjonen med visualiseringene fra
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)
Visualiser eksperimentresultatene
Når du kjører en AutoML-prøveversjon, må du visualisere resultatene for å analysere hvor godt modellene fungerte og hvordan de oppførte seg. I denne delen av dokumentasjonen viser vi deg hvordan du bruker de innebygde verktøyene i FLAML-biblioteket til dette formålet.
Importer visualiseringsmodul
Hvis du vil ha tilgang til disse visualiseringsverktøyene, kjører vi følgende importkommando:
import flaml.visualization as fviz
Optimaliseringslogg
Et optimaliseringsloggplott har vanligvis antall forsøk/gjentakelser på x-aksen og en ytelsesmetrikk (for eksempel nøyaktighet, RMSE osv.) på y-aksen. Etter hvert som antall forsøk øker, vil du se et linje- eller punkttegn som angir ytelsen til hver prøveversjon.
fig = fviz.plot_optimization_history(automl)
# or
fig = fviz.plot(automl, "optimization_history")
fig.show()
Her er det resulterende plottet:
Funksjons viktighet
Et plott for viktighet for funksjoner er et kraftig visualiseringsverktøy som lar deg forstå betydningen av ulike inndatafunksjoner for å bestemme prognosene for en modell.
fig = fviz.plot_feature_importance(automl)
# or
fig = fviz.plot(automl, "feature_importance")
fig.show()
Her er det resulterende plottet:
Parallell koordinatplott
Et parallelt koordinatplott er et visualiseringsverktøy som representerer flerdimensjonale data ved å tegne flere loddrette linjer (akser) som tilsvarer variabler eller hyperparametere, med datapunkter tegnet inn som tilkoblede linjer på tvers av disse aksene. I sammenheng med et AutoML- eller justeringseksperiment er det medvirkende til å visualisere og analysere ytelsen til ulike hyperparameterkombinasjoner. Ved å spore banene til konfigurasjoner med høy ytelse, kan man skjelne mønstre eller trender i hyperparametervalg og samhandlinger. Dette plottet bidrar til å forstå hvilke kombinasjoner som fører til optimal ytelse, finne potensielle områder for videre utforskning og identifisere eventuelle avveininger mellom ulike hyperparametere.
Dette verktøyet tar følgende andre argumenter:
learner
: Angi eleven du vil studere i eksperimentet. Denne parameteren gjelder bare for autoML-eksperimentresultater. Ved å la dette stå tomt, velger systemet den beste eleven i hele eksperimentet.params
: En liste for å angi hvilken hyperparameter som skal vises. Ved å la dette stå tomt, viser systemet alle tilgjengelige hyperparametere.
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()
Her er det resulterende plottet:
Konturtegn
Et konturplott visualiserer tredimensjonale data i to dimensjoner, der x- og y-aksene representerer to hyperparametere, og konturlinjene eller de fylte konturene viser nivåer av en ytelsesmåling (for eksempel nøyaktighet eller tap). I sammenheng med et AutoML- eller justeringseksperiment er et konturplott gunstig for å forstå forholdet mellom to hyperparametere og deres kombinerte effekt på modellytelsen.
Ved å undersøke tettheten og plasseringen av konturlinjene, kan man identifisere områder med hyperparameterrom der ytelsen er optimalisert, fastslå potensielle avveininger mellom hyperparametere og få innsikt i samhandlingene deres. Denne visualiseringen bidrar til å begrense søkeområdet og justeringsprosessen.
Dette verktøyet tar også følgende argumenter:
learner
: Angi eleven du vil studere i eksperimentet. Denne parameteren gjelder bare for autoML-eksperimentresultater. Ved å la dette stå tomt, velger systemet den beste eleven i hele eksperimentet.params
: En liste for å angi hvilken hyperparameter som skal vises. Ved å la dette stå tomt, viser systemet alle tilgjengelige hyperparametere.
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()
Her er det resulterende plottet:
Empirisk distribusjonsfunksjon
Et empirisk fordelingsfunksjonstegn (EDF), ofte visualisert som en trinnfunksjon, representerer den kumulative sannsynligheten for at datapunkter er mindre enn eller lik en bestemt verdi. I et AutoML- eller justeringseksperiment kan et EDF-plott brukes til å visualisere fordelingen av modellytelser på tvers av ulike hyperparameterkonfigurasjoner.
Ved å observere brattheten eller flatheten i kurven på ulike punkter, kan man forstå konsentrasjonen av henholdsvis gode eller dårlige modellprestasjoner. Denne visualiseringen gir innsikt i den generelle effekten av justeringsprosessen, og uthever om de fleste av de forsøkte konfigurasjonene gir tilfredsstillende resultater eller om bare noen få konfigurasjoner skiller seg ut.
Merk
For AutoML-eksperimenter brukes flere modeller under opplæring. Forsøkene for hver elev representeres som en optimaliseringsserie. For hyperparameterjusteringseksperimenter vil det bare være én enkelt elev som evalueres. Du kan imidlertid gi flere justeringseksperimenter for å se trendene på tvers av hver elev.
fig = fviz.plot_edf(automl)
# or
fig = fviz.plot(automl, "edf")
fig.show()
Her er det resulterende plottet:
Tidslinjeplott
Et tidslinjeplott, ofte representert som et Gantt-diagram eller en sekvens med stolper, visualiserer starten, varigheten og fullføringen av aktiviteter over tid. I sammenheng med et AutoML- eller justeringseksperiment kan et tidslinjeplott vise frem utviklingen av ulike modellevalueringer og deres respektive varigheter, tegnet mot tiden. Ved å observere dette plottet kan brukerne forstå effektiviteten av søkeprosessen, identifisere potensielle flaskehalser eller inaktive perioder, og forstå den tidsmessige dynamikken i ulike hyperparameterevalueringer.
fig = fviz.plot_timeline(automl)
# or
fig = fviz.plot(automl, "timeline")
fig.show()
Her er det resulterende plottet:
Slice plot
Tegn inn parameterrelasjonen som slice plot i en studie.
Dette verktøyet tar også følgende argumenter:
learner
: Angi eleven du vil studere i eksperimentet. Denne parameteren gjelder bare for autoML-eksperimentresultater. Ved å la dette stå tomt, velger systemet den beste eleven i hele eksperimentet.params
: En liste for å angi hvilken hyperparameter som skal vises. Ved å la dette stå tomt, viser systemet alle tilgjengelige hyperparametere.
fig = fviz.plot_slice(automl, learner="sgd")
# or
fig = fviz.plot(automl, "slice", learner="sgd")
fig.show()
Her er det resulterende plottet:
Hyperparameter viktighet
Et hyperparameter viktighetsplott rangerer visuelt hyperparametere basert på deres innflytelse på modellytelsen i et AutoML- eller tuningeksperiment. Den vises vanligvis som et stolpediagram, og kvantifiserer virkningen av hver hyperparameter på målmetrikken. Ved å undersøke dette plottet kan utøvere skjelne hvilke hyperparametere som er avgjørende for å bestemme modellutfall og hvilke som har minimal effekt.
Dette verktøyet tar også følgende argumenter:
learner
: Angi eleven du vil studere i eksperimentet. Denne parameteren gjelder bare for autoML-eksperimentresultater. Ved å la dette stå tomt, velger systemet den beste eleven i hele eksperimentet.params
: En liste for å angi hvilken hyperparameter som skal vises. Ved å la dette stå tomt, viser systemet alle tilgjengelige hyperparametere.
fig = fviz.plot_param_importance(automl, learner="sgd")
# or
fig = fviz.plot(automl, "param_importance", learner="sgd")
fig.show()
Her er det resulterende plottet: