Del via


AutoML i Fabric (prøveversion)

AutoML (Automatiseret maskinel indlæring) er en samling af metoder og værktøjer, der automatiserer oplæring og optimering af modeller til maskinel indlæring med kun lidt 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.

Vigtigt

Denne funktion er en prøveversion.

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. Den kan bruges som Scikit-learn-stilestimat med de sædvanlige fit- og forudsigelsesmetoder.

Hvis du vil starte en AutoML-prøveversion, skal brugerne kun angive oplæringsdataene og opgavetypen. Med de integrerede MLflow-oplevelser i Fabric kan brugerne også undersøge de forskellige kørsler, der blev forsøgt i prøveversionen, for at se, hvordan den endelige model blev valgt.

Oplæringsdata

I Fabric kan brugerne overføre følgende inputtyper til funktionen AutoML fit :

  • Numpy-matrix: Når inputdataene gemmes i en Numpy-matrix, overføres de til fit() som X_train og y_train.

  • Pandas-dataramme: Når inputdataene gemmes i en Pandas-dataramme, overføres de enten som fit() X_train og y_train eller som dataramme og mærkat.

  • Pandas på Spark-dataramme: Når inputdataene gemmes som en Spark-dataramme, kan de konverteres til en Pandas on-dataframe Spark ved hjælp af to_pandas_on_spark() og derefter overføres til fit() som en dataramme og et navn.

    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)

Hvis du vil vide mere om, hvordan du paralleliserer dine AutoML-stier, kan du se FLAML-dokumentationen for parallelle Spark-job.

Spor med MLflow

Du kan også bruge Fabric MLflow-integrationen til at registrere målepunkter, parametre og målepunkter for de udforskede stier.

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)

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.