Freigeben über


AutoML in Fabric (Vorschau)

AutoML (automatisiertes maschinelles Lernen) ist eine Sammlung von Methoden und Tools, die Machine Learning-Modell-Modell-Training und -Optimierung mit kleinem menschlichem Engagement automatisieren. Das Ziel von AutoML ist es, den Prozess der Auswahl des besten Machine Learning-Modells und Hyperparameters für ein bestimmtes DataSet zu vereinfachen und zu beschleunigen, was in der Regel viele Fähigkeiten und Rechenleistung erfordert.

Wichtig

Dieses Feature befindet sich in der Vorschauphase.

In Fabric können wissenschaftliche Fachkräfte ihre flaml.AutoML nutzen, um ihre maschinellen Lernaufgaben zu automatisieren.

AutoML kann ML-Fachleuten und Entwicklern aus verschiedenen Branchen bei folgendem helfen:

  • Erstellung von ML-Lösungen mit minimaler Codierung
  • Reduzierung von Zeit und Kosten
  • Anwendung bewährter Methoden für Data Science
  • Probleme schnell und effizient zu lösen

AutoML-Workflow

flaml.AutoML ist eine Klasse für AutoML, die auf der Aufgabe basiert. Er kann als Scikit-Learn-Stil-Schätzer mit den üblichen Fit- und Vorhersagungsmethoden verwendet werden.

Um eine AutoML-Testversion zu starten, müssen Benutzer nur die Trainingsdaten und den Aufgabentyp bereitstellen. Mit den integrierten MLflow-Erfahrungen in Fabric können Benutzer auch die verschiedenen Läufe der Testversion analysieren, um zu erfahren, wie das endgültige Modell ausgewählt wurde.

Trainingsdaten

In Fabric können Benutzer die folgenden Eingabetypen an die AutoML-Funktion fit übergeben:

  • Numpy Array: Wenn die Eingabedaten in einer Numpy-Matrix gespeichert werden, werden sie als X_train und y_train an fit() übergeben.

  • Pandas-DataFrame: Wenn die Eingabedaten in einem Pandas-DataFrame gespeichert werden, werden sie entweder als X_train und y_train oder als DataFrame und Bezeichnung an fit() übergeben.

  • Pandas on Spark DataFrame: Wenn die Eingabedaten als Spark-DataFrame gespeichert sind, können sie in einen Pandas auf Spark-DataFrame konvertiert werden mithilfe von to_pandas_on_spark() und dann als DataFrame und Bezeichnung an fit() übergeben werden.

    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-Problem

Benutzer können die Machine Learning-Aufgabe mithilfe des task Arguments spezifizieren. Es gibt verschiedene unterstützte Aufgaben für maschinelles Lernen, darunter:

  • Klassifizierung: Das Hauptziel von Klassifizierungsmodellen besteht darin, auf der Grundlage der Erkenntnisse aus den Trainingsdaten vorherzusagen, in welche Kategorien neue Daten fallen werden. Zu den gängigen Klassifizierungsbeispielen gehören Betrugserkennung, Handschrifterkennung und Objekterkennung.
  • Regression: Regressionsmodelle sagen numerische Ausgabewerte auf Grundlage unabhängiger Vorhersagen voraus. Bei der Regression besteht das Ziel darin, die Beziehung zwischen diesen unabhängigen Vorhersagevariablen herzustellen, indem geschätzt wird, wie eine Variable die anderen beeinflusst. Beispiel: Fahrzeugpreise basierend auf Merkmalen wie Kraftstoffverbrauch, Sicherheitseinstufung, usw.
  • Zeitreihenprognose: Dies wird verwendet, um zukünftige Werte basierend auf historischen Datenpunkten vorherzusagen, die nach Zeit sortiert sind. In einer Zeitreihe werden Daten in regelmäßigen Abständen über einen bestimmten Zeitraum hinweg erfasst und gespeichert, z. B. täglich, wöchentlich, monatlich oder jährlich. Ziel der Zeitreihenprognose ist es, Muster, Trends und Saisonalität in den Daten zu identifizieren und diese Informationen dann zu verwenden, um Vorhersagen über den zukünftigen Wert zu erstellen.

Weitere Informationen zu den zusätzlichen Aufgaben, die in FLAML unterstützt werden, findest du in der Dokumentation zu AutoML-Aufgaben in FLAML.

Optionale Eingaben

Stelle verschiedene Einschränkungen und Eingaben bereit, um deine AutoML-Testversion zu konfigurieren.

Einschränkungen

Beim Erstellen einer AutoML-Testversion können Benutzer auch Einschränkungen für den AutoML-Prozess, Konstruktor-Argumente potenzieller Schätzungen, Typen von Modellen, die in AutoML ausprobiert wurden, und sogar Einschränkungen für die Metriken der AutoML-Testversion konfigurieren.

Mit dem folgenden Code können Benutzer beispielsweise eine Metrikeinschränkung für die AutoML-Testversion angeben.

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)

Weitere Informationen zu diesen Konfigurationen finden Sie in der Dokumentation zu Konfigurationen in FLAML.

Optimierungsmetrik

Während dem Training erstellt die AutoML-Funktion eine Reihe von Testversionen, die verschiedene Algorithmen und Parameter ausprobieren. Das AutoML-Tool iteriert durch ML-Algorithmen und Hyperparameter. In diesem Prozess erstellt jede Iteration ein Modell mit einer Trainingsbewertung. Je besser die Bewertung für die zu optimierende Metrik ist, desto besser wird das Modell als „passend“ für Ihre Daten angesehen. Die Optimierungsmetrik wird über das metric Argument angegeben. Es kann sich entweder um eine Zeichenfolge, die sich auf eine integrierte Metrik bezieht oder um eine benutzerdefinierte Funktion handeln.

AutoML-Optimierungsmetriken

Parallele Optimierung

In einigen Fällen solltest du deine AutoML-Testversion beschleunigen, indem du Apache Spark verwendest, um dein Training zu parallelisieren. Bei Spark-Clustern startet FLAML standardmäßig eine Testversion pro Executor. Sie können auch die Anzahl der gleichzeitigen Testversionen mit dem Argument n_concurrent_trials anpassen.

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

Weitere Informationen zum Parallelisieren Ihrer AutoML-Testversionen finden Sie in der FLAML-Dokumentation für parallele Spark-Aufträge.

Nachverfolgung mit MLflow

Du kannst auch die Fabric MLflow-Integration nutzen, um die Metriken, Parameter und Metriken der untersuchten Testversionen zu erfassen.

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)

Unterstützte Modelle

AutoML in Fabric unterstützt die folgenden Modelle:

Klassifizierung Regression Vorhersagen von Zeitreihen
(PySpark) Gradient-Boosted Strukturen (GBT)-Klassifizierer (PySpark) Beschleunigte Fehlerzeit (AFT) Überlebensregression Arimax
(PySpark) Lineares SVM (PySpark) Allgemeine lineare Regression AutoARIMA
(PySpark) Naive Bayes (PySpark) Gradient-Boosting-Strukturen (GBT) Regression Average
(Synapse) LightGBM (PySpark) Lineare Regression CatBoost
CatBoost (Synapse) LightGBM Entscheidungsstruktur
Entscheidungsstruktur CatBoost ExponentialSmoothing
Extremely Randomized Trees Entscheidungsstruktur Extremely Randomized Trees
Gradient Boosting Elastisches Netz ForecastTCN
K nächste Nachbarn Extremely Randomized Trees Gradient Boosting
Light GBM Gradient Boosting Holt-Winters exponentielle Glättung
Lineare SVC K nächste Nachbarn K nächste Nachbarn
Logistische Regression LARS-Lasso LARS-Lasso
Logistische Regression mit L1/L2 Abgrenzung Light GBM Light GBM
Naive Bayes Logistische Regression mit L1/L2 Abgrenzung Naive
Zufällige Gesamtstruktur Random Forest Orbit
Zufällige Gesamtstruktur auf Spark Zufällige Gesamtstruktur auf Spark Prophet
Stochastisches Gradientenabstiegsverfahren (SGD) Stochastisches Gradientenabstiegsverfahren (SGD) Zufällige Gesamtstruktur
Support Vector Classification (SVC) XGBoost SARIMAX
XGboost XGBoost mit eingeschränkter Tiefe SeasonalAverage
XGBoost mit eingeschränkter Tiefe SeasonalNaive
Zeitlicher Fusionstransformator
XGBoost
XGBoost für Zeitreihen
XGBoost mit begrenzter Tiefe für Zeitreihen
ElasticNet

Visualisieren der Ergebnisse

Das flaml.visualization Modul bietet Dienstprogramm-Funktionen zum Plotten des Optimierungsprozesses mit Plotly. Durch die Nutzung von Plotly können Benutzer ihre AutoML-Experimentergebnisse interaktiv untersuchen. Um diese Plotting-Funktionen zu verwenden, stelle einfach dein optimiertes Objekt flaml.AutoML oder flaml.tune.tune.ExperimentAnalysis als Eingabe zur Verfügung.

Sie können die folgenden Funktionen innerhalb Ihres Notebooks verwenden:

  • plot_optimization_history: Plot-Optimierungshistorie aller Testversionen im Experiment.
  • plot_feature_importance: Plot-Wichtigkeit für jedes Feature im DataSet.
  • plot_parallel_coordinate: Plot von hochdimensionalen Parameterbeziehungen im Experiment.
  • plot_contour: Plot der Parameterbeziehung als Profil-Plot im Experiment.
  • plot_edf: Plot des Zielwerts EDF (empirische Verteilungsfunktion) des Experiments.
  • plot_timeline: Plot der Zeitleiste des Experiments.
  • plot_slice: Plot der Parameterbeziehung als Segment-Plot in einer Studie.
  • plot_param_importance: Plot der Hyperparameter-Wichtigkeit des Experiments.