C'est drôle que la réponse la plus votée ne réponde pas vraiment à la question :) j'ai donc pensé qu'il serait bon de l'étayer avec un peu plus de théorie - principalement tirée de "Data Mining: Practical Machine Learning Tools and Techniques" et de Tom Mitchell. "Apprentissage automatique" .
Introduction.
Nous avons donc un classificateur et un ensemble de données limité, et une certaine quantité de données doit aller dans l'ensemble d'apprentissage et le reste est utilisé pour les tests (si nécessaire, un troisième sous-ensemble utilisé pour la validation).
Le dilemme auquel nous sommes confrontés est le suivant: pour trouver un bon classi fi cateur, le "sous-ensemble de formation" doit être aussi grand que possible, mais pour obtenir une bonne estimation d'erreur, le "sous-ensemble de test" doit être aussi grand que possible - mais les deux sous-ensembles sont tirés de la même piscine.
Il est évident que l'ensemble d'entraînement devrait être plus grand que l'ensemble de test - c'est-à-dire que le fractionnement ne devrait pas être 1: 1 (l'objectif principal est de s'entraîner , pas de tester ) - mais il n'est pas clair où le fractionnement devrait être.
Procédure d'exclusion.
La procédure de fractionnement du "surensemble" en sous-ensembles est appelée méthode d'exclusion . Notez que vous pouvez facilement être malchanceux et que des exemples d'une certaine classe peuvent être manquants (ou surreprésentés) dans l'un des sous-ensembles, qui peuvent être adressés via
- échantillonnage aléatoire, qui garantit que chaque classe est correctement représentée dans tous les sous-ensembles de données - la procédure est appelée rétention stratifiée
- échantillonnage aléatoire avec un processus répété de formation, de test et de validation en plus - ce que l'on appelle le maintien stratifié répété
Dans une procédure d'exclusion unique (non répétée), vous pourriez envisager d'échanger les rôles des données de test et de formation et de faire la moyenne des deux résultats, mais cela n'est plausible qu'avec une répartition 1: 1 entre les séries de formation et de test, ce qui n'est pas acceptable (voir Introduction ). Mais cela donne une idée, et une méthode améliorée (appelée à la place la validation croisée ) - voir ci-dessous!
Validation croisée.
En validation croisée, vous décidez d'un nombre fixe de plis (partitions des données). Si nous utilisons trois plis, les données sont divisées en trois partitions égales et
- nous utilisons 2/3 pour la formation et 1/3 pour les tests
- et répétez la procédure trois fois afin qu'au final, chaque instance ait été utilisée une seule fois pour les tests.
C'est ce qu'on appelle la triple validation croisée , et si la strati fi cation est également adoptée (ce qui est souvent vrai), elle est appelée triple validation croisée stratifiée .
Mais, voilà, la méthode standard n'est pas la division 2/3: 1/3. Quotting "Data Mining: Practical Machine Learning Tools and Techniques" ,
La méthode standard consiste à [...] utiliser une validation croisée multipliée par 10. Les données sont divisées au hasard en 10 parties dans lesquelles la classe est représentée dans les mêmes proportions que dans l'ensemble de données complet. Chaque partie se déroule à son tour et le programme d'apprentissage est formé sur les neuf dixièmes restants; puis son taux d'erreur est calculé sur l'ensemble de retenue. Ainsi, la procédure d'apprentissage est exécutée au total 10 fois sur différents ensembles de formation (chacun ayant beaucoup en commun). Enfin, les 10 estimations d'erreur sont moyennées pour donner une estimation d'erreur globale.
Pourquoi 10? Parce que ".. Des tests approfondis sur de nombreux ensembles de données, avec différentes techniques d'apprentissage, ont montré que 10 est à peu près le bon nombre de plis pour obtenir la meilleure estimation d'erreur, et il existe également des preuves théoriques qui corroborent cela .." Je n'ai pas Je n'ai pas trouvé les tests approfondis et les preuves théoriques qu'ils voulaient dire, mais celui-ci semble être un bon début pour creuser davantage - si vous le souhaitez.
Ils disent simplement
Bien que ces arguments ne soient nullement concluants et que le débat continue de faire rage dans les cercles de l'apprentissage automatique et de l'exploration de données sur le meilleur schéma d'évaluation, la validation croisée 10 fois est devenue la méthode standard en termes pratiques. [...] De plus, il n'y a rien de magique dans le nombre exact 10: 5 ou 20 fois la validation croisée est probablement aussi bonne.
Bootstrap, et - enfin! - la réponse à la question d'origine.
Mais nous ne sommes pas encore arrivés à la réponse, pourquoi le 2/3: 1/3 est souvent recommandé. Mon point de vue est qu'il est hérité de la méthode bootstrap .
Il est basé sur un échantillonnage avec remplacement. Auparavant, nous plaçions un échantillon du "grand ensemble" dans exactement l'un des sous-ensembles. Le bootstraping est différent et un échantillon peut facilement apparaître à la fois dans la formation et dans l'ensemble de test.
Examinons un scénario particulier où nous prenons un ensemble de données D1 de n instances et l'échantillons n fois avec remplacement, pour obtenir un autre ensemble de données D2 de n instances.
Regardez maintenant de près.
Étant donné que certains éléments de D2 seront (presque certainement) répétés, il doit y avoir des instances dans l'ensemble de données d'origine qui n'ont pas été sélectionnées: nous les utiliserons comme instances de test.
Quelle est la probabilité qu'une instance particulière n'ait pas été récupérée pour D2 ? La probabilité d'être capté à chaque prise est de 1 / n, donc l'inverse est (1 - 1 / n) .
Lorsque nous multiplions ces probabilités ensemble, c'est (1 - 1 / n) ^ n qui est e ^ -1 qui est d'environ 0,3. Cela signifie que notre ensemble de tests sera d'environ 1/3 et l'ensemble d'entraînement sera d'environ 2/3.
Je suppose que c'est la raison pour laquelle il est recommandé d'utiliser le fractionnement 1/3: 2/3: ce rapport est tiré de la méthode d'estimation bootstrap.
Envelopper.
Je veux terminer avec une citation du livre d'exploration de données (que je ne peux pas prouver mais supposer correcte) où ils recommandent généralement de préférer la validation croisée 10 fois:
La procédure d'amorçage peut être le meilleur moyen d'estimer l'erreur pour de très petits ensembles de données. Cependant, à l'instar de la validation croisée avec omission, elle présente des inconvénients qui peuvent être illustrés en considérant une situation spéciale et artificielle [...] un ensemble de données complètement aléatoire avec deux classes. Le taux d'erreur réel est de 50% pour toute règle de prédiction, mais un schéma qui a mémorisé l'ensemble d'entraînement donnerait un score de resubstitution parfait de 100% de sorte que les instances de formation = 0, et le bootstrap 0,632 mélangera cela avec un poids de 0,368 à donnent un taux d'erreur global de seulement 31,6% (0,632 ¥ 50% + 0,368 ¥ 0%), ce qui est trompeusement optimiste.
C'est le problème de la généralisation - c'est-à-dire, dans quelle mesure notre hypothèse classera correctement les exemples futurs qui ne font pas partie de l'ensemble de formation. Veuillez voir cet exemple fantastique, ce qui s'est passé dans le cas où votre modèle ne correspondrait qu'aux données que vous avez et non à une nouvelle: loi de Titius-Bode
la source
Jusqu'à présent, @andreiser a donné une réponse brillante à la deuxième partie de la question d'OP concernant la répartition des données de formation / test, et @niko a expliqué comment éviter le surapprentissage, mais personne n'a compris le mérite de la question: pourquoi utiliser des données différentes pour la formation et l'évaluation nous aide à éviter le sur-ajustement.
Nos données sont divisées en:
Il est important de comprendre quels sont les différents rôles des instances de validation et de test.
Voir la page 222 de The Elements of Statistical Learning: Data Mining, Inference, and Prediction pour plus de détails.
la source