Partager via


Configurer les données d'entraînement, de validation, de validation croisée et de test dans l'apprentissage automatique automatisé

S’APPLIQUE À :Kit de développement logiciel (SDK) Azure Machine Learning v1 pour Python

Important

Cet article fournit des informations sur l’utilisation du Kit de développement logiciel (SDK) Azure Machine Learning v1. Sdk v1 est déconseillé depuis le 31 mars 2025. La prise en charge prendra fin le 30 juin 2026. Vous pouvez installer et utiliser le Kit de développement logiciel (SDK) v1 jusqu’à cette date.

Nous vous recommandons de passer au SDK v2 avant le 30 juin 2026. Pour plus d’informations sur le SDK v2, consultez Qu’est-ce qu’Azure Machine Learning CLI et le SDK Python v2 ? et la référence du SDK v2.

Cet article décrit les options de configuration des données d'entraînement et des divisions de données de validation ainsi que les paramètres de validation croisée pour vos expériences d'apprentissage automatique automatisé (ML automatisé). Dans Azure Machine Learning, quand vous utilisez AutoML pour générer plusieurs modèles de Machine Learning, chaque exécution enfant doit valider le modèle associé en calculant les métriques de qualité pour ce modèle, comme l’exactitude ou l’AUC pondérée. Ces métriques sont calculées en comparant les prédictions effectuées avec chaque modèle avec des balises d’observations passées basées sur les données de validation. Les expériences ML automatisées effectuent automatiquement la validation du modèle.

Les sections suivantes décrivent comment vous pouvez personnaliser les paramètres de validation avec le Kit de développement logiciel (SDK) Python pour Azure Machine Learning. Pour en savoir plus sur la façon dont les métriques sont calculées en fonction du type de validation, consultez la section Définir le calcul des métriques pour la validation croisée. Si vous êtes intéressé par une expérience low-code ou sans code, consultez Créer vos expériences AutoML dans Azure Machine Learning studio.

Prérequis

Important

Les commandes Python de cet article nécessitent la dernière version du package azureml-train-automl.

Définir les fractionnements et la validation croisée de données par défaut dans le Machine Learning

Pour définir les fractionnements et la validation croisée de données par défaut dans le Machine Learning, utilisez l’objet de classe AutoMLConfig pour définir vos paramètres pour l’expérience et l’apprentissage. Dans l’exemple suivant, seuls les paramètres requis sont définis. Les paramètres n_cross_validations et validation_data ne sont pas inclus.

Remarque

Dans les scénarios de prévision, les fractionnements et la validation croisée de données par défaut ne sont pas pris en charge.

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'
                            )

Si vous ne spécifiez pas explicitement un paramètre validation_data ou n_cross_validations, le ML automatisé applique des techniques par défaut en fonction du nombre de lignes fournies dans l'ensemble de données unique training_data.

Taille des données de formation Technique de validation
Plus de 20 000 lignes Le fractionnement des données de formation/validation est appliqué. La valeur par défaut consiste à prendre 10 % du jeu de données d’apprentissage initial en tant que jeu de validation. Ce jeu de validation est ensuite utilisé pour le calcul des métriques.
Moins de 20 000 lignes L’approche de validation croisée est appliquée. Le nombre de plis par défaut dépend du nombre de lignes.
- Si le jeu de données comporte moins de 1 000 lignes, 10 plis sont utilisés.
- S’il y a entre 1 000 et 20 000 lignes, trois plis sont utilisés.

Fournir un jeu de données de validation

Vous avez deux options pour fournir des données de validation. Vous pouvez commencer avec un seul fichier de données et le diviser en ensembles de données de formation et de données de validation, ou vous pouvez fournir un fichier de données distinct pour l'ensemble de validation. Dans les deux cas, le paramètre validation_data de votre objet AutoMLConfig assigne les données à utiliser comme jeu de validation. Ce paramètre n’accepte que les jeux de données sous la forme d’un jeu données Azure Machine Learning ou d’un cadre de données Pandas.

Voici quelques autres considérations relatives à l’utilisation des paramètres de validation :

  • Vous ne pouvez définir qu’un seul paramètre de validation : le paramètre validation_data ou le paramètre n_cross_validations, mais pas les deux.
  • Quand vous utilisez le paramètre validation_data, vous devez aussi spécifier les paramètres training_data et label_column_name.

L’exemple suivant définit explicitement la partie du dataset à utiliser pour l’apprentissage (training_data) et pour la validation (validation_data) :

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'
                            )

Fournir la taille du jeu de données de validation

Quand vous fournissez la taille du jeu de validation, vous fournissez un seul jeu de données pour l’expérience. Le paramètre validation_data n’est pas spécifié et le jeu de données fourni est affecté au paramètre training_data.

Dans votre objet AutoMLConfig, vous pouvez définir le paramètre validation_size pour conserver une partie des données d'entraînement pour validation. Pour cette stratégie, le travail ML automatisé divise l'ensemble de validation à partir de l'initiale training_data que vous fournissez. La valeur doit être comprise entre 0,0 et 1,0, à l’exclusion de ces deux valeurs (par exemple, 0,2 signifie que 20 % des données sont réservées pour les données de validation).

Remarque

Dans les scénarios de prévision, le paramètre validation_size n’est pas pris en charge.

L’exemple suivant fournit un seul dataset pour l’expérience. training_data accède au jeu de données complet, et 20 % du jeu de données sont alloués pour la validation (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'
                            )

Effectuer une validation croisée k-fold

Pour effectuer une validation croisée k-fold, vous incluez le paramètre n_cross_validations et vous définissez le nombre de plis. Ce paramètre définit le nombre de validations croisées à effectuer, en fonction du même nombre de plis.

Remarque

Dans les scénarios de classification qui utilisent des réseaux neuronaux profonds (DNN), le paramètre n_cross_validations n'est pas pris en charge.

Pour les scénarios de prévision, découvrez comment la validation croisée est appliquée dans Configurer AutoML pour former un modèle de prévision de séries chronologiques.

L’exemple suivant définit 5 plis pour la validation croisée. Le processus exécute 5 apprentissages différents, chacun utilisant 4/5 des données. Chaque validation utilise 1/5 des données avec un pli de données d’exclusion différent à chaque fois. Par conséquent, les mesures sont calculées avec la moyenne des cinq métriques de validation.

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'
                            )

Effectuer une validation croisée Monte-Carlo

Pour effectuer une validation croisée Monte-Carlo, vous incluez les paramètres validation_size et n_cross_validations dans votre objet AutoMLConfig.

Pour la validation croisée de Monte Carlo, le ML automatisé met de côté la partie des données d'entraînement spécifiée par le paramètre validation_size pour la validation, puis attribue le reste des données à l'entraînement. Ce processus est ensuite répété en fonction de la valeur spécifiée dans le paramètre n_cross_validations, ce qui génère de nouvelles divisions d'entraînement et de validation, de manière aléatoire, à chaque fois.

Remarque

Dans les scénarios de prévision, la validation croisée Monte-Carlo n’est pas prise en charge.

L’exemple suivant définit 7 plis pour la validation croisée et 20 % des données d’apprentissage pour la validation. Le processus exécute 5 apprentissages différents, chacun utilisant 80 % des données. Chaque validation utilise 20 % des données avec un pli de données d’exclusion différent à chaque fois.

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'
                            )

Spécifier des plis de données de validation croisée personnalisés

Vous pouvez également fournir vos propres plis de données de validation croisée (CV). Cette approche est considérée comme étant un scénario plus avancé, car vous spécifiez les colonnes à fractionner et à utiliser pour la validation. Vous incluez des colonnes de fractionnement de validation croisée personnalisées dans vos données d’apprentissage et vous spécifiez les colonnes en indiquant leur nom dans le paramètre cv_split_column_names. Chaque colonne représente un fractionnement de validation croisée et a une valeur entière égale à 1 ou 0. Une valeur 1 indique que la ligne doit être utilisée pour l’apprentissage. Une valeur 0 indique que la ligne doit être utilisée pour la validation.

Remarque

Dans les scénarios de prévision, le paramètre cv_split_column_names n’est pas pris en charge.

L’exemple suivant contient des données marketing du domaine bancaire avec deux colonnes de fractionnement de validation croisée cv1 et 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']
                            )

Remarque

Pour utiliser cv_split_column_names avec training_data et label_column_name, veuillez mettre à niveau votre Kit de développement logiciel (SDK) Python pour Azure Machine Learning version 1.6.0 ou ultérieure. Pour les versions précédentes du Kit de développement logiciel (SDK), consultez l’utilisation de cv_splits_indices, mais notez qu’il est utilisé avec les entrées de jeu de données X et y uniquement.

Définir le calcul de métriques pour la validation croisée

Lorsque la validation croisée k-fold ou Monte Carlo est utilisée, les métriques sont calculées sur chaque pli de validation, puis agrégées. L’opération d’agrégation est une moyenne pour les métriques scalaires et une somme pour les graphiques. Les métriques calculées pendant la validation croisée sont basées sur tous les plis et, par conséquent, sur tous les échantillons du jeu de formation. Pour plus d'informations, consultez Évaluer les résultats des expériences ML automatisées.

Lorsqu’un jeu de validation personnalisé ou un jeu de validation sélectionné automatiquement est utilisé, les métriques d’évaluation du modèle sont calculées uniquement à partir de ce jeu de validation, et non à partir des données de formation.

Fournir un jeu de données de test (préversion)

Important

Cette fonctionnalité est actuellement disponible en préversion publique. Cette préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge.

Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

Vous pouvez également fournir des données de test pour évaluer le modèle recommandé que le ML automatisé génère pour vous une fois l'expérience terminée. Lorsque vous fournissez des données de test, les données sont considérées comme distinctes de la formation et de la validation afin d'éviter tout effet de biais sur les résultats de l'exécution du test du modèle recommandé. Pour en savoir plus, voir Données de formation, de validation et de test.

Les jeux de données de test doivent se présenter sous la forme d’un Azure Machine Learning TabularDataset. Vous pouvez spécifier un jeu de données de test avec les paramètres test_data et test_size dans votre objet AutoMLConfig. Ces paramètres sont mutuellement exclusifs, et ils ne peuvent pas être spécifiés en même temps ou avec les paramètres cv_split_column_names ou cv_splits_indices.

Dans votre objet AutoMLConfig, utilisez le paramètre test_data pour spécifier un jeu de données existant :

automl_config = AutoMLConfig(task='forecasting',
                             ...
                             # Provide an existing test dataset
                             test_data=test_dataset,
                             ...
                             forecasting_parameters=forecasting_parameters)

Pour utiliser un fractionnement formation/test au lieu de fournir des données de test directement, utilisez le paramètre test_size lors de la création de AutoMLConfig. Ce paramètre doit être une valeur à virgule flottante comprise entre 0,0 et 1,0, à l’exclusion de ces deux valeurs. Il spécifie le pourcentage du jeu de données d’apprentissage à utiliser pour le jeu de données de test.

automl_config = AutoMLConfig(task = 'regression',
                             ...
                             # Specify train/test split
                             training_data=training_data,
                             test_size=0.2)

Voici quelques autres considérations relatives à l’utilisation d’un jeu de données de test :

  • Pour les tâches de régression, l’échantillonnage aléatoire est utilisé.
  • Pour les tâches de classification, l’échantillonnage stratifié est utilisé, mais l’échantillonnage aléatoire est utilisé comme solution de secours quand l’échantillonnage stratifié n’est pas possible.

Remarque

Dans les scénarios de prévision, vous ne pouvez actuellement pas spécifier un ensemble de données de test en utilisant une division train/test avec le paramètre test_size.

Le fait de passer les paramètres test_data ou test_size dans l’objet AutoMLConfig déclenche automatiquement l’exécution d’un test à distance à la fin de votre expérience. Ce test utilise les données de test fournies pour évaluer le meilleur modèle recommandé par le ML automatisé. Pour plus d’informations, consultez Obtenir les résultats d’un travail de test.