Configurer la formation, la validation, la validation croisée et les données de test en AutoML
S’APPLIQUE À :SDK Python azureml v1
Dans cet article, vous allez découvrir les différentes options de configuration des fractionnements de données de formation et de validation et des paramètres de la validation croisée pour vos expériences de Machine Learning automatisé (AutoML).
Dans Azure Machine Learning, quand vous utilisez AutoML pour générer plusieurs modèles de ML, chaque exécution enfant doit valider le modèle associé en calculant les métriques de qualité pour ce modèle, telles que la précision ou la pondération AUC. 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. En savoir plus sur le mode de calcul des métriques en fonction du type de validation.
Les expériences d’AutoML effectuent automatiquement la validation du modèle. Les sections suivantes décrivent comment vous pouvez personnaliser davantage les paramètres de validation avec le Kit de développement logiciel (SDK) Python pour Azure Machine Learning.
Pour une expérience avec peu, voire sans code, consultez la section Créer vos expériences de machine learning automatisé dans Azure Machine Learning Studio.
Prérequis
Pour cet article, vous avez besoin des éléments suivants :
Un espace de travail Azure Machine Learning. Pour créer l’espace de travail, consultez Créer des ressources d’espace de travail.
Une connaissance de base en matière de configuration d’une expérience de Machine Learning automatisé avec le Kit de développement logiciel (SDK) pour Azure Machine Learning. Suivez le didacticiel ou les procédures pour afficher les modèles de conception fondamentaux des expériences de Machine Learning automatisé.
Une compréhension des fractionnements de données de formation et de validation et de la validation croisée en tant que concepts de Machine Learning. Pour obtenir une explication plus poussée,
Important
Les commandes python de cet article requièrent la dernière azureml-train-automl
version du package.
- Installez le dernier package
azureml-train-automl
dans votre environnement local. - Pour plus d’informations sur le dernier package
azureml-train-automl
, consultez les notes de publication.
Fractionnements de données et validation croisée par défaut dans le Machine Learning
Utilisez l’objet AutoMLConfig pour définir vos paramètres d’expérimentation et de formation. Dans l’extrait de code suivant, Notez que seuls les paramètres requis sont définis, c’est-à-dire que les paramètres pour n_cross_validations
ou validation_data
ne sont pas inclus.
Notes
Les fractionnements de données par défaut et la validation croisée ne sont pas pris en charge dans les scénarios de prévision.
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
, l’AutoML applique les techniques par défaut en fonction du nombre de lignes fournies dans le jeu 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 est inférieur à 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 des données de validation
Dans ce cas, vous pouvez démarrer avec un seul fichier de données et le fractionner en jeux de données de formation et de validation, ou vous pouvez fournir un fichier de données distinct pour le jeu 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.
Notes
Le paramètre validation_data
nécessite que les paramètres training_data
et label_column_name
soient également définis. Vous ne pouvez définir qu’un seul paramètre de validation ; en d’autres termes, vous ne pouvez spécifier que validation_data
ou n_cross_validations
, pas les deux.
L’exemple de code suivant définit explicitement la partie des données fournies dans dataset
à utiliser pour l’apprentissage et la validation.
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
Dans ce cas, un seul jeu de données est fourni pour l’expérience. Autrement dit, le paramètre validation_data
n’est pas spécifié, et le jeu de données fourni est assigné au paramètre training_data
.
Dans votre objet AutoMLConfig
, vous pouvez définir le paramètre validation_size
pour qu’il contienne une partie des données d’apprentissage pour la validation. Cela signifie que le jeu de validation sera fractionné par Machine Learning automatisé à partir du paramètre initial training_data
fourni. Cette valeur doit être comprise entre 0,0 et 1,0 non inclus (par exemple, 0,2 signifie que 20 % des données sont conservées pour les données de validation).
Notes
Le paramètre validation_size
n’est pas pris en charge dans les scénarios de prévision.
Prenez l'exemple du code suivant :
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'
)
Validation croisée k-fold
Pour effectuer une validation croisée k-fold, incluez le paramètre n_cross_validations
et affectez-lui une valeur. Ce paramètre définit le nombre de validations croisées à effectuer, en fonction du même nombre de plis.
Notes
Le paramètre n_cross_validations
n’est pas pris en charge dans les scénarios de classification qui utilisent des réseaux neuronaux profonds.
Pour les scénarios de prévision, consultez l’application de la validation croisée dans Configurer AutoML pour effectuer l’apprentissage d’un modèle de prévision de série chronologique.
Dans le code suivant, cinq plis pour la validation croisée sont définis. Par conséquent, il est question de cinq formations différentes. Chaque formation utilise 4/5 des données, et chaque validation utilise 1/5 des données avec un pli de données d'exclusion différent pour chaque formation.
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'
)
Validation croisée Monte-Carlo
Pour effectuer une validation croisée Monte-Carlo, incluez les paramètres validation_size
et n_cross_validations
dans votre objet AutoMLConfig
.
Pour la validation croisée de Monte-Carlo, Machine Learning 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 affecte le reste des données pour l’entraînement. Ce processus est ensuite répété en fonction de la valeur précisée dans le paramètre n_cross_validations
, ce qui génère de nouveaux fractionnements d’entraînement et de validation, de manière aléatoire, à chaque fois.
Notes
La validation croisée de Monte-Carlo n’est pas prise en charge dans les scénarios de prévision.
Le code suivant définit 7 replis pour la validation croisée tandis que 20 % des données d’entraînement seront utilisés pour la validation. Ainsi, il est question de 7 entraînements différents ; chaque entraînement utilise 80 % des données, et chaque validation utilise 20 % des données avec un repli 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). Cela est considéré comme un scénario plus avancé, car vous spécifiez les colonnes à fractionner et à utiliser pour la validation. Incluez les colonnes de fractionnement CV personnalisées dans vos données d’apprentissage et spécifiez les colonnes en remplissant les noms de colonnes dans le paramètre cv_split_column_names
. Chaque colonne représente un fractionnement de validation croisée et est remplie avec des valeurs entières 1 ou 0, où 1 indique que la ligne doit être utilisée pour la formation et 0 indique que la ligne doit être utilisée pour la validation.
Notes
Le paramètre cv_split_column_names
n’est pas pris en charge dans les scénarios de prévision.
L’extrait de code suivant contient des données de marketing bancaires avec deux colonnes de fractionnement CV « 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']
)
Notes
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.
Calcul métrique pour la validation croisée dans le Machine Learning
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. En savoir plus sur les métriques dans le Machine Learning automatisé.
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 des données de test (version préliminaire)
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 l’AutoML génère automatiquement à l’issue de l’expérience. Lorsque vous fournissez les données de test, elles sont considérées comme un distinct de la formation et de la validation, afin de ne pas biaiser les résultats de la série de tests du modèle recommandé. En savoir plus sur les données d’apprentissage, de validation et de test dans l’apprentissage automatique.
Avertissement
Cette fonctionnalité n’est pas disponible pour les scénarios de ML automatisé suivants :
- Tâches de vision par ordinateur
- Entraînement d’un grand nombre de modèles de prévision de séries chronologiques hiérarchiques (préversion)
- Tâches de prévision pour lesquelles le deep learning des réseaux neuronaux (DNN) est activé
- Exécution du ML automatisé à partir de calculs locaux ou de clusters Azure Databricks
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 s’excluent mutuellement et ne peuvent pas être spécifiés en même temps ou avec cv_split_column_names
ou cv_splits_indices
.
Avec le paramètre test_data
, spécifiez un jeu de données existant à transmettre à votre objet AutoMLConfig
.
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 exclusivement, et spécifie le pourcentage du jeu de données d’apprentissage qui doit être utilisé 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)
Notes
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 un recul lorsque l’échantillonnage stratifié n’est pas possible.
Les prévisions ne prennent pas actuellement en charge la spécification d’un jeu de données de test à l’aide d’un fractionnement formation/test avec le paramètre test_size
.
Le passage des paramètres test_data
ou test_size
dans le AutoMLConfig
, déclenche automatiquement une série de tests à distance à la fin de votre expérience. Cette série de tests utilise les données de test fournies pour évaluer le meilleur modèle recommandé par l’AutoML. En savoir plus sur l'obtention des prédictions à partir de la série de tests.