Del via


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 av Spark en to_pandas_on_spark() dataramme og deretter sendes til fit() 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.