Code-first AutoML i Fabric

Automatiseret maskinlæring (AutoML) er en samling af metoder og værktøjer, der automatiserer træning og optimering af maskinlæringsmodeller med minimal menneskelig involvering. Formålet med AutoML er at forenkle og fremskynde processen med at vælge den bedste model til maskinel indlæring og hyperparametre for et givet datasæt, hvilket normalt kræver mange færdigheder og beregningskraft.

I Fabric kan dataforskere bruge flaml.AutoML til at automatisere deres opgaver i forbindelse med maskinel indlæring.

AutoML kan hjælpe ml-teknikere og udviklere fra forskellige sektorer med at:

  • Byg ML-løsninger med minimal kodning
  • Reducer tid og omkostninger
  • Anvend bedste praksis for datavidenskab
  • Løs problemer hurtigt og effektivt

AutoML-arbejdsproces

flaml.AutoML er en klasse for AutoML baseret på opgaven. Du kan bruge den som en Scikit-lær-stil estimator med de sædvanlige fit og predict metoder.

For at starte en AutoML-prøve, skal du levere træningsdata og opgavetypen. Ved at bruge de integrerede MLflow-oplevelser i Fabric kan du også undersøge de forskellige kørsler, der blev forsøgt i forsøget, for at se, hvordan den endelige model blev valgt.

Oplæringsdata

I Fabric skal følgende inputtyper sendes til AutoML-funktionenfit:

  • NumPy-array: Når inputdataene gemmes i et NumPy-array, sendes det til fit() som X_train og y_train.

  • Pandas DataFrame: Når inputdataene gemmes i en Pandas DataFrame, skal de sendes til fit() enten som X_train og y_train, eller som dataframe og label.

  • Pandas på Spark DataFrame: Når inputdataene gemmes som en Spark DataFrame, konverter dem til en Pandas on Spark DataFrame ved at bruge to_pandas_on_spark(). Derefter overfører vi det til fit() som a dataframe og label.

    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)
    

Problem med maskinel indlæring

Brugerne kan angive machine learning-opgaven ved hjælp af argumentet task . Der er forskellige understøttede opgaver i forbindelse med maskinel indlæring, herunder:

  • Klassificering: Det primære mål for klassificeringsmodeller er at forudsige, hvilke kategorier nye data falder ind under, baseret på læring fra deres oplæringsdata. Almindelige klassificeringseksempler omfatter registrering af svindel, genkendelse af håndskrift og objektregistrering.
  • Regression: Regressionsmodeller forudsiger numeriske outputværdier baseret på uafhængige forudsigelser. I regression er målet at hjælpe med at etablere relationen mellem disse uafhængige forudsigelsesvariabler ved at anslå, hvordan en variabel påvirker de andre. Bilpriser, der f.eks. er baseret på funktioner som f.eks. gas kilometertal, sikkerhedsklassificering osv.
  • Tidsserieprognose: Dette bruges til at forudsige fremtidige værdier baseret på historiske datapunkter sorteret efter klokkeslæt. I en tidsserie indsamles og registreres data med jævne mellemrum over en bestemt periode, f.eks. dagligt, ugentligt, månedligt eller årligt. Formålet med tidsserieprognoser er at identificere mønstre, tendenser og sæsonudsving i dataene og derefter bruge disse oplysninger til at foretage forudsigelser om fremtidig værdi.

Du kan få mere at vide om de andre opgaver, der understøttes i FLAML, i dokumentationen om AutoML-opgaver i FLAML.

Valgfrie input

Angiv forskellige begrænsninger og input for at konfigurere din AutoML-prøveversion.

Begrænsninger

Når du opretter en AutoML-prøveversion, kan brugerne også konfigurere begrænsninger for AutoML-processen, konstruktørargumenter for potentielle estimattagere, typer af modeller, der er forsøgt i AutoML, og endda begrænsninger på målepunkterne for AutoML-prøveversionen.

Koden nedenfor giver f.eks. brugerne mulighed for at angive en begrænsning for metrikværdier i AutoML-prøveversionen.

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)

Du kan få mere at vide om disse konfigurationer i dokumentationen om konfigurationer i FLAML.

Optimeringsmålepunkt

Under oplæringen opretter funktionen AutoML mange forsøg, som prøver forskellige algoritmer og parametre. AutoML-værktøjet gentager sig via ML-algoritmer og hyperparametre. I denne proces opretter hver gentagelse en model med en træningsscore. Jo bedre scoren for den metrikværdi, du vil optimere til, jo bedre anses modellen for at "passe" til dine data. Optimeringsmetrikværdien angives via argumentet metric . Det kan enten være en streng, der refererer til en indbygget metrikværdi, eller en brugerdefineret funktion.

AutoML-optimeringsmålepunkter

Parallel justering

I nogle tilfælde kan det være en god idé at fremskynde din AutoML-prøveversion ved hjælp af Apache Spark for at parallelisere din træning. For Spark-klynger starter FLAML som standard én prøveversion pr. eksekvering. Du kan også tilpasse antallet af samtidige forsøg ved hjælp af argumentet n_concurrent_trials .

automl.fit(X_train, y_train, n_concurrent_trials=4, use_spark=True)

For at lære mere om, hvordan du paralleliserer dine AutoML-forsøg, se FLAML-dokumentationen for parallelle Spark-jobs.

Spor med MLflow

Brug Fabric MLflow-integrationen til at indfange metrikker, parametre og modeller fra de undersøgte forsøg.

import mlflow
mlflow.autolog()

with mlflow.start_run(nested=True):
    automl.fit(dataframe=pandas_df, label='Bankrupt?', mlflow_exp_name = "automl_spark_demo")

Du kan også give et run_name præfiks til børneruns. Følgende eksempel opretter en ny AutoML-instans og kører en Spark-baseret regressionsprøve med eksplicitte indstillinger:

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)

Understøttede modeller

AutoML i Fabric understøtter følgende modeller:

Klassificering Regression Tidsserieprognose
(PySpark) Gradueringsboostede træer (GBT)-klassificering (PySpark) AfT (Accelerated Failure Time) Survival Regression Arimax
(PySpark) Lineær SVM (PySpark) Generaliseret lineær regression AutoARIMA
(PySpark) Naive Bayes (PySpark) Regression af gradueringsboostede træer Gennemsnit
(Synapse) Lys GBM (PySpark) Lineær regression Katboost
Katboost (Synapse) Lys GBM Beslutningstræ
Beslutningstræ Katboost Eksponentielsmoothing
Ekstremt randomiserede træer Beslutningstræ Ekstremt randomiserede træer
Gradueringsforøgelse Elastisk net ForecastTCN
K nærmeste naboer Ekstremt randomiserede træer Gradueringsforøgelse
Lys GBM Gradueringsforøgelse Holt-Winters Eksponentiel udjævning
Lineær SVC K nærmeste naboer K nærmeste naboer
Logistisk regression LARS Lasso LARS Lasso
Logistisk regression med L1/L2-regularisering Lys GBM Lys GBM
Naive Bayes Logistisk regression med L1/L2-regularisering Naiv
Tilfældig skov Tilfældig skov Kredsløb
Tilfældig skov på Spark Tilfældig skov på Spark Profet
Stokastisk gradueringsstigning (SGD) Stokastisk gradueringsstigning (SGD) Tilfældig skov
Understøttelse af vektorklassificering (SVC) XGBoost SARIMAX
XGboost XGBoost med begrænset dybde Sæsonbestemt gennemsnit
XGBoost med begrænset dybde Sæsonbestemtnaive
Tidsmæssig fusionstransformer
XGBoost
XGBoost for tidsserie
XGBoost med begrænset dybde for tidsserier
ElasticNet

Visualiser resultater

Modulet flaml.visualization indeholder funktionsfunktioner til afbildning af optimeringsprocessen ved hjælp af Plotly. Ved at udnytte Plotly kan brugerne interaktivt udforske resultaterne af deres AutoML-eksperiment. Hvis du vil bruge disse afbildningsfunktioner, skal du angive dit optimerede flaml.AutoML objekt eller flaml.tune.tune.ExperimentAnalysis objekt som input.

Du kan bruge følgende funktioner i din notesbog:

  • plot_optimization_history: Afbild optimeringshistorikken for alle forsøg i eksperimentet.
  • plot_feature_importance: Afbild vigtighed for hver funktion i datasættet.
  • plot_parallel_coordinate: Afbild de højdimensionelle parameterrelationer i eksperimentet.
  • plot_contour: Afbild parameterrelationen som konturafbildning i eksperimentet.
  • plot_edf: Afbildning af den objektive værdi EDF (empirisk fordelingsfunktion) for eksperimentet.
  • plot_timeline: Plot tidslinjen for eksperimentet.
  • plot_slice: Afbild parameterrelationen som et udsnitsdiagram i en undersøgelse.
  • plot_param_importance: Afbildning af hyperparameterens vigtighed af eksperimentet.