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
dataramSpark
med hjälp avto_pandas_on_spark()
och sedan skickas tillfit()
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.
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.