Delen via


AutoML in Fabric (preview)

AutoML (Automated Machine Learning) is een verzameling methoden en hulpprogramma's die machine learning-modeltraining en optimalisatie automatiseren met weinig menselijke betrokkenheid. Het doel van AutoML is om het proces voor het kiezen van het beste machine learning-model en de hyperparameters voor een bepaalde gegevensset te vereenvoudigen en te versnellen, wat meestal veel vaardigheid en rekenkracht vereist.

Belangrijk

Deze functie is beschikbaar als preview-versie.

In Fabric kunnen gegevenswetenschappers hun flaml.AutoML machine learning-taken automatiseren.

AutoML kan ML-professionals en -ontwikkelaars uit verschillende sectoren helpen bij het volgende:

  • ML-oplossingen bouwen met minimale codering
  • Tijd en kosten verminderen
  • Best practices voor data science toepassen
  • Problemen snel en efficiënt oplossen

AutoML-werkstroom

flaml.AutoML is een klasse voor AutoML op basis van de taak. Het kan worden gebruikt als een Scikit-learn-stijl-estimator met de gebruikelijke fit- en voorspelmethoden.

Om een AutoML-proefversie te starten, hoeven gebruikers alleen de trainingsgegevens en het taaktype op te geven. Met de geïntegreerde MLflow-ervaringen in Fabric kunnen gebruikers ook de verschillende uitvoeringen onderzoeken die in de proefversie zijn geprobeerd om te zien hoe het uiteindelijke model is gekozen.

Trainingsgegevens

In Fabric kunnen gebruikers de volgende invoertypen doorgeven aan de functie AutoML fit :

  • Numpy-matrix: wanneer de invoergegevens worden opgeslagen in een Numpy-matrix, worden deze doorgegeven fit() als X_train en y_train.

  • Pandas-gegevensframe: wanneer de invoergegevens worden opgeslagen in een Pandas-gegevensframe, worden deze doorgegeven als fit() X_train en y_train, of als dataframe en label.

  • Pandas in Spark-gegevensframe: wanneer de invoergegevens worden opgeslagen als een Spark-gegevensframe, kunnen deze worden geconverteerd naar een Pandas Spark on-dataframe en to_pandas_on_spark() vervolgens worden doorgegeven fit() als een dataframe en 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)
    

Machine learning-probleem

Gebruikers kunnen de machine learning-taak opgeven met behulp van het task argument. Er zijn verschillende ondersteunde machine learning-taken, waaronder:

  • Classificatie: Het belangrijkste doel van classificatiemodellen is om te voorspellen in welke categorieën nieuwe gegevens vallen op basis van leerresultaten van de trainingsgegevens. Veelvoorkomende classificatievoorbeelden zijn fraudedetectie, handschriftherkenning en objectdetectie.
  • Regressie: Regressiemodellen voorspellen numerieke uitvoerwaarden op basis van onafhankelijke voorspellers. In regressie is het doel om te helpen de relatie tot stand te brengen tussen deze onafhankelijke voorspellingsvariabelen door te schatten hoe één variabele de andere beïnvloedt. Autoprijzen bijvoorbeeld op basis van functies zoals, benzinekilometers, veiligheidsclassificatie, enzovoort.
  • Time Series-prognose: dit wordt gebruikt om toekomstige waarden te voorspellen op basis van historische gegevenspunten die op tijd zijn geordend. In een tijdreeks worden gegevens verzameld en vastgelegd met regelmatige tussenpozen gedurende een bepaalde periode, zoals dagelijks, wekelijks, maandelijks of jaarlijks. Het doel van tijdreeksprognoses is om patronen, trends en seizoensgebondenheid in de gegevens te identificeren en deze informatie vervolgens te gebruiken om voorspellingen te doen over toekomstige waarde.

Voor meer informatie over de andere taken die worden ondersteund in FLAML, kunt u de documentatie over AutoML-taken in FLAML bezoeken.

Optionele invoer

Geef verschillende beperkingen en invoer op om uw AutoML-proefversie te configureren.

Beperkingen

Bij het maken van een AutoML-proefversie kunnen gebruikers ook beperkingen configureren voor het AutoML-proces, constructorargumenten van potentiële schattingen, typen modellen die in AutoML zijn geprobeerd en zelfs beperkingen voor de metrische gegevens van de AutoML-proefversie.

Met de onderstaande code kunnen gebruikers bijvoorbeeld een beperking voor metrische gegevens opgeven voor de AutoML-proefversie.

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)

Raadpleeg de documentatie over configuraties in FLAML voor meer informatie over deze configuraties.

Metrische optimalisatiegegevens

Tijdens de training maakt de AutoML-functie veel proefversies, die verschillende algoritmen en parameters proberen. Het Hulpprogramma AutoML doorloopt ML-algoritmen en hyperparameters. In dit proces maakt elke iteratie een model met een trainingsscore. Hoe beter de score voor de metrische gegevens waarvoor u wilt optimaliseren, hoe beter het model wordt beschouwd als 'passend' voor uw gegevens. De metrische optimalisatiegegevens worden opgegeven via het metric argument. Dit kan een tekenreeks zijn die verwijst naar een ingebouwde metrische waarde of een door de gebruiker gedefinieerde functie.

Metrische gegevens voor AutoML-optimalisatie

Parallel afstemmen

In sommige gevallen wilt u uw AutoML-proefversie versnellen door Apache Spark te gebruiken om uw training te parallelliseren. Voor Spark-clusters start FLAML standaard één proefversie per uitvoerder. U kunt ook het aantal gelijktijdige experimenten aanpassen met behulp van het n_concurrent_trials argument.

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

Zie de FLAML-documentatie voor parallelle Spark-taken voor meer informatie over het parallelliseren van uw AutoML-paden.

Bijhouden met MLflow

U kunt ook de Integratie van Fabric MLflow gebruiken om de metrische gegevens, parameters en metrische gegevens van de verkende paden vast te leggen.

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)

Ondersteunde modellen

AutoML in Fabric ondersteunt de volgende modellen:

Classificatie Regressie Time Series-prognose
(PySpark) Classificatie met kleurovergangsvervoerende bomen (GBT) (PySpark) Versnelde fouttijd (AFT) Survival Regressie Arimax
(PySpark) Lineaire SVM (PySpark) Gegeneraliseerde lineaire regressie AutoARIMA
(PySpark) Naïve Bayes (PySpark) Regressie met gradiënt-boosted trees (GBT) Gemiddeld
(Synapse) LightGBM (PySpark) Lineaire regressie CatBoost
CatBoost (Synapse) LightGBM Beslissingsstructuur
Beslissingsstructuur CatBoost ExponentialSmoothing
Extremely Randomized Trees Beslissingsstructuur Extremely Randomized Trees
Gradient Boosting Elastic Net ForecastTCN
K Nearest Neighbors Extremely Randomized Trees Gradient Boosting
Light GBM Gradient Boosting Exponentieel gladmaken van Holt-Winters
Linear SVC K Nearest Neighbors K Nearest Neighbors
Logistic Regression LARS Lasso LARS Lasso
Logistieke regressie met L1/L2 Regularisatie Light GBM Light GBM
Naive Bayes Logistieke regressie met L1/L2 Regularisatie Naïef
Random Forest Random Forest Baan
Willekeurig forest in Spark Willekeurig forest in Spark Profeet
Stochastic Gradient Descent (SGD) Stochastic Gradient Descent (SGD) Random Forest
Support Vector Classification (SVC) XGBoost SARIMAX
XGboost XGBoost met beperkte diepte SeasonalAverage
XGBoost met beperkte diepte SeasonalNaive
Tijdelijke fusietransformatie
XGBoost
XGBoost voor Time Series
XGBoost met beperkte diepte voor Tijdreeks
ElasticNet

Resultaten visualiseren

De flaml.visualization module biedt hulpprogrammafuncties voor het plotten van het optimalisatieproces met behulp van Plotly. Door Gebruik te maken van Plotly kunnen gebruikers interactief hun Resultaten van het AutoML-experiment verkennen. Als u deze tekenfuncties wilt gebruiken, geeft u uw geoptimaliseerde flaml.AutoML of flaml.tune.tune.ExperimentAnalysis object op als invoer.

U kunt de volgende functies in uw notebook gebruiken:

  • plot_optimization_history: Plot optimization history of all trials in the experiment.
  • plot_feature_importance: Belang van plot voor elke functie in de gegevensset.
  • plot_parallel_coordinate: Teken de hoogdimensionale parameterrelaties in het experiment.
  • plot_contour: Teken de parameterrelatie als contourplot in het experiment.
  • plot_edf: Plot de objectieve waarde EOF (empirische verdelingsfunctie) van het experiment.
  • plot_timeline: Teken de tijdlijn van het experiment.
  • plot_slice: Teken de parameterrelatie als segmentplot in een studie.
  • plot_param_importance: Teken het belang van de hyperparameter van het experiment.