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-dataframeSpark
ved hjælp afto_pandas_on_spark()
og derefter overføres tilfit()
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.
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.