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:
- set d'entraînement
- ensemble de validation
- 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:
- Quelle est la différence entre le jeu de validation et le jeu de test?
- L'ensemble de validation est-il vraiment spécifique au réseau de neurones? Ou c'est optionnel.
- Pour aller plus loin, existe-t-il une différence entre validation et test dans le contexte du machine learning?
machine-learning
validation
xiaohan2012
la source
la source
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.
Réponses:
Normalement, pour effectuer un apprentissage supervisé, vous avez besoin de deux types d’ensembles de données:
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é.
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:
La phase de validation est souvent divisée en deux parties :
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 .
la source
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
la source
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.
la source
À 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.
É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
la source
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.
la source
Une tâche d'apprentissage machine typique peut être visualisée comme la boucle imbriquée suivante:
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.
la source
Une façon de penser à ces trois ensembles est que deux d'entre eux (
training
etvalidation
) viennent du passé, tandis que l'test
ensemble vient du "futur". Le modèle doit être construit et ajusté en utilisant des données du "passé" (training
/validation
data), mais jamais destest
donné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
test
et unvalidation
ensemble. 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'
test
ensemble peut simplement être des données de la même période que lestraining
/validation
sets, 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.la source
test
donné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.La plupart des algorithmes d'exploration de données supervisés suivent ces trois étapes:
la source
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.
la source
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.
la source
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.
la source