Dela via


AutoML i infrastrukturresurser (förhandsversion)

AutoML (Automated Machine Learning) är en samling metoder och verktyg som automatiserar maskininlärningsmodellträning och optimering med lite mänskligt engagemang. Syftet med AutoML är att förenkla och påskynda processen med att välja den bästa maskininlärningsmodellen och hyperparametrar för en viss datamängd, vilket vanligtvis kräver mycket kompetens och beräkningskraft.

Viktigt!

Den här funktionen är i förhandsversion.

I Infrastruktur kan dataexperter använda flaml.AutoML för att automatisera sina maskininlärningsuppgifter.

AutoML kan hjälpa ML-proffs och utvecklare från olika sektorer att:

  • Skapa ML-lösningar med minimal kodning
  • Minska tid och kostnad
  • Tillämpa metodtips för datavetenskap
  • Lösa problem snabbt och effektivt

AutoML-arbetsflöde

flaml.AutoML är en klass för AutoML baserat på uppgiften. Den kan användas som en Scikit-learn-stilberäknare med de vanliga metoderna för att anpassa och förutsäga.

För att starta en AutoML-utvärderingsversion behöver användarna bara ange träningsdata och uppgiftstyp. Med de integrerade MLflow-upplevelserna i Fabric kan användarna också undersöka de olika körningar som försöktes i utvärderingsversionen för att se hur den slutliga modellen valdes.

Träningsdata

I Infrastruktur kan användarna skicka följande indatatyper till funktionen AutoML fit :

  • Numpy Array: När indata lagras i en Numpy-matris skickas de till fit() som X_train och y_train.

  • Pandas-dataram: När indata lagras i en Pandas-dataram skickas de antingen som fit() X_train och y_train eller som dataram och etikett.

  • Pandas på Spark-dataram: När indata lagras som en Spark-dataram kan de konverteras till en Pandas dataram Spark med hjälp av to_pandas_on_spark() och sedan skickas till fit() som en dataram och 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)
    

Maskininlärningsproblem

Användare kan ange maskininlärningsuppgiften task med argumentet . Det finns olika maskininlärningsuppgifter som stöds, bland annat:

  • Klassificering: Huvudmålet med klassificeringsmodeller är att förutsäga vilka kategorier nya data hamnar i baserat på lärdomar från dess träningsdata. Klassificering används till exempel för identifiering av bedrägerier, handskriftsigenkänning och objektidentifiering.
  • Regression: Regressionsmodeller förutsäger numeriska utdatavärden baserat på oberoende prediktorer. I regression är målet att hjälpa till att upprätta en relation mellan dessa oberoende prediktorvariabler genom att uppskatta hur en variabel påverkar de andra. Till exempel bilpriser baserade på funktioner som gasmil, säkerhetsklassificering osv.
  • Time Series Forecasting: Detta används för att förutsäga framtida värden baserat på historiska datapunkter ordnade efter tid. I en tidsserie samlas data in och registreras med jämna mellanrum under en viss period, till exempel dagligen, varje vecka, varje månad eller varje år. Målet med tidsserieprognoser är att identifiera mönster, trender och säsongsvariationer i data och sedan använda den här informationen för att göra förutsägelser om framtida värde.

Om du vill veta mer om de andra uppgifter som stöds i FLAML kan du gå till dokumentationen om AutoML-uppgifter i FLAML.

Valfria indata

Ange olika begränsningar och indata för att konfigurera din AutoML-utvärderingsversion.

Krav

När du skapar en AutoML-utvärderingsversion kan användarna också konfigurera begränsningar för AutoML-processen, konstruktorargument för potentiella skattningar, typer av modeller som provats i AutoML och till och med begränsningar för måtten i AutoML-utvärderingsversionen.

Koden nedan gör det till exempel möjligt för användare att ange en måttbegränsning för AutoML-utvärderingsversionen.

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)

Mer information om dessa konfigurationer finns i dokumentationen om konfigurationer i FLAML.

Optimeringsmått

Under träningen skapar AutoML-funktionen många utvärderingsversioner som provar olika algoritmer och parametrar. AutoML-verktyget itererar via ML-algoritmer och hyperparametrar. I den här processen skapar varje iteration en modell med en träningspoäng. Ju bättre poäng för det mått du vill optimera för, desto bättre anses modellen "passa" dina data. Optimeringsmåttet anges via metric argumentet . Det kan vara antingen en sträng som refererar till ett inbyggt mått eller en användardefinierad funktion.

AutoML-optimeringsmått

Parallell justering

I vissa fall kanske du vill påskynda din AutoML-utvärderingsversion med hjälp av Apache Spark för att parallellisera träningen. För Spark-kluster startar FLAML som standard en utvärderingsversion per köre. Du kan också anpassa antalet samtidiga utvärderingsversioner med hjälp n_concurrent_trials av argumentet .

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

Om du vill veta mer om hur du parallelliserar dina AutoML-spår kan du gå till FLAML-dokumentationen för parallella Spark-jobb.

Spåra med MLflow

Du kan också använda Fabric MLflow-integreringen för att samla in mått, parametrar och mått för de utforskade spåren.

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)

Modeller som stöds

AutoML i Fabric stöder följande modeller:

Omdöme Regression Prognostisering av tidsserier
(PySpark) Klassificerare för toningsförstärktade träd (GBT) (PySpark) Överlevnadsregression för accelererad feltid (AFT) Arimax
(PySpark) Linjär SVM (PySpark) Generaliserad linjär regression AutoARIMA
(PySpark) Naive Bayes (PySpark) Regression av toningsförstärktade träd (GBT) Genomsnitt
(Synapse) LightGBM (PySpark) Linjär regression CatBoost
CatBoost (Synapse) LightGBM Beslutsträd
Beslutsträd CatBoost ExponentialSmoothing
Extremt slumpmässiga träd Beslutsträd Extremt slumpmässiga träd
Gradientsökning Elastiskt nät ForecastTCN
Angränsande till K Extremt slumpmässiga träd Gradientsökning
Ljus GBM Gradientsökning Holt-Winters Exponentiell utjämning
Linjär SVC Angränsande till K Angränsande till K
Logistisk regression LARS Lasso LARS Lasso
Logistisk regression med L1/L2-regularisering Ljus GBM Ljus GBM
Naive Bayes Logistisk regression med L1/L2-regularisering Naiv
Slumpmässig skog Slumpmässig skog Omloppsbana
Slumpmässig skog på Spark Slumpmässig skog på Spark Profet
SGD (Stochastic Gradient Descent) SGD (Stochastic Gradient Descent) Slumpmässig skog
Stödvektorklassificering (SVC) XGBoost SARIMAX
XGboost XGBoost med begränsat djup SeasonalAverage
XGBoost med begränsat djup SeasonalNaive
Temporal fusionstransformator
XGBoost
XGBoost för Time Series
XGBoost med begränsat djup för Tidsserier
ElasticNet

Visualisera resultat

Modulen flaml.visualization innehåller verktygsfunktioner för att rita optimeringsprocessen med hjälp av Plotly. Genom att använda Plotly kan användarna interaktivt utforska sina AutoML-experimentresultat. Om du vill använda de här ritfunktionerna anger du ditt optimerade flaml.AutoML objekt eller flaml.tune.tune.ExperimentAnalysis objekt som indata.

Du kan använda följande funktioner i notebook-filen:

  • plot_optimization_history: Rita optimeringshistorik för alla försök i experimentet.
  • plot_feature_importance: Rita prioritet för varje funktion i datauppsättningen.
  • plot_parallel_coordinate: Rita de högdimensionella parameterrelationerna i experimentet.
  • plot_contour: Rita parameterrelationen som konturdiagram i experimentet.
  • plot_edf: Rita experimentets målvärde EDF (empirisk fördelningsfunktion).
  • plot_timeline: Rita tidslinjen för experimentet.
  • plot_slice: Rita parameterrelationen som segmentdiagram i en studie.
  • plot_param_importance: Rita hyperparameterns betydelse för experimentet.