Freigeben über


Datenvorbereitung und -verarbeitung mit automatisiertem maschinellem Lernen von Azure Databricks

Dieser Artikel enthält Informationen dazu, wie automatisiertes maschinelles Lernen von Azure Databricks Daten für das Training für maschinelles Lernen vorbereitet. Außerdem werden hier konfigurierbare Dateneinstellungen beschrieben. Sie können diese Optionen während der Experimenteinrichtung über die Benutzeroberfläche für automatisiertes maschinelles Lernen anpassen. Informationen dazu, wie Sie diese Einstellungen über die API für automatisiertes maschinelles Lernen konfigurieren, finden Sie in der Referenz zur Python-API für automatisiertes maschinelles Lernen.

Unterstützte Datenmerkmalstypen

Merkmalstypen, die unten nicht aufgeführt sind, werden nicht unterstützt. Bilder werden beispielsweise nicht unterstützt.

Die folgenden Merkmalstypen werden unterstützt:

  • Numerisch (ByteType, ShortType, IntegerType, LongType, FloatType und DoubleType)
  • Boolean
  • Zeichenfolge (kategorischer oder englischer Text)
  • Zeitstempel (TimestampType, DateType)
  • ArrayType[Numeric] (Databricks Runtime 10.4 LTS ML und höher)
  • DecimalType (Databricks Runtime 11.3 LTS ML und höher)

Spaltenauswahl

Hinweis

Diese Funktionalität ist nur für Klassifizierungs- und Regressionsprobleme verfügbar.

In Databricks Runtime 10.3 ML und höher können Sie angeben, welche Spalten AutoML für das Training verwenden soll. Wenn Sie eine Spalte über die Benutzeroberfläche ausschließen möchten, deaktivieren Sie das entsprechende Kontrollkästchen in der Spalte Einschließen. Verwenden Sie in der API den Parameter exclude_cols. Weitere Informationen finden Sie unter Referenz zur Python-API für automatisiertes maschinelles Lernen in Azure Databricks.

Sie können die Spalte, die Sie als Vorhersageziel oder als Zeitspalte zum Aufteilen der Daten ausgewählt wurde, nicht löschen.

Alle Spalten sind standardmäßig eingeschlossen.

Imputieren von fehlenden Werten

In Databricks Runtime 10.4 LTS ML und höher können Sie angeben, wie NULL-Werte imputiert werden. Wählen Sie auf der Benutzeroberfläche eine Methode aus der Dropdownliste in der Spalte Imputation mit im Tabellenschema aus. Verwenden Sie in der API den Parameter imputers. Weitere Informationen finden Sie unter Referenz zur Python-API für automatisiertes maschinelles Lernen in Azure Databricks.

AutoML wählt als Standard eine Imputationsmethode auf der Grundlage des Spaltentyps und des Inhalts aus.

Hinweis

Wenn Sie eine nicht standardmäßige Imputationsmethode angeben, führt AutoML keine semantische Typerkennung durch.

Aufteilen der Daten in Trainings-/Validierungs-/Testdatensätze

Automatisiertes maschinelles Lernen teilt Ihre Daten auf drei Bereiche auf: Training, Validierung und Tests. Je nach Art der ML-Aufgabe stehen Ihnen verschiedene Optionen zum Aufteilen der Daten zur Verfügung.

Teilen von Daten für Regression und Klassifizierung

Verwenden Sie die folgenden Methoden, um Daten in Trainings-, Validierungs- und Testsätze für Regressions- und Klassifizierungsaufgaben aufzuteilen:

(Standardeinstellung) Zufällige Aufteilung: Wenn keine Strategie für die Aufteilung der Daten angegeben wird, wird das Dataset wie folgt nach dem Zufallsprinzip aufgeteilt: 60 Prozent Training, 20 Prozent Validierung und 20 Prozent Tests. Bei der Klassifizierung stellt eine geschichtete zufällige Aufteilung sicher, dass jede Klasse in den Trainings-, Validierungs- und Testdatasets angemessen repräsentiert wird.

Chronologische Aufteilung: In Databricks Runtime 10.4 LTS ML und höher können Sie eine Zeitspalte auswählen, um chronologische Trainings-, Validierungs- und Testaufteilungen zu erstellen. Chronologische Aufteilungen verwenden die frühesten Datenpunkte für das Training, die nächsten für die Validierung und die neuesten Punkte für das Testen. Die Zeitspalte kann ein Zeitstempel, eine ganze Zahl oder eine Zeichenfolgenspalte sein.

Manuelle Aufteilung: In Databricks Runtime 15.3 ML und höher können Sie die API verwenden, um eine manuelle Aufteilung einzurichten. Geben Sie eine geteilte Spalte an, und verwenden Sie die Werte train, validate oder test um Zeilen zu identifizieren, die Sie für Trainings-, Validierungs- und Testdatensätze verwenden möchten. Alle anderen Zeilen mit geteilten Spaltenwerten als train, test oder validate werden ignoriert, und es wird eine entsprechende Warnung ausgelöst.

Aufteilen von Daten für die Prognose

Für Prognosevorgänge verwendet AutoML die Zeitreihen-Kreuzvalidierung. Diese Methode erweitert das Trainingsdataset inkrementell chronologisch und führt eine Überprüfung für nachfolgende Zeitpunkte durch. Die Kreuzvalidierung bietet eine robuste Auswertung der Leistung eines Modells über verschiedene zeitliche Segmente. Es stellt sicher, dass das Prognosemodell streng auf zukünftige Daten getestet wird, wobei die Relevanz und Genauigkeit von Vorhersagen beibehalten wird.

Die Anzahl von Kreuzvalidierungsfalten hängt von den Eingabetabellenmerkmalen wie der Anzahl von Zeitreihen, dem Vorhandensein von Kovariaten und der Länge der Zeitreihen ab.

Sampling großer Datasets

Hinweis

Die Stichprobenentnahme wird nicht auf Vorhersageprobleme angewendet.

Obwohl AutoML Tests zur Hyperparameteroptimierung auf die Workerknoten eines Clusters verteilt, wird jedes Modell auf einem einzelnen Workerknoten trainiert.

AutoML schätzt automatisch den Speicherbedarf für das Laden und Trainieren Ihres Datasets und nimmt bei Bedarf Stichproben aus dem Dataset.

In Databricks Runtime 9.1 LTS ML bis Databricks Runtime 10.4 LTS ML hängt der Stichprobenanteil nicht vom Typ des Clusterknotens oder der Menge des Arbeitsspeichers auf jedem Knoten ab.

In Databricks Runtime 11.x ML:

  • Der Stichprobenanteil erhöht sich für Workerknoten mit mehr Arbeitsspeicher pro Kern. Sie können den Umfang der Stichprobe erhöhen, indem Sie einen arbeitsspeicheroptimierten Instanztyp auswählen.
  • Sie können den Umfang der Stichprobe auch erhöhen, indem Sie für spark.task.cpus in der Spark-Konfiguration einen größeren Wert für den Cluster auswählen. Die Standardeinstellung ist 1, der Maximalwert ist die Anzahl der CPUs im Workerknoten. Wenn Sie diesen Wert erhöhen, ist der Umfang der Stichprobe größer, aber es werden weniger Testversionen parallel ausgeführt. Bei einem Computer mit vier Kernen und insgesamt 64 GB RAM führt die Standardeinstellung spark.task.cpus=1 vier Testversionen pro Worker aus, wobei jede Testversion auf 16 GB RAM beschränkt ist. Wenn Sie spark.task.cpus=4 festlegen, führt jeder Worker nur eine einzelne Testversion aus, diese kann jedoch 64 GB RAM verwenden.

In Databricks Runtime 12.2 LTS ML und höher kann AutoML (automatisiertes maschinelles Lernen) mit größeren Datasets trainieren, indem mehr CPU-Kerne pro Trainingsaufgabe zugeteilt werden. Sie können die Stichprobengröße erhöhen, indem Sie eine Instanzgröße mit mehr Gesamtarbeitsspeicher wählen.

Wenn in Databricks Runtime 11.3 LTS ML von AutoML Stichproben des Datasets entnommen wurden, wird der Stichprobenanteil auf der Benutzeroberfläche auf der Registerkarte Übersicht angezeigt.

Bei Klassifizierungsaufgaben verwendet automatisiertes maschinelles Lernen die PySpark-Methode sampleBy für geschichtete Stichproben, um die Zielbezeichnungsverteilung beizubehalten.

Bei Regressionsaufgaben verwendet automatisiertes maschinelles Lernen die PySpark-Methode sample.

Unterstützung unausgewogener Datasets bei Klassifizierungsproblemen

Wenn AutoML in Databricks Runtime 11.3 LTS ML und höher erkennt, dass ein Dataset unausgeglichen ist, versucht es, die Unausgeglichenheit des Trainingsdatasets zu reduzieren, indem es ein Downsampling für die Hauptklassen durchführt und Klassengewichtungen hinzufügt. Automatisiertes ML gleicht nur das Trainingsdataset aus, nicht aber die Test- und Validierungsdatasets. Dadurch wird sichergestellt, dass die Modellleistung immer für das nicht angereicherte Dataset mit der tatsächlichen Eingabeklassenverteilung ausgewertet wird.

Um ein unausgeglichenes Trainingsdataset auszugleichen, verwendet automatisiertes ML Klassengewichtungen, die umgekehrt proportional zum Downsamplinggrad einer bestimmten Klasse sind. Wenn also beispielsweise ein Trainingsdataset mit insgesamt 100 Stichproben 95 Stichproben der Klasse A und fünf Stichproben der Klasse B enthält, wird dieses Ungleichgewicht durch automatisiertes maschinelles Lernen verringert, indem die Klasse A mittels Downsampling auf 70 Stichproben reduziert wird, was einem Downsamplingverhältnis für die Klasse A von 70/95 (oder 0,736) entspricht. Die Anzahl von Stichproben in Klasse B bleibt dagegen bei fünf. Um sicherzustellen, dass das endgültige Modell ordnungsgemäß kalibriert ist und die Wahrscheinlichkeitsverteilung der Modellausgabe der Wahrscheinlichkeitsverteilung der Eingabe entspricht, skaliert automatisiertes ML die Klassengewichtung für die Klasse A um das Verhältnis 1/0,736 oder 1,358. Die Gewichtung der Klasse B ist hingegen weiterhin 1. Anschließend verwendet automatisiertes ML diese Klassengewichtungen im Modelltraining als Parameter, um sicherzustellen, dass die Stichproben aus den einzelnen Klassen beim Trainieren des Modells entsprechend gewichtet werden.

Zeitreihenaggregation

Wenn bei Vorhersageproblemen mehrere Werte für einen Zeitstempel in einer Zeitreihe vorhanden sind, verwendet AutoML den Durchschnitt der Werte.

Um stattdessen die Summe zu verwenden, bearbeiten Sie das Quellcode-Notebook, das im Zuge der Testausführungen generiert wurde. Ändern Sie in der Zelle Aggregieren von Daten nach ... .agg(y=(target_col, "avg")) zu .agg(y=(target_col, "sum")) auf folgende Weise:

group_cols = [time_col] + id_cols
df_aggregation = df_loaded \
  .groupby(group_cols) \
  .agg(y=(target_col, "sum")) \
  .reset_index() \
  .rename(columns={ time_col : "ds" })

Semantische Typerkennung

Hinweis

  • Die semantische Typerkennung wird nicht auf Vorhersageprobleme angewendet.
  • AutoML führt keine semantische Typerkennung für Spalten durch, für die benutzerdefinierte Imputationsmethoden angegeben sind.

Ab Databricks Runtime 9.1 LTS ML versucht das automatisierte maschinelle Lernen zu erkennen, ob Spalten einen semantischen Typ aufweisen, der sich vom Spark- oder Pandas-Datentyp im Tabellenschema unterscheidet. AutoML behandelt diese Spalten als erkannten semantischen Typ. Diese Erkennungen werden bestmöglich durchgeführt, und es kann vorkommen, dass semantische Typen nicht erkannt werden. Sie können den semantischen Typ einer Spalte auch manuell festlegen oder AutoML anweisen, die semantische Typerkennung nicht mithilfe von Anmerkungen auf eine Spalte anzuwenden.

AutoML nimmt insbesondere die folgenden Anpassungen vor:

  • Zeichenfolgenspalten und ganzzahlige Spalten, die Datums- oder Zeitstempeldaten darstellen, werden als Zeitstempeltyp behandelt.
  • Zeichenfolgenspalten, die numerische Daten darstellen, werden als numerischer Typ behandelt.

Bei Databricks Runtime 10.1 ML und höher nimmt AutoML auch die folgenden Anpassungen vor:

  • Numerische Spalten, die kategorische IDs enthalten, werden als kategorisches Feature behandelt.
  • Zeichenfolgenspalten, die englischen Text enthalten, werden als Text-Feature behandelt.

Semantische Typanmerkungen

Mit Databricks Runtime 10.1 ML und höher können Sie den zugewiesenen semantischen Typ manuell steuern, indem Sie eine semantische Typanmerkung in einer Spalte platzieren. Verwenden Sie die folgende Syntax, um den semantischen Typ der Spalte <column-name> manuell mit der Anmerkung <semantic-type> zu versehen:

metadata_dict = df.schema["<column-name>"].metadata
metadata_dict["spark.contentAnnotation.semanticType"] = "<semantic-type>"
df = df.withMetadata("<column-name>", metadata_dict)

<semantic-type> kann eine der folgenden Optionen sein:

  • categorical: Die Spalte enthält kategorische Werte (z. B. numerische Werte, die als IDs behandelt werden sollen).
  • numeric: Die Spalte enthält numerische Werte (z. B. Zeichenfolgenwerte, die als Zahlen analysiert werden können).
  • datetime: Die Spalte enthält Zeitstempelwerte (Zeichenfolgen-, numerische oder Datumswerte, die in Zeitstempel konvertiert werden können).
  • text: Die Zeichenfolgenspalte enthält englischen Text.

Um die semantische Typerkennung für eine Spalte zu deaktivieren, verwenden Sie die spezielle Schlüsselwortanmerkung native.

Integration des Featurespeichers

In Databricks Runtime 11.3 LTS ML und höher können Sie im Featurespeicher vorhandene Featuretabellen verwenden, um das ursprüngliche Eingabedataset für Ihre Klassifizierungs- und Regressionsprobleme zu erweitern.

In Databricks Runtime 12.2 LTS ML und höher können Sie im Featurespeicher vorhandene Featuretabellen verwenden, um das ursprüngliche Eingabedataset für Ihre AutoML-Probleme (Klassifizierung, Regression und Vorhersage) zu erweitern.

Informationen zum Erstellen einer Featuretabelle finden Sie unter Was ist der Featurestore.

Um vorhandene Featuretabellen zu verwenden, können Sie Featuretabellen auf der AutoML-Benutzeroberfläche auswählen oder den Parameterfeature_store_lookups in Ihrer AutoML-Ausführungsspezifikation festlegen.

feature_store_lookups = [
  {
     "table_name": "example.trip_pickup_features",
     "lookup_key": ["pickup_zip", "rounded_pickup_datetime"],
  },
  {
      "table_name": "example.trip_dropoff_features",
     "lookup_key": ["dropoff_zip", "rounded_dropoff_datetime"],
  }
]

Notebookbeispiel: AutoML-Experiment mit Feature Store

Im folgenden Notebook wird gezeigt, wie Sie ein ML-Modell mit AutoML- und Feature Store-Featuretabellen trainieren.

AutoML-Experiment mit Beispielnotebook für Featurespeicher

Notebook abrufen