Konfigurieren von Trainings-, Validierungs-, Kreuzvalidierungs- und Testdaten in automatisiertem maschinellem Lernen
GILT FÜR: Python SDK azureml v1
In diesem Artikel werden Optionen zum Konfigurieren der Aufteilung von Trainings- und Validierungsdaten sowie die Einstellungen für die Kreuzvalidierung für Ihre Experimente mit automatisiertem maschinellem Lernen (automatisiertem ML) beschrieben. Wenn Sie in Azure Machine Learning automatisiertes maschinelles Lernen zum Erstellen mehrerer Machine Learning-Modelle verwenden, muss jede untergeordnete Ausführung das zugehörige Modell durch Berechnen der Qualitätsmetriken für das Modell validieren, etwa „Genauigkeit“ oder „AUC gewichtet“. Diese Metriken werden durch Vergleichen der mit jedem Modell gemachten Vorhersagen mit realen Bezeichnungen aus Beobachtungen in der Vergangenheit in den Validierungsdaten berechnet. Experimente mit automatisiertem maschinellem Lernen führen die Modellvalidierung automatisch durch.
In den folgenden Abschnitten wird beschrieben, wie Sie die Validierungseinstellungen mit dem Azure Machine Learning Python SDK anpassen können. Weitere Informationen dazu, wie Metriken basierend auf dem Überprüfungstyp berechnet werden, finden Sie im Abschnitt Festlegen der Metrikberechnung für die Kreuzvalidierung. Wenn Sie sich für Low-Code- oder No-Code-Umgebungen interessieren, finden Sie dazu unter Erstellen von Experimenten mit automatisiertem maschinellem Lernen in Azure Machine Learning Studio weitere Informationen.
Voraussetzungen
Ein Azure Machine Learning-Arbeitsbereich. Informationen zum Erstellen des Arbeitsbereichs finden Sie unter Schnellstart: So erstellen Sie Arbeitsbereichsressourcen, die Sie für die ersten Schritte mit Azure Machine Learning benötigen.
Grundkenntnisse in der Einrichtung eines Experiments mit automatisiertem maschinellem Lernen mit dem Azure Machine Learning SDK. Um die grundlegenden Entwurfsmuster für Experimente mit automatisiertem maschinellem Lernen zu sehen, schließen Sie das Tutorial zum Trainieren eines Objekterkennungsmodells oder den Leitfaden zum Einrichten von AutoML-Training mit Python ab.
Ein grundlegendes Verständnis der Aufteilung von Trainings- und Validierungsdaten sowie der Kreuzvalidierung als Konzepte des maschinellen Lernens. Eine allgemeine Erläuterung finden Sie in den folgenden Artikeln:
About training, validation, and testing datasets in machine learning (Informationen zu Trainings-, Validierungs- und Testdatasets beim maschinellen Lernen)
Understand Cross Validation in machine learning (Grundlegendes zur Kreuzvalidierung beim maschinellen Lernen)
Wichtig
Für die Python-Befehle in diesem Artikel ist die neueste azureml-train-automl
-Paketversion erforderlich.
- Installieren Sie das neueste
azureml-train-automl
-Paket in Ihrer lokalen Umgebung. - Einzelheiten zum neuesten
azureml-train-automl
-Paket finden Sie in den Versionshinweisen.
Festlegen von Standarddatenaufteilung und Kreuzvalidierung beim maschinellen Lernen
Verwenden Sie zum Festlegen von Standarddatenaufteilungen und Kreuzvalidierung beim maschinellen Lernen das Klassenobjekt AutoMLConfig, um Experiment- und Trainingseinstellungen zu definieren. Im folgenden Beispiel werden nur die erforderlichen Parameter festgelegt. Die Parameter n_cross_validations
und validation_data
sind nicht enthalten.
Hinweis
Die Standarddatenaufteilung und Kreuzvalidierung werden in Vorhersageszenarien nicht unterstützt.
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
label_column_name = 'Class'
)
Wenn Sie nicht explizit den Parameter validation_data
oder n_cross_validations
angeben, wendet automatisiertes maschinelles Lernen Standardverfahren an, die von der Anzahl der Zeilen im übergebenen einzelnen Dataset training_data
abhängen.
Umfang der Trainingsdaten | Validierungsverfahren |
---|---|
Mehr als 20.000 Zeilen | Es wird eine Aufteilung in Trainings- und Validierungsdaten vorgenommen. Standardmäßig werden 10 % des ursprünglichen Trainingsdatasets als Validierungsset verwendet. Dieses Validierungsset wird seinerseits für die Metrikberechnung verwendet. |
Weniger als 20.000 Zeilen | Der Kreuzvalidierungsansatz wird angewendet. Die Standardanzahl der Faltungen (Folds) hängt von der Zeilenanzahl ab. - Wenn das Dataset weniger als 1.000 Zeilen aufweist, werden 10 Faltungen verwendet. - Wenn die Anzahl der Zeilen zwischen 1.000 und 20.000 liegt, werden drei Faltungen verwendet. |
Bereitstellen eines Validierungsdataset
Sie haben zwei Optionen zum Bereitstellen von Validierungsdaten. Sie können von einer einzelnen Datendatei ausgehen und sie in Trainings- und Validierungsdatasets aufteilen, oder Sie können für den Validierungssatz eine separate Datendatei bereitstellen. In beiden Fällen weist der Parameter validation_data
in Ihrem AutoMLConfig
-Objekt die Daten zu, die als Validierungsset verwendet werden. Dieser Parameter akzeptiert nur Datasets in der Form eines Azure Machine Learning-Datasets oder eines Pandas-Dataframes.
Im Folgenden finden Sie einige weitere Überlegungen zum Arbeiten mit Validierungsparametern:
- Sie können nur einen Überprüfungsparameter festlegen, entweder den Parameter
validation_data
oder den Parametern_cross_validations
, aber nicht beide. - Wenn Sie den Parameter
validation_data
verwenden, müssen Sie auch die Parametertraining_data
undlabel_column_name
angeben.
Im folgenden Beispiel ist explizit definiert, welcher Teil von dataset
zum Training (training_data
) und welcher zur Validierung (validation_data
) verwendet wird.
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
training_data, validation_data = dataset.random_split(percentage=0.8, seed=1)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = training_data,
validation_data = validation_data,
label_column_name = 'Class'
)
Angeben der Validierungsdatasetgröße
Wenn Sie die Größe des Validierungssatzes angeben, geben Sie nur ein einzelnes Dataset für das Experiment an. Der validation_data
-Parameter wird nicht angegeben, und das bereitgestellte Dataset wird dem Parameter training_data
zugewiesen.
In Ihrem AutoMLConfig
-Objekt können Sie den Parameter validation_size
so festlegen, dass er einen Teil der Trainingsdaten für die Validierung reserviert. Bei dieser Strategie trennt der Auftrag für automatisiertes ML den Validierungssatz von den ursprünglichen Trainingsdaten (training_data
), die Sie bereitstellen. Der Wert sollte zwischen 0,0 und 1,0 (ausschließlich) betragen. (Beispielsweise bedeutet 0,2, dass 20 % der Daten als Validierungsdaten zurückgehalten werden.)
Hinweis
Der Parameter validation_size
wird in Vorhersageszenarien nicht unterstützt.
Im folgenden Beispiel wird ein einzelnes Dataset (dataset
) für das Experiment verwendet. training_data
greift auf das vollständige Dataset zu, und 20 % des Dataset werden für die Validierung zugewiesen (validation_size = 0.2
):
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
validation_size = 0.2,
label_column_name = 'Class'
)
Ausführen der k-fachen Kreuzvalidierung
Um eine k-fache Kreuzvalidierung durchzuführen, schließen Sie den Parameter n_cross_validations
ein, und legen Sie die Anzahl der Faltungen fest. Dieser Parameter legt fest, wie viele Kreuzvalidierungen durchgeführt werden, ausgehend von der gleichen Anzahl der Faltungen.
Hinweis
Der Parameter n_cross_validations
wird in Klassifizierungsszenarien mit Deep Neural Networks (DNN) nicht unterstützt.
Für Vorhersageszenarien finden Sie Informationen zur Kreuzvalidierung unter Einrichten von AutoML zum Trainieren eines Zeitreihenvorhersagemodells.
Im folgenden Beispiel werden fünf Faltungen für die Kreuzvalidierung definiert. Der Prozess führt fünf verschiedene Trainings aus, bei denen jedes Training 4/5 der Daten verwendet. Jede Validierung verwendet 1/5 der Daten mit einer pro Durchgang verschiedenen Faltung der zurückgehaltenen Daten. Als Ergebnis werden Metriken mit dem Durchschnitt der fünf Validierungsmetriken berechnet.
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
n_cross_validations = 5
label_column_name = 'Class'
)
Ausführen der Monte Carlo-Kreuzvalidierung
Für eine Monte Carlo-Kreuzvalidierung müssen die beiden Parameter validation_size
und n_cross_validations
in das Objekt AutoMLConfig
eingeschlossen werden.
Bei der Monte Carlo-Kreuzvalidierung stellt das automatisierte maschinelle Lernen den durch den Parameter validation_size
angegebenen Teil der Trainingsdaten für die Validierung zurück und weist die restlichen Daten zu Trainingszwecken zu. Dieser Prozess wird dann basierend auf dem im Parameter n_cross_validations
angegebenen Wert wiederholt. Dabei werden jedes Mal nach dem Zufallsprinzip neue Trainings- und Validierungsaufteilungen generiert.
Hinweis
Die Monte Carlo-Kreuzvalidierung wird in Vorhersageszenarien nicht unterstützt.
Das folgende Beispiel definiert sieben Faltungen für die Kreuzvalidierung, und 20 Prozent der Trainingsdaten sollen für die Validierung verwendet werden. Der Prozess führt sieben verschiedene Trainings aus, bei denen jedes Training 80 % der Daten verwendet. Jede Validierung verwendet 20 % der Daten mit einer pro Durchgang verschiedenen Faltung der zurückgehaltenen Daten.
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
n_cross_validations = 7
validation_size = 0.2,
label_column_name = 'Class'
)
Angeben benutzerdefinierter Faltungen für die Kreuzvalidierung
Sie können außerdem eigene Datenfaltungen für die Kreuzvalidierung (Cross-Validation, CV) angeben. Dieser Ansatz wird als fortgeschrittenes Szenario angesehen, da Sie angeben, welche Spalten aufgeteilt und zur Validierung verwendet werden sollen. Sie nehmen benutzerdefinierte aufgeteilte CV-Spalten in Ihre Trainingsdaten auf und geben die Spalten an, indem Sie die Spaltennamen in den cv_split_column_names
-Parameter einsetzen. Jede Spalte stellt eine Kreuzvalidierungsaufteilung dar und weist einen ganzzahligen Wert von 1 oder 0 auf. Der Wert 1 gibt an, dass die Zeile für das Training verwendet werden soll. Der Wert 0 gibt an, dass die Zeile für die Validierung verwendet werden soll.
Hinweis
Der Parameter cv_split_column_names
wird in Vorhersageszenarien nicht unterstützt.
Das folgende Beispiel enthält Marketingdaten einer Bank mit zwei CV-Aufteilungsspalten cv1
und cv2
:
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/bankmarketing_with_cv.csv"
dataset = Dataset.Tabular.from_delimited_files(data)
automl_config = AutoMLConfig(compute_target = aml_remote_compute,
task = 'classification',
primary_metric = 'AUC_weighted',
training_data = dataset,
label_column_name = 'y',
cv_split_column_names = ['cv1', 'cv2']
)
Hinweis
Um cv_split_column_names
mit training_data
und label_column_name
zu verwenden, führen Sie ein Upgrade Ihres Azure Machine Learning Python SDK auf Version 1.6.0 oder höher durch. Informieren Sie sich für frühere SDK-Versionen über die Verwendung von cv_splits_indices
, beachten Sie aber, dass dies nur in Verbindung mit der X
- und y
-Eingabe von Datasets verwendet wird.
Festlegen der Metrikberechnung für die Kreuzvalidierung
Wenn die k-fache Kreuzvalidierung oder die Monte Carlo-Kreuzvalidierung verwendet wird, werden Metriken für jeden Validierungsteil berechnet und anschließend aggregiert. Der Aggregationsvorgang ist bei skalaren Metriken ein Mittelwert und bei Diagrammen eine Summe. Die bei der Kreuzvalidierung berechneten Metriken basieren auf allen Aufteilungen und somit auf allen Stichproben aus dem Trainingssatz. Weitere Informationen finden Sie unter Auswerten der Ergebnisse von Experimenten des automatisierten maschinellen Lernens.
Wenn ein benutzerdefinierter Validierungssatz oder ein automatisch ausgewählter Validierungssatz verwendet wird, werden die Metriken zur Modellauswertung nur mit diesem Validierungssatz berechnet und nicht mit den Trainingsdaten.
Bereitstellen eines Testdataset (Vorschau)
Wichtig
Dieses Feature ist zurzeit als öffentliche Preview verfügbar. Diese Vorschauversion wird ohne Vereinbarung zum Servicelevel bereitgestellt und ist nicht für Produktionsworkloads vorgesehen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar.
Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.
Sie können auch Testdaten bereitstellen, um das empfohlene Modell auszuwerten, das automatisierte ML nach Abschluss des Experiments für Sie generiert. Wenn Sie Testdaten bereitstellen, werden die Daten getrennt von Trainings- und Validierungsdaten betrachtet, um zu verhindern, dass die Ergebnisse des Testlaufs des empfohlenen Modells verzerrt werden. Weitere Informationen finden Sie unter Schulungs-, Validierungs- und Testdaten.
Warnung
Das Feature für Testdatasets ist nicht für die folgenden Szenarien mit automatisiertem ML verfügbar:
- Aufgaben für maschinelles Sehen
- Trainieren zahlreicher Modelle und hierarchischer Zeitreihenvorhersagen (Vorschau)
- Vorhersageaufgaben, für die neuronale Deep Learning-Netze (Deep Learning Neural Networks, DNNs) aktiviert sind
- Ausführen von automatisiertem ML auf lokalen Computeressourcen oder in Azure Databricks-Clustern
Testdatasets müssen in Form eines Azure Machine Learning TabularDatasetvorliegen. Sie können ein Testdataset mit den test_data
Parametern und test_size
in Ihrem AutoMLConfig
-Objekt angeben. Diese Parameter schließen sich gegenseitig aus und können nicht gleichzeitig oder mit dem Parameter cv_split_column_names
oder cv_splits_indices
angegeben werden.
Geben Sie in Ihrem AutoMLConfig
-Objekt mit dem Parameter test_data
ein vorhandenes Dataset an:
automl_config = AutoMLConfig(task='forecasting',
...
# Provide an existing test dataset
test_data=test_dataset,
...
forecasting_parameters=forecasting_parameters)
Verwenden Sie beim Erstellen den Parameter , um eine Train/Test-Aufteilung zu verwenden, anstatt Testdaten direkt test_size
AutoMLConfig
bereitzustellen. Dieser Parameter muss ein Gleitkommawert zwischen 0,0 und 1,0 (ausschließlich) sein. Er gibt den Prozentsatz des Trainingsdataset an, der für das Testdataset verwendet werden soll.
automl_config = AutoMLConfig(task = 'regression',
...
# Specify train/test split
training_data=training_data,
test_size=0.2)
Im Folgenden finden Sie einige weitere Überlegungen zum Arbeiten mit Testdatasets:
- Für Regressionsaufgaben wird eine Zufallsstichprobe verwendet.
- Für Klassifizierungsaufgaben werden geschichtete Stichproben verwendet, aber auch Zufallsstichproben, wenn eine geschichtete Stichprobe nicht durchführbar ist.
Hinweis
Sie können in Vorhersageszenarien mit dem Parameter test_size
derzeit kein Testdataset mit einer Aufteilung in Training und Test angeben.
Wenn Sie den Parameter test_data
oder test_size
an das AutoMLConfig
-Objekt übergeben, wird nach Abschluss des Experiments automatisch ein Remotetestlauf ausgelöst. In diesem Testlauf werden die bereitgestellten Testdaten verwendet, um das beste Modell auszuwerten, das von automatisierten ML empfohlen wird. Weitere Informationen finden Sie unter Abrufen von Testauftragsergebnissen.