252 votes

Existe-t-il une règle empirique pour diviser un ensemble de données en ensembles de formation et de validation ?

Existe-t-il une règle empirique sur la meilleure façon de diviser les données en ensembles de formation et de validation ? Une répartition égale de 50/50 est-elle conseillée ? Ou y a-t-il des avantages évidents à disposer de plus de données d'apprentissage que de données de validation (ou vice versa) ? Ou bien ce choix dépend-il essentiellement de l'application ?

J'ai surtout utilisé une répartition 80% / 20% de données de formation et de validation, respectivement, mais j'ai choisi cette division sans aucune raison de principe. Quelqu'un de plus expérimenté en apprentissage automatique peut-il me conseiller ?

275voto

Ben Allison Points 2646

Il y a deux préoccupations concurrentes : avec moins de données de formation, vos estimations de paramètres ont une plus grande variance. Avec moins de données de test, votre statistique de performance aura une plus grande variance. D'une manière générale, vous devez vous préoccuper de diviser les données de manière à ce que la variance ne soit pas trop élevée, ce qui est davantage lié au nombre absolu d'instances dans chaque catégorie qu'au pourcentage.

Si vous avez un total de 100 instances, vous êtes probablement coincé avec la validation croisée, car aucun fractionnement unique ne vous donnera une variance satisfaisante dans vos estimations. Si vous disposez de 100 000 instances, le choix d'une répartition 80:20 ou 90:10 n'a pas vraiment d'importance (vous pouvez même choisir d'utiliser moins de données d'entraînement si votre méthode est particulièrement gourmande en ressources informatiques).

En supposant que vous disposiez de suffisamment de données pour effectuer un test correct sur les données de test (plutôt qu'une validation croisée), la méthode suivante est une façon instructive d'appréhender les variances :

  1. Répartissez vos données entre la formation et les tests (80/20 est en effet un bon point de départ).
  2. Divisez le formation les données en formation et en validation (là encore, 80/20 est une répartition équitable).
  3. Sous-échantillonnez des sélections aléatoires de vos données d'entraînement, entraînez le classificateur avec celles-ci et enregistrez les performances sur l'ensemble de validation.
  4. Essayez une série d'exécutions avec différentes quantités de données d'entraînement : échantillonnez aléatoirement 20 % de ces données, disons 10 fois, et observez les performances sur les données de validation, puis faites de même avec 40 %, 60 %, 80 %. Vous devriez constater à la fois une meilleure performance avec plus de données, mais aussi une variance plus faible entre les différents échantillons aléatoires.
  5. Pour avoir une idée de la variance due à la taille des données de test, effectuez la même procédure en sens inverse. Entraînez-vous sur toutes vos données d'entraînement, puis échantillonnez aléatoirement un pourcentage de vos données de test. validation un certain nombre de fois et observez les performances. Vous devriez maintenant constater que la performance moyenne sur de petits échantillons de vos données de validation est à peu près la même que la performance sur toutes les données de validation, mais que la variance est beaucoup plus élevée avec un plus petit nombre d'échantillons de test.

68voto

Lirik Points 17868

Vous seriez surpris d'apprendre que le rapport 80/20 est un rapport assez courant, souvent appelé le Le principe de Pareto . C'est généralement un pari sûr si vous utilisez ce ratio.

Cependant, selon la méthodologie de formation/validation que vous utilisez, le ratio peut changer. Par exemple, si vous utilisez une validation croisée à 10 niveaux, vous obtiendrez un ensemble de validation de 10 % à chaque niveau.

Des recherches ont été menées sur quel est le bon rapport entre l'ensemble d'apprentissage et l'ensemble de validation ? :

La fraction de motifs réservée à l'ensemble de validation doit être de inversement proportionnelle à la racine carrée du nombre de patrons libres. paramètres réglables.

Dans leur conclusion, ils précisent une formule :

Le rapport de taille entre l'ensemble de validation (v) et l'ensemble d'apprentissage (t), v/t, s'échelonne comme suit ln(N/h-max), où N est le nombre de familles de reconnaissances et h-max est la plus grande complexité de ces familles.

Ce qu'ils entendent par complexité est :

Chaque famille de reconnaissances est caractérisée par sa complexité, qui est la suivante peut ou non être liée à la Dimension VC la description longueur de la description, le nombre de paramètres réglables, ou d'autres mesures de la complexité.

En prenant la première règle empirique (c'est-à-dire que l'ensemble de validation devrait être inversement proportionnel à la racine carrée du nombre de paramètres ajustables libres), vous pouvez conclure que si vous avez 32 paramètres ajustables, la racine carrée de 32 est ~5,65, la fraction devrait être 1/5,65 ou 0,177 (v/t). En gros, 17,7% devraient être réservés à la validation et 82,3% à la formation.

57voto

Upul Bandara Points 3376

L'année dernière, j'ai suivi le cours d'apprentissage automatique en ligne du professeur Andrew Ng. Sa recommandation était :

Formation : 60%

Validation croisée : 20%

Essais : 20%

24voto

DavidS1992 Points 319

Eh bien, vous devriez penser à une autre chose.

Si vous disposez d'un très grand ensemble de données, comme 1 000 000 d'exemples, la répartition 80/10/10 peut s'avérer inutile, car 10 % = 100 000 exemples peuvent être trop nombreux pour simplement dire que le modèle fonctionne bien.

Peut-être que 99/0,5/0,5 est suffisant car 5 000 exemples peuvent représenter la majeure partie de la variance de vos données et vous pouvez facilement dire que le modèle fonctionne bien sur la base de ces 5 000 exemples en test et dev.

N'utilisez pas 80/20 juste parce que vous avez entendu dire que c'était bien. Pensez à l'objectif de l'ensemble de tests.

1voto

user16263 Points 121

Peut-être qu'un rapport 63,2% / 36,8% est un choix raisonnable. La raison en est que si vous avez un échantillon de taille totale n et que vous souhaitiez effectuer un échantillonnage aléatoire avec remplacement (c'est-à-dire un ré-échantillonnage, comme dans le bootstrap statistique). n cas sur le nombre initial de n la probabilité qu'un cas individuel soit sélectionné dans le ré-échantillon serait d'environ 0,632, à condition que n n'est pas trop petite, comme expliqué ici : https://stats.stackexchange.com/a/88993/16263

Pour un échantillon de n \=250, la probabilité qu'un cas individuel soit sélectionné pour un ré-échantillonnage à 4 chiffres est de 0,6329. Pour un échantillon de n \=20000, la probabilité est de 0,6321.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X