AutoML i Stoff (forhåndsversjon)
AutoML (Automatisert maskinlæring) er en samling metoder og verktøy som automatiserer opplæring og optimalisering av maskinlæringsmodeller med lite menneskelig engasjement. Målet med AutoML er å forenkle og øke hastigheten på prosessen med å velge den beste maskinlæringsmodellen og hyperparameterne for et gitt datasett, som vanligvis krever mye kompetanse og databehandlingskraft.
Viktig
Denne funksjonen er i forhåndsvisning.
I Fabric kan dataforskere bruke flaml.AutoML
til å automatisere maskinlæringsoppgavene sine.
AutoML kan hjelpe ML-teknikere og utviklere fra ulike sektorer til å:
- Bygg ML-løsninger med minimal koding
- Redusere tid og kostnader
- Bruk anbefalte fremgangsmåter for datavitenskap
- Løse problemer raskt og effektivt
AutoML-arbeidsflyt
flaml.AutoML
er en klasse for AutoML basert på oppgaven. Den kan brukes som en Scikit-learn stil estimator med vanlig passform og forutsi metoder.
Hvis du vil starte en prøveversjon av AutoML, trenger brukere bare å oppgi opplæringsdataene og oppgavetypen. Med de integrerte MLflow-opplevelsene i Fabric kan brukerne også undersøke de ulike kjøringene som ble forsøkt i prøveversjonen for å se hvordan den endelige modellen ble valgt.
Opplæringsdata
I Fabric kan brukere sende følgende inndatatyper til AutoML-funksjonen fit
:
Numpy-matrise: Når inndata lagres i en Numpy-matrise, sendes den til
fit()
som X_train og y_train.Pandas-dataramme: Når inndata lagres i en Pandas-dataramme, sendes den til
fit()
enten som X_train og y_train, eller som dataramme og etikett.Pandaer på Spark-dataramme: Når inndata lagres som en Spark-dataramme, kan den konverteres til en dataramme
Pandas
ved hjelp avSpark
ento_pandas_on_spark()
dataramme og deretter sendes tilfit()
som en dataramme og etikett.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)
Maskinlæringsproblem
Brukere kan angi maskinlæringsoppgaven task
ved hjelp av argumentet. Det finnes ulike maskinlæringsoppgaver som støttes, inkludert:
- Klassifisering: Hovedmålet med klassifiseringsmodeller er å forutsi hvilke kategorier nye data faller inn i basert på læring fra opplæringsdataene. Vanlige klassifiseringseksempler inkluderer svindelgjenkjenning, håndskriftgjenkjenning og objektgjenkjenning.
- Regresjon: Regresjonsmodeller forutser numeriske utdataverdier basert på uavhengige prediktorer. I regresjon er målet å bidra til å etablere forholdet mellom de uavhengige prediktorvariablene ved å estimere hvordan én variabel påvirker de andre. Bilpriser basert på funksjoner som for eksempel gasskjørelengde, sikkerhetsvurdering osv.
- Prognose for tidsserie: Dette brukes til å forutsi fremtidige verdier basert på historiske datapunkter sortert etter tid. I en tidsserie samles data inn og registreres med jevne mellomrom over en bestemt periode, for eksempel daglig, ukentlig, månedlig eller årlig. Målet med prognoser for tidsserier er å identifisere mønstre, trender og sesongavhengighet i dataene, og deretter bruke denne informasjonen til å lage prognoser om fremtidig verdi.
Hvis du vil lære mer om de andre oppgavene som støttes i FLAML, kan du gå til dokumentasjonen om AutoML-oppgaver i FLAML.
Valgfrie inndata
Angi ulike begrensninger og inndata for å konfigurere prøveversjonen av AutoML.
Begrensninger
Når du oppretter en AutoML-prøveversjon, kan brukere også konfigurere begrensninger for AutoML-prosessen, konstruktørargumenter for potensielle estimatorer, typer modeller som er prøvd i AutoML, og til og med begrensninger på måledataene for AutoML-prøveversjonen.
Koden nedenfor gjør det for eksempel mulig for brukere å angi en målebetingelse i automl-prøveversjonen.
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)
Hvis du vil ha mer informasjon om disse konfigurasjonene, kan du gå til dokumentasjonen om konfigurasjoner i FLAML.
Metrikkverdi for optimalisering
Under opplæringen oppretter AutoML-funksjonen mange prøveversjoner, som prøver forskjellige algoritmer og parametere. AutoML-verktøyet itererer gjennom ML-algoritmer og hyperparametere. I denne prosessen oppretter hver gjentakelse en modell med en opplæringspoengsum. Jo bedre poengsum for måleverdien du vil optimalisere for, jo bedre anses modellen å «passe» dataene dine. Metrikkverdien for optimalisering angis via metric
argumentet. Det kan enten være en streng, som refererer til en innebygd metrikkverdi eller en brukerdefinert funksjon.
Måledata for autoML-optimalisering
Parallell justering
I noen tilfeller vil du kanskje fremskynde automl-prøveperioden ved å bruke Apache Spark til å parallellisere opplæringen. For Spark-klynger starter FLAML som standard én prøveversjon per eksekutor. Du kan også tilpasse antall samtidige forsøk ved hjelp n_concurrent_trials
av argumentet.
automl.fit(X_train, y_train, n_concurrent_trials=4, use_spark=True)
Hvis du vil lære mer om hvordan du parallelliserer AutoML-løyper, kan du gå til FLAML-dokumentasjonen for parallelle Spark-jobber.
Spor med MLflow
Du kan også bruke MLflow-integreringen for stoff til å registrere måledata, parametere og måledata for de utforskede stiene.
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)
Støttede modeller
AutoML i Fabric støtter følgende modeller:
Klassifisering | Regresjon | Prognose for tidsserie |
---|---|---|
(PySpark) Gradert forsterket trær (GBT)-klassifiser | (PySpark) Akselerert feiltid (AFT) overlevelsesregresjon | Arimax |
(PySpark) Lineær SVM | (PySpark) Generalisert lineær regresjon | AutoARIMA |
(PySpark) Naive bukter | (PySpark) Gradert forsterket trær (GBT) regresjon | Gjennomsnitt |
(Synapse) LightGBM | (PySpark) Lineær regresjon | CatBoost |
CatBoost | (Synapse) LightGBM | Beslutningstre |
Beslutningstre | CatBoost | EksponentiellSmoothing |
Ekstremt randomiserte trær | Beslutningstre | Ekstremt randomiserte trær |
Graderingsøkning | Elastisk nett | PrognoseTCN |
K Nærmeste naboer | Ekstremt randomiserte trær | Graderingsøkning |
Lys GBM | Graderingsøkning | Holt-Winters Eksponentiell utjevning |
Lineær SVC | K Nærmeste naboer | K Nærmeste naboer |
Logistisk regresjon | LARS Lasso | LARS Lasso |
Logistisk regresjon med L1/L2 Regularisering | Lys GBM | Lys GBM |
Naive bukter | Logistisk regresjon med L1/L2 Regularisering | Naiv |
Tilfeldig skog | Tilfeldig skog | Bane |
Tilfeldig skog på spark | Tilfeldig skog på spark | Profet |
Stokastisk gradering (SGD) | Stokastisk gradering (SGD) | Tilfeldig skog |
Støttevektorklassifisering (SVC) | XGBoost | SARIMAX |
XGboost | XGBoost med begrenset dybde | Sesongaverage |
XGBoost med begrenset dybde | SeasonalNaive | |
Temporal Fusion Transformer | ||
XGBoost | ||
XGBoost for tidsserie | ||
XGBoost med begrenset dybde for tidsserier | ||
ElasticNet |
Visualiser resultater
Modulen flaml.visualization
inneholder verktøyfunksjoner for å plotte optimaliseringsprosessen ved hjelp av Plotly. Ved å utnytte Plotly kan brukerne interaktivt utforske resultatene fra AutoML-eksperimentet. Hvis du vil bruke disse plottfunksjonene, kan du angi optimaliserte flaml.AutoML
funksjoner eller flaml.tune.tune.ExperimentAnalysis
objekter som inndata.
Du kan bruke følgende funksjoner i notatblokken:
-
plot_optimization_history
: Plotteoptimaliseringshistorikk for alle forsøk i eksperimentet. -
plot_feature_importance
: Plotte viktighet for hver funksjon i datasettet. -
plot_parallel_coordinate
: Tegn inn de høydimensjonale parameterrelasjonene i eksperimentet. -
plot_contour
: Tegn inn parameterrelasjonen som konturplott i eksperimentet. -
plot_edf
: Tegn inn målverdien EDF (empirisk fordelingsfunksjon) for eksperimentet. -
plot_timeline
: Plotte tidslinjen for eksperimentet. -
plot_slice
: Tegn inn parameterrelasjonen som slice plot i en studie. -
plot_param_importance
: Plot hyperparameter betydningen av eksperimentet.