Datenvorbereitung für die Klassifizierung
Erfahren Sie, wie Sie Mithilfe von AutoML Ihre Daten für die Klassifizierung vorbereiten.
In diesem Artikel wird beschrieben, wie AutoML Daten für Klassifizierungsschulungen vorbereitet und konfigurierbare Dateneinstellungen beschreibt. 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
Nur die unten aufgeführten Featuretypen werden unterstützt. Bilder werden z. B. nicht unterstützt.
Die folgenden Merkmalstypen werden unterstützt:
- Numerisch (
ByteType
,ShortType
,IntegerType
,LongType
,FloatType
undDoubleType
) - 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)
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 in der Referenz zur AutoML-Python-API.
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.
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.
Spaltenauswahl
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 in der Referenz zur AutoML-Python-API.
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.
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.
Verwenden Sie die folgenden Methoden, um Daten in Schulungs-, Validierungs- und Testsätze 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.
Sampling großer Datasets
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.
Databricks-Runtime-Version | Samplingverhalten |
---|---|
9.1 LTS ML - 10.4 LTS ML | Der Samplingbruch ist konstant und hängt nicht vom Knotentyp oder Speicher des Clusters pro Knoten ab. |
11.x ML | Die Sampling-Bruchzahl erhöht sich für Arbeitsknoten mit mehr Arbeitsspeicher pro Kern. So erhöhen Sie die Beispielgröße: – Verwenden Sie einen speicheroptimierten Instanztyp. – Passen Sie spark.task.cpus die Spark-Konfiguration an. Der Standardwert ist 1, und der Maximalwert ist die Anzahl der CPUs auf dem Arbeitsknoten. Der Maximalwert ist die Anzahl der CPUs auf dem Arbeitsknoten. Wenn Sie diesen Wert erhöhen, ist der Umfang der Stichprobe größer, aber es werden weniger Testversionen parallel ausgeführt.Beispiel: Auf einem Computer mit 4 Kernen und 64 GB RAM: - Bei spark.task.cpus=1 vier Testversionen pro Worker werden jeweils 16 GB RAM verwendet.- Mit spark.task.cpus=4 einer Testversion pro Worker wird eine Testversion ausgeführt, wobei alle 64 GB RAM verwendet werden. |
11.3 LTS ML und höher | Wenn AutoML das Dataset beispielt, wird der Samplingfraktion auf der Registerkarte "Übersicht" auf der Benutzeroberfläche angezeigt. |
12.2 LTS ML und höher | AutoML kann größere Datasets verarbeiten, indem mehr CPU-Kerne pro Schulungsaufgabe zugewiesen werden. Erhöhen Sie die Beispielgröße, indem Sie eine Instanz mit mehr Gesamtspeicher auswählen. |
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
.
Semantische Typerkennung
Hinweis
- 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
.