Compendium de techniques de validation croisée


43

Je me demande si quelqu'un est au courant d'un recueil de techniques de validation croisée avec une discussion des différences entre elles et un guide sur le moment d'utiliser chacune d'elles. Wikipedia a une liste des techniques les plus courantes, mais je suis curieux de savoir s'il existe d'autres techniques et s'il existe des taxonomies à leur sujet.

Par exemple, je viens de rencontrer une bibliothèque qui me permet de choisir l’une des stratégies suivantes:

  • Tendre
  • Bootstrap
  • K Validation croisée
  • Laisser un
  • Validation croisée stratifiée
  • Validation croisée stratifiée équilibrée
  • Stratifiés tenir
  • Bootstrap stratifié

et j'essaie de comprendre ce que stratifiés et équilibrés signifient bootstrap, hold out ou CV.

Nous pouvons également transformer ce message en wiki de communauté si les gens le souhaitent et rassembler ici une discussion sur les techniques ou les taxonomies.


Cette excellente question serait encore plus utile si nous pouvions associer des explications à chacune des méthodes.
mkt

Réponses:


16

Vous pouvez ajouter à cette liste:

  • Validation croisée répétée
  • Validation croisée Laisser sortir du groupe
  • Out-of-bag (pour forêts aléatoires et autres modèles en sac)
  • Le 632+ bootstrap

Je n'ai pas vraiment beaucoup de conseils sur l'utilisation de ces techniques ou sur le moment opportun. Vous pouvez utiliser le paquetage caret dans R pour comparer la validation croisée CV, Boot, Boot632, Laisser partir, Laisser sortir, et Sortir du sac.

En général, j'utilise habituellement le boostrap car il nécessite moins de temps de calcul que les CV répétés à plis multiples, ou les CV non mémorisés. Boot632 est mon algorithme de choix car il ne nécessite pas beaucoup plus de calculs que le bootstrap, et a montré qu’il était meilleur que la validation croisée ou le bootstap de base dans certaines situations.

J'utilise presque toujours des estimations d'erreur hors du sac pour des forêts aléatoires, plutôt qu'une validation croisée. Les erreurs hors du sac sont généralement non biaisées et les forêts aléatoires prennent suffisamment de temps pour être calculées telles quelles.


3
Des conseils pour savoir quand utiliser chacun de ceux-ci?
whuber

16

La validation croisée des plis en K divise vos données de manière aléatoire en partitions K, et vous définissez l'une de ces pièces K comme cas de test et regroupez les autres pièces K-1 en tant que données d'apprentissage. Leave One Out (LOO) est le cas particulier dans lequel vous prenez vos N éléments de données et effectuez un N-fold CV. En un sens, Hold Out est un autre cas particulier, dans lequel vous ne choisissez qu'un seul de vos K plis comme test et ne faites pas pivoter tous les K plis.

Autant que je sache, un CV multiplié par 10 est à peu près la rigueur, car il utilise vos données efficacement et permet également d'éviter les choix de partition malchanceux. Hold Out n'utilise pas efficacement vos données, et LOO n'est pas aussi robuste (ou quelque chose du genre), mais 10 fois est exactement ce qu'il vous faut.

Si vous savez que vos données contiennent plus d'une catégorie et qu'une ou plusieurs catégories sont beaucoup plus petites que les autres, il est possible que certaines de vos K partitions aléatoires ne contiennent même aucune des petites catégories, ce qui serait mauvais. Pour vous assurer que chaque partition est raisonnablement représentative, vous utilisez une stratification: divisez vos données en catégories, puis créez des partitions aléatoires en choisissant de manière aléatoire et proportionnelle dans chaque catégorie.

Toutes ces variations sur K-fold CV choisissent parmi vos données sans remplacement. L'amorçage choisit les données avec remplacement, de sorte que la même donnée peut être incluse plusieurs fois et que certaines données peuvent ne pas être incluses du tout. (Chaque "partition" aura également N éléments, contrairement au pli K, dans laquelle chaque partition aura N éléments.)

(Je dois admettre que je ne sais pas exactement comment le bootstrap serait utilisé dans un CV, cependant. Le principe du test et du CV est de s'assurer que vous ne testez pas sur des données sur lesquelles vous avez été formé, afin une idée plus réaliste de la manière dont votre technique et vos coefficients pourraient fonctionner dans le monde réel).

EDIT: Remplacer "Hold Out n'est pas efficace" par "Hold Out ne fait pas une utilisation efficace de vos données" pour aider à clarifier, par les commentaires.


1
Quand vous dites que "Tenir n'est pas efficace", je ne suis pas sûr de suivre. Qu'entendez-vous par efficacité ici? Contrairement aux plis en N réguliers, Hold Out ne tourne pas entre les plis, il devrait donc être plus rapide. Voulez-vous dire au lieu de cela qu'il est pire de lutter contre la suralimentation que le CV normal à plis multiples?
Amelio Vazquez-Reina

2
Par "efficace", je veux dire qu'il n'utilise pas vos données efficacement. La beauté de K-fold CV est que 100% de vos données sont utilisées pour la formation et que 100% de vos données sont utilisées pour des tests, ce qui permet une utilisation efficace de vos données. Bien entendu, la clé est que toutes vos données ne sont pas utilisées simultanément pour les tests et la formation, ce qui produirait des résultats de test optimistes (sur-adaptation). En faisant une division statique, Hold Out indique par exemple qu'un tiers de vos données ne sera jamais utilisé pour la formation et que deux tiers de vos données ne seront jamais utilisées à des fins de test, ce qui gaspillerait beaucoup d'informations.
Wayne

@Wayne L'estimateur de réserve n'est-il pas asymptotiquement non biaisé ? En outre, une CV simple à plis k est plus sujette à une erreur de type II qu'une CV répétée.
chl

@chl: Je pense que vous avez raison sur les deux points. Je n'ai pas utilisé de CV à plis multiples répétés, mais la variance devrait être plus faible, ce qui aiderait.
Wayne


1

... et un guide pour savoir quand utiliser chacun d'eux ...

Malheureusement, ce problème est plus difficile que l'on ne le mérite. La validation croisée a au moins deux utilisations principales: la sélection d’un modèle et l’évaluation de ses performances.

En gros, si vous utilisez une variante de CV qui divise les données en utilisant un ratio train-à-test élevé, cela peut être meilleur pour l'évaluation. L'utilisation d'un ensemble de formation plus large imitera plus précisément la performance de l'ajustement du modèle sur l'ensemble de données complet.

Mais un ratio train-test élevé peut être pire pour la sélection. Imaginez qu'il existe vraiment un "meilleur" modèle que vous "devriez" choisir, mais votre jeu de données est assez volumineux. Ensuite, les modèles trop grands qui sur-ajustent légèrement auront presque les mêmes performances CV que le "meilleur" modèle (car vous estimerez que leurs paramètres parasites sont négligeables). Le caractère aléatoire des données et de la procédure de CV / fractionnement vous amène souvent à choisir un modèle de surajustement au lieu du modèle véritablement "meilleur".

Voir Shao (1993), "Sélection de modèle linéaire par validation croisée" pour une théorie asymptotique plus ancienne dans le cas de la régression linéaire. Yang (2007), "Cohérence de la validation croisée pour la comparaison des procédures de régression" et Yang (2006), "Comparaison des méthodes d'apprentissage pour la classification" donnent une théorie asymptotique pour des problèmes de régression et de classification plus généraux. Mais il est difficile d'obtenir des conseils rigoureux sur les échantillons finis .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.