Quelle est la différence entre un ensemble de test et un ensemble de validation?

431

J'ai trouvé cela déroutant lorsque j'utilise la boîte à outils des réseaux de neurones dans Matlab.
Il a divisé le jeu de données brutes en trois parties:

  1. set d'entraînement
  2. ensemble de validation
  3. ensemble d'essai

Je remarque que dans de nombreux algorithmes d’entraînement ou d’apprentissage, les données sont souvent divisées en deux parties: l’apprentissage et l’épreuve.

Mes questions sont:

  1. Quelle est la différence entre le jeu de validation et le jeu de test?
  2. L'ensemble de validation est-il vraiment spécifique au réseau de neurones? Ou c'est optionnel.
  3. Pour aller plus loin, existe-t-il une différence entre validation et test dans le contexte du machine learning?
xiaohan2012
la source
56
La réponse à la question se trouve dans le document Eléments d'apprentissage statistique, page 222. Le jeu de validation est utilisé pour la sélection du modèle, le jeu de tests pour le modèle final (le modèle sélectionné par le processus de sélection), erreur de prédiction.
Mpiktas
@mpiktas Faites-vous référence au chapitre "Évaluation et sélection des modèles"?
Celdor
2
Oui. Le numéro de page provenait de la 5ème édition imprimée.
Mpiktas
13
@mpiktas est sur place. Voici le texte actuel:The training set is used to fit the models; the validation set is used to estimate prediction error for model selection; the test set is used for assessment of the generalization error of the final chosen model. Ideally, the test set should be kept in a “vault,” and be brought out only at the end of the data analysis.
arun
1
J'aime l'explication de Jason Brownlee également.
Delrocco

Réponses:

254

Normalement, pour effectuer un apprentissage supervisé, vous avez besoin de deux types d’ensembles de données:

  1. Dans un jeu de données (votre "norme de référence"), vous avez les données d'entrée ainsi que les résultats corrects / attendus. Ce jeu de données est généralement dûment préparé soit par l'homme, soit par la collecte de données de manière semi-automatisée. Cependant, il est important que vous disposiez de la sortie attendue pour chaque ligne de données, car vous en avez besoin pour l'apprentissage supervisé.

  2. Les données auxquelles vous allez appliquer votre modèle. Dans de nombreux cas, il s’agit des données qui vous intéressent pour la sortie de votre modèle et vous n’avez donc pas encore de sortie "attendue" ici.

Tout en effectuant un apprentissage automatique, procédez comme suit:

  1. Phase de formation: vous présentez vos données à partir de votre "gold standard" et entraînez votre modèle en associant l’entrée aux résultats attendus.
  2. Phase de validation / test: pour estimer le niveau de formation de votre modèle (en fonction de la taille de vos données, de la valeur que vous souhaitez prédire, de la saisie, etc.) et pour estimer les propriétés du modèle (erreur moyenne des prédicteurs numériques, erreurs de classification pour les classificateurs, rappel et précision pour les modèles IR, etc.)
  3. Phase d'application: vous appliquez maintenant votre modèle fraîchement développé aux données réelles et obtenez les résultats. Comme vous n'avez normalement aucune valeur de référence dans ce type de données (sinon, pourquoi auriez-vous besoin de votre modèle?), Vous ne pouvez que spéculer sur la qualité de la sortie de votre modèle en utilisant les résultats de votre phase de validation.

La phase de validation est souvent divisée en deux parties :

  1. Dans la première partie, il vous suffit de regarder vos modèles et de sélectionner la méthode la plus performante en utilisant les données de validation (= validation).
  2. Ensuite, vous estimez la précision de l'approche sélectionnée (= test).

D'où la séparation à 50/25/25.

Si vous n'avez pas besoin de choisir un modèle approprié parmi plusieurs approches concurrentes, vous pouvez simplement re-partitionner votre ensemble de manière à ne disposer que d'un ensemble d'apprentissage et d'un ensemble de tests, sans effectuer la validation de votre modèle formé. Personnellement, je les partitionne 70/30 alors.

Voir aussi cette question .

Alexander Galkin
la source
21
Pourquoi ne choisirais-je pas le modèle le plus performant basé sur l'ensemble de tests, en supprimant complètement l'ensemble de validation?
Sebastian Graf
4
Est-ce à cause de l'overfitting? Ou parce que nous voulons des statistiques indépendantes basées sur le résultat du test, uniquement pour une estimation d'erreur?
Sebastian Graf
12
@Sebastian [Si vous utilisez uniquement le jeu de tests:] "L'erreur du jeu de test final du modèle choisi final sous
estimera
23
Le jeu de validation est souvent utilisé pour régler les hyper-paramètres. Par exemple, dans la communauté d'apprentissage en profondeur, le réglage de la taille de la couche réseau, du numéro d'unité cachée et du terme de régularisation (que ce soit L1 ou L2) dépend de l'ensemble de validation défini
xiaohan2012
2
Quelle est la bonne façon de diviser les ensembles? La sélection doit-elle être aléatoire? Et si vous avez des images similaires? Cela ne nuira-t-il pas à votre capacité à généraliser? Si vous avez deux séries à prendre dans des endroits différents, ne serait-il pas préférable de prendre l'une comme série d'entraînement et l'autre comme série de tests?
Yonatan Simson
263

Ensemble de formation: ensemble d'exemples utilisés pour l'apprentissage: adaptation aux paramètres du classificateur Dans le cas du multicouche du perceptron (MLP), nous utiliserions l'ensemble de formation pour trouver les poids «optimaux» avec la règle de rétroportage

Jeu de validation: un ensemble d'exemples utilisés pour ajuster les paramètres d'un classificateur Dans le cas MLP, nous utiliserions le jeu de validation pour trouver le nombre «optimal» d'unités cachées ou déterminer un point d'arrêt pour l'algorithme de rétro-propagation

Ensemble de tests: ensemble d'exemples utilisés uniquement pour évaluer les performances d'un classifieur parfaitement formé. Dans le cas du MLP, nous utiliserions le test pour estimer le taux d'erreur après avoir choisi le modèle final (taille du MLP et poids réels). Après avoir évalué le modèle final sur l’ensemble de test, VOUS NE DEVEZ PAS régler le modèle plus loin!

Pourquoi séparer les ensembles de test et de validation? L'estimation du taux d'erreur du modèle final sur les données de validation sera biaisée (inférieure au taux d'erreur réel) car le jeu de validation est utilisé pour sélectionner le modèle final. Après avoir évalué le modèle final sur le jeu de tests, VOUS NE DEVEZ PAS régler le modèle. plus loin!

source: Introduction à l'analyse des modèles, Université A & M Ricardo Gutierrez-OsunaTexas, Université A & M du Texas

mohsen najafzadeh
la source
42
+1 pour "VOUS NE DEVEZ PAS accorder le modèle plus loin!"
Stmax
6
Quelle est la différence entre "ajuster les paramètres" et "régler les paramètres"?
Metariat
18
@stmax Pour ne pas être pédant, mais une fois que nous avons l'erreur de test final et que nous ne sommes PAS satisfaits du résultat, que faisons-nous si nous ne pouvons plus ajuster notre modèle? ... Je me suis souvent interrogé sur ce cas.
Spacey
5
@Tarantula, vous pouvez continuer à ajuster le modèle, mais vous devrez collecter un nouvel ensemble de test. Bien sûr, personne ne le fait;) mais le violer (surtout si vous le répétez plusieurs fois) pourrait amener votre modèle à s’adapter à l’ensemble de tests, ce qui donnerait des scores irréalistes / trop optimistes.
Stmax
4
Je pense que cette nomenclature est déroutante. Vous avez raison de dire "VOUS NE DEVEZ PAS affiner le modèle" après avoir utilisé le jeu de tests, mais ... quel domaine vous vouliez faire? Arrêtez de travailler dessus? En réalité, vous avez besoin de toute une hiérarchie d'ensembles de tests. 1: jeu de validation - utilisé pour ajuster un modèle, 2: jeu de test, utilisé pour évaluer un modèle et voir si vous devez revenir à la planche à dessin, 3: jeu de super-test, utilisé dans l'algorithme final-final pour voir comment bon c'est, 4: hyper-test set, utilisé après que les chercheurs aient développé des algorithmes MNIST pendant 10 ans pour voir à quel point ils sont incroyablement suréquipés ... etc.
Timmmm
66

Mes 5 années d’expérience en informatique m’ont appris que rien n’est meilleur que la simplicité.

Le concept de jeux de données 'Formation / Validation croisée / Test' est aussi simple que cela. Lorsque vous avez un grand ensemble de données, il est recommandé de le scinder en 3 parties:

++ Training set (60% de l'ensemble de données d'origine): Ceci est utilisé pour construire notre algorithme de prédiction. Notre algorithme essaie de s’accorder aux bizarreries des jeux de données d’entraînement. Au cours de cette phase, nous créons généralement plusieurs algorithmes afin de comparer leurs performances lors de la phase de validation croisée.

++ Ensemble de validation croisée (20% de l'ensemble de données d'origine): Cet ensemble de données permet de comparer les performances des algorithmes de prédiction créés à partir de l'ensemble d'apprentissage. Nous choisissons l'algorithme qui offre les meilleures performances.

++ Ensemble de tests (20% de l'ensemble de données d'origine): Nous avons maintenant choisi notre algorithme de prédiction préféré, mais nous ne savons pas encore comment il fonctionnera avec des données du monde réel totalement invisibles. Nous appliquons donc notre algorithme de prédiction choisi sur notre ensemble de tests afin de voir son comportement afin de nous donner une idée de la performance de notre algorithme sur des données invisibles.

Remarques:

-Il est très important de garder à l'esprit que le saut de la phase de test n'est pas recommandé, car l'algorithme qui a bien fonctionné pendant la phase de validation croisée ne signifie pas vraiment qu'il est vraiment le meilleur, car les algorithmes sont comparés sur la base de la croix -validation set et ses bizarreries et ses bruits ...

-Pendant la phase de test, le but est de voir comment notre modèle final va fonctionner dans la nature, donc si sa performance est très mauvaise, nous devrions répéter tout le processus à partir de la phase de formation.

innovIsmail
la source
1
il est facile et déroutant de se référer aux ensembles en tant que phases et inversement.
Matt O'Brien
2
@innovIsmail Et si je saute l'étape de validation? Supposons que j'ai plusieurs algorithmes et que je les ai formés sur le train, puis que je les applique tous au jeu de test, puis que je sélectionne celui qui a la meilleure performance sur le jeu de test
KevinKim
3
Il me semble que vous sautez simplement l'étape de test.
Mihai Danila
1
> comparer les performances des algorithmes de prédiction - qu'est-ce qu'un "algorithme" dans ce contexte? votre modèle n'est-il pas un algorithme? Doit-on construire plusieurs modèles et les former séparément pour obtenir plusieurs phases à valider?
Boppity Bop
2
Cette simplicité est une illusion car, dans le cas d’une taille d’échantillon peu importante, on obtiendra des algorithmes prédictifs et des résultats de validation sensiblement différents si les divisions aléatoires avaient été répétées.
Frank Harrell
33

À chaque étape où il vous est demandé de prendre une décision (c.-à-d. Choisissez une option parmi plusieurs), vous devez disposer d’un ensemble / partition supplémentaire pour jauger la précision de votre choix, de sorte que vous ne sélectionniez pas simplement le résultat le plus favorable du hasard et confondre la fin de la distribution avec le centre 1 . La gauche est le pessimiste. La droite est l'optimiste. Le centre est le pragmatique. Soyez le pragmatique.

entrez la description de l'image ici

Étape 1) Formation: chaque type d'algorithme a ses propres options de paramètres (nombre de couches dans un réseau de neurones, nombre d'arbres dans une forêt aléatoire, etc.). Pour chacun de vos algorithmes, vous devez choisir une option. C'est pourquoi vous avez un ensemble de formation.

Étape 2) Validation: Vous avez maintenant une collection d’algorithmes. Vous devez choisir un algorithme. C'est pourquoi vous avez un ensemble de test. La plupart des gens choisissent l'algorithme qui fonctionne le mieux sur l'ensemble de validation (et ce n'est pas grave). Toutefois, si vous ne mesurez pas le taux d'erreur de votre algorithme le plus performant sur l'ensemble de tests, et que vous vous contentez de définir son taux d'erreur sur l'ensemble de validation, vous vous trompez aveuglément du «meilleur scénario possible» pour le «scénario le plus probable». C'est une recette pour un désastre.

Étape 3) Test: Je suppose que si vos algorithmes n’avaient aucun paramètre, vous n’auriez pas besoin d’une troisième étape. Dans ce cas, votre étape de validation serait votre étape de test. Peut-être que Matlab ne vous demande pas de paramètres ou que vous avez choisi de ne pas les utiliser, ce qui est la source de votre confusion.

1 Il est souvent utile d'entrer dans chaque étape en supposant (hypothèse nulle) que toutes les options sont identiques (par exemple, tous les paramètres sont identiques ou tous les algorithmes sont identiques), d'où ma référence à la distribution.

2 Cette image n'est pas la mienne. Je l'ai pris sur ce site: http://www.teamten.com/lawrence/writings/bell-curve.png

Ryan Zotti
la source
3
Je pense que la première phrase résume la réponse fondamentale à cette question mieux qu'aucune des autres réponses. "A chaque étape où il vous est demandé de prendre une décision (c.-à-d. Choisissez une option parmi plusieurs options), vous devez disposer d'un ensemble / partition supplémentaire pour évaluer la précision de votre choix ..."
kobejohn le
Question: Si je veux trouver le meilleur RandomForest (RF) et prétendre qu’il n’ya qu’un seul hyper paramètre de RF, qui correspond au nombre d’arbres (N), à l’étape 1, j’exécute beaucoup de RF avec différents N pour construire la forêt. ; à l'étape 2, appliquez-les au test de validation et choisissez le RF avec N * qui donne l'erreur la plus faible par rapport au test de validation, puis à l'étape 3, j'applique RF avec N * à l'ensemble de tests et obtenez une estimation non biaisée de l'erreur de test réelle de ce RF avec N *. Mais je pourrais appliquer tous mes RF sur le jeu de test et choisir celui qui présente la plus faible erreur de test, qui peut ne pas être N *. Alors c’est le point de faire la validation étape 2?
KevinKim
1
@KevinKim: Si vous appliquez votre jeu de test à tous les RF et utilisez les résultats pour faire un choix supplémentaire (choisissez un autre modèle), vous venez de répéter l'étape de validation. Vous avez décidé de "Je dois obtenir l'erreur la plus faible avec un modèle!". C’est le but de la formation et de la validation, PAS des tests. Le test ne concerne que: j'ai formé et sélectionné un modèle, voyons maintenant comment il fonctionne "en général". De toute évidence, le jeu de tests "général" ne représente qu'une autre tranche de données qui peut ou non être sur-ajustée, mais le fait est que VOUS n'avez pas sciemment adapté votre modèle à celui-ci par choix.
Honeybear
La division en trois points est une approche très courante (A) pour vous donner une idée de la façon dont le modèle généralise (B) avec un effort limité et (C) des données observées limitées. Si vous voulez faire mieux en termes de (B), vous pouvez faire ce que vous suggérez: Utilisez différents jeux de validation pour peaufiner la généralisation. Avec des données limitées appelées validation croisée: répétez la formation et la validation avec différents ensembles de formation et de test (pour les réseaux de neurones où la formation peut durer des semaines, cela ne fait rien).
Honeybear
1
MAIS: La façon dont le modèle fonctionnera "dans le monde réel" est encore inconnue. Il ne s’agit que d’une hypothèse validée et testée, à savoir que les données invisibles seront performantes et que, à des fins scientifiques, cela est généralement jugé suffisant. Si vous allez maintenant à nouveau générer et sélectionner des modèles, jusqu'à ce que l'un d'entre eux corresponde parfaitement au jeu de validation ET au jeu de tests, vous avez alors dégénéré votre jeu de tests en un jeu de validation. Mieux vaut valider la validation croisée pour cela. Si vos performances sont constamment moins bonnes sur l'ensemble de tests, il est toujours possible que vos données soient simplement mal fractionnées et que vous souhaitiez redémarrer avec des ensembles ré-mélangés.
Honeybear
21

Il ne s'ensuit pas que vous deviez fractionner les données de quelque manière que ce soit. Le bootstrap peut fournir des estimations d'erreur quadratique moyenne plus petites de la précision de la prévision en utilisant l'ensemble de l'échantillon pour le développement et le test du modèle.

Frank Harrell
la source
1
Vous ne préconisez donc pas la validation croisée par le fractionnement de grands ensembles de données pour les essais / validation de modèles prédictifs?
OFish
9
Non, sauf si le jeu de données est énorme ou si le rapport signal / bruit est élevé. La validation croisée n’est pas aussi précise que le bootstrap de mon expérience et n’utilise pas la taille totale de l’échantillon. Dans de nombreux cas, vous devez répéter la validation croisée 50 à 100 fois pour obtenir une précision adéquate. Mais dans vos jeux de données comportant plus de 20 000 sujets, des approches simples telles que la validation sur échantillon fractionné sont souvent acceptables.
Frank Harrell
2
C'est vraiment bon à savoir! Merci. Et venant de vous, c’est une excellente "source" d’informations. À votre santé!
OFish
1
La validation par échantillon fractionné est souvent pire que l’amorçage rigoureux. Créez un aspect de bootstrap externe qui répète toutes les étapes d'apprentissage supervisées (toutes les étapes utilisant Y). Le bootstrap d'optimisme d'Efron-Gong estime à quel point le modèle prédictif se désagrège en données non vues par l'algorithme, sans retenir les données.
Frank Harrell
1
Oui en insistant sur la répétition . C'est la division simple qui pose problème.
Frank Harrell
13

Une tâche d'apprentissage machine typique peut être visualisée comme la boucle imbriquée suivante:

while (error in validation set > X) {
    tune hyper-parameters
    while (error in training set > Y) {
        tune parameters
    }
}

En général, la boucle externe est exécutée par l'utilisateur sur le jeu de validation et la boucle interne par la machine sur le jeu d'apprentissage . Vous avez ensuite besoin d'un troisième ensemble de tests pour évaluer les performances finales du modèle.

En d'autres termes, l'ensemble de validation est l'ensemble de formation pour l'homme.

Yu Zhou
la source
9

Une façon de penser à ces trois ensembles est que deux d'entre eux ( traininget validation) viennent du passé, tandis que l' testensemble vient du "futur". Le modèle doit être construit et ajusté en utilisant des données du "passé" ( training/ validationdata), mais jamais des testdonnées provenant du "futur".

Pour donner un exemple concret, supposons que nous construisions un modèle permettant de prédire les performances futures des joueurs de baseball. Nous utiliserons les données de 1899-2014 pour créer un testet un validationensemble. Une fois que le modèle est construit et ajusté sur ces données, nous utiliserons les données de 2015 (en réalité dans le passé!) Comme jeu de test, ce qui, du point de vue du modèle, apparaît comme des données "futures" et n'a aucune influence sur la création du modèle. . (Évidemment, en théorie, nous pourrions attendre les données de 2016 si nous voulons vraiment!)

Évidemment, j'utilise des guillemets partout, car l'ordre temporel réel des données peut ne pas coïncider avec l'avenir (par définition, toute la génération de données a probablement eu lieu dans le passé réel). En réalité, l' testensemble peut simplement être des données de la même période que les training/ validationsets, que vous "conservez". De cette manière, cela n’a eu aucune influence sur le réglage du modèle, mais les données conservées ne proviennent pas du futur.

thecity2
la source
4
Après avoir lu toutes les autres réponses, cette réponse m'a permis de "cliquer" pour moi! Vous vous entraînez avec le train, vérifiez que le jeu de validation n'est pas sur-équipé (et que le modèle et les hyperparamètres fonctionnent avec des "données inconnues"), puis vous évaluez avec le jeu de tests - "nouvelles données" - si vous le souhaitez ou non. avoir des pouvoirs prédictifs ..!
Stolsvik
C'est une bonne façon de voir les choses en ce sens que les testdonnées ne doivent jamais faire partie du processus de formation: et si nous les traitons comme des données "futures", alors cela devient une erreur impossible à commettre.
javadba
7

La plupart des algorithmes d'exploration de données supervisés suivent ces trois étapes:

  1. L' ensemble de formation est utilisé pour construire le modèle. Il contient un ensemble de données contenant des variables de cible et de prédicteur préclassifiées.
  2. Généralement, un ensemble de données ou un ensemble de test à conserver sert à évaluer l'efficacité du modèle avec des données hors de l'ensemble d'apprentissage. L'ensemble de test contient les données de résultats préclassifiées, mais elles ne sont pas utilisées lorsque les données de l'ensemble de test sont exécutées dans le modèle jusqu'à la fin, lorsque les données préclassifiées sont comparées aux résultats du modèle. Le modèle est ajusté pour minimiser les erreurs sur l'ensemble de test.
  3. Un autre jeu de données de maintien ou de validation est utilisé pour évaluer le modèle ajusté à l'étape 2, où, une fois encore, les données de l'ensemble de validation sont exécutées par rapport au modèle ajusté et les résultats comparés aux données préclassifiées non utilisées.
Scott
la source
4

Certaines personnes ont des doutes quant à la raison pour laquelle nous utilisons un ensemble de validation. Je vais donc donner une explication simple et intuitive de ce qui se passera si vous n'utilisez pas un ensemble de données de validation.

Si vous n'utilisez pas de jeu de validation, vous devrez plutôt choisir des hyperparamètres et décider quand arrêter la formation en fonction des performances du modèle sur le jeu de données test. Si vous décidez à quel moment arrêter l'entraînement en fonction des performances du modèle sur l'ensemble de données de test, vous pouvez simplement arrêter l'entraînement lorsque le modèle fonctionne correctement sur l'ensemble de données de test. Ensuite, lorsque vous rapportez vos résultats, vous signalez la précision du jeu de données de test. Le problème, c’est que vous pourriez dire que votre modèle s’est très bien comporté alors qu’en fait, c’est une variation aléatoire qui lui a permis de faire mieux sur le seul ensemble de tests.

Si vous utilisez plutôt un ensemble de validation pour décider du moment où vous souhaitez arrêter l'entraînement, la précision du modèle sur l'ensemble de tests reflète davantage la manière dont il exécute la tâche en général, et montre que vous n'avez pas optimisé les performances. modèle juste pour bien performer sur le set de test.

dan dan
la source
2

J'aimerais ajouter d'autres très bonnes réponses ici en soulignant une approche relativement nouvelle en apprentissage automatique appelée "confidentialité différentielle" (voir les articles de Dwork; le blog Win Vector pour plus d'informations). L'idée permet de réutiliser le jeu de test sans compromettre les performances du modèle final. Dans un contexte typique, l’ensemble de tests sert uniquement à estimer les performances finales; idéalement, on n'est même pas autorisé à le regarder.

Comme il est bien décrit dans ce blog Win Vector (voir également les autres entrées), il est possible "d'utiliser" l'ensemble de tests sans biaiser les performances du modèle. Ceci est fait en utilisant la procédure spéciale appelée "confidentialité différentielle". L'apprenant n'aura pas d'accès direct à l'ensemble de tests.

Vladislavs Dovgalecs
la source
-1

Mon idée est que ces options dans la boîte à outils des réseaux neuronaux sont pour éviter les overfitting. Dans cette situation, les poids ne sont spécifiés que pour les données d'apprentissage et ne montrent pas la tendance globale. Grâce à un ensemble de validation, les itérations sont adaptables aux endroits où la diminution de l’erreur d’apprentissage des données entraîne une diminution des données de validation et l’augmentation de l’erreur de validation; avec la diminution des erreurs dans les données d’entraînement, cela démontre le phénomène de surajustement.

Azade
la source
J'ose dire que les ensembles de tests ajoutent un contrôle de cohérence à l'ensemble du processus. Vous pouvez avoir une courbe d’entraînement qui reproduit la courbe de validation / perte à chaque époque. Mais si la précision de votre ensemble de tests ne s’améliore pas avec les époques ou les chars, vous n’aurez rien de bon. Vous suramassez.
Agcala le