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
aufSpark
-DataFrame konvertiert werden mithilfe vonto_pandas_on_spark()
und dann als DataFrame und Bezeichnung anfit()
ü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.
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.