web-dev-qa-db-fra.com

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

Existe-t-il une règle générale sur la meilleure façon de diviser les données en ensembles de formation et de validation? Une répartition égale à 50/50 est-elle recommandée? Ou existe-t-il des avantages évidents à disposer de davantage de données d'apprentissage par rapport aux données de validation (ou inversement)? Ou bien ce choix dépend-il beaucoup de l'application?

J'ai principalement utilisé 80%/20% des données de formation et de validation, mais j'ai choisi cette division sans aucune raison de principe. Est-ce que quelqu'un qui a plus d'expérience dans l'apprentissage automatique peut me conseiller?

137
robguinness

Il existe deux problèmes contradictoires: avec moins de données d’entraînement, vos estimations de paramètres ont une variance plus grande. Avec moins de données de test, votre statistique de performance aura une plus grande variance. De manière générale, vous devez vous préoccuper de la division des données de sorte qu'aucune variance ne soit trop élevée, ce qui est davantage lié au nombre absolu d'instances dans chaque catégorie plutôt qu'au pourcentage.

Si vous avez un total de 100 instances, vous êtes probablement bloqué par la validation croisée, car aucune division ne vous donnera une variance satisfaisante de vos estimations. Si vous avez 100 000 occurrences, peu importe que vous choisissiez une répartition 80:20 ou 90:10 (vous pouvez choisir d'utiliser moins de données d'apprentissage si votre méthode nécessite beaucoup de calcul).

En supposant que vous disposiez de suffisamment de données pour traiter correctement les données de test conservées (plutôt que la validation croisée), voici un moyen instructif de maîtriser les écarts:

  1. Divisez vos données en formations et tests (80/20 est en effet un bon point de départ)
  2. Divisez les données training en formation et validation (là encore, 80/20 est une division équitable).
  3. Sous-échantillonnez les sélections aléatoires de vos données d'entraînement, entraînez le classificateur avec cette opération et enregistrez les performances sur le jeu de validation.
  4. Essayez une série d'essais avec différentes quantités de données d'entraînement: échantillonnez au hasard 20% de celles-ci, par exemple 10 fois, et observez les performances des données de validation, puis répétez l'opération avec 40%, 60%, 80%. Vous devriez voir à la fois une performance accrue avec plus de données, mais également une variance inférieure entre les différents échantillons aléatoires
  5. Pour avoir une idée de la variance due à la taille des données de test, suivez la même procédure en sens inverse. Entraînez-vous sur toutes vos données d'entraînement, puis échantillonnez plusieurs fois au hasard un pourcentage de vos données validation 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 identique à celle de toutes les données de validation, mais la variance est beaucoup plus importante lorsque le nombre d'échantillons test est réduit.
162
Ben Allison

Vous seriez surpris de découvrir que 80/20 est un ratio assez courant, souvent appelé le principe Pareto . C'est généralement une valeur sûre si vous utilisez ce ratio.

Toutefois, en fonction de la méthodologie de formation/validation que vous utilisez, le ratio peut changer. Par exemple, si vous utilisez la validation croisée par 10, vous obtiendrez un jeu de validation de 10% à chaque fois.

Il y a eu quelques recherches sur quel est le rapport approprié entre l'ensemble de formation et l'ensemble de validation :

La fraction de modèles réservée à l'ensemble de validation doit être inversement proportionnelle à la racine carrée du nombre de free paramètres ajustables.

Dans leur conclusion, ils spécifient une formule:

Jeu de validation (v) au jeu d’entraînement (t), rapport de taille, v/t, échelles telles que In (N/h-max), où N est le nombre de familles de reconnaisseurs et h-max est la plus grande complexité de ces familles.

Ce qu'ils entendent par complexité est: 

Chaque famille de programmes de reconnaissance est caractérisée par sa complexité, qui peut ou non être liée à la dimension VC , à la description longueur, le nombre de paramètres ajustables ou d’autres mesures de complexité.

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

45
Kiril

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%

Test: 20%

40
Upul Bandara

Eh bien, vous devriez penser à une dernière chose. 

Si vous avez un ensemble de données vraiment volumineux, comme 10 000 000 exemples, la division 80/10/10 peut être inutile, car 10% = 100 000 exemples n'est pas nécessaire pour indiquer que le modèle fonctionne correctement. 

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

3
DavidS1992

Tout dépend des données disponibles. Comme vous avez une quantité considérable de données, 80/20 est un bon choix, comme mentionné ci-dessus. Mais si vous ne le faites pas, une Validation croisée avec un partage 50/50 pourrait vous aider beaucoup plus et vous empêcher de créer un modèle sur-ajustant vos données d'entraînement.

1
Mayank

Peut-être que 63,2%/36,8% est un choix raisonnable. La raison en serait que si vous aviez une taille d'échantillon totale n et que vous vouliez échantillonner de manière aléatoire avec remplacement (ou rééchantillonnage, comme dans le bootstrap statistique) n observations sur les n, la probabilité de sélection d’un cas individuel dans le ré-échantillonnage serait d’environ 0,632, à condition que n ne soit pas trop petit, 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. .

0
user16263

Supposons que vous ayez moins de données, je suggère d'essayer 70%, 80% et 90% et testez pour obtenir un meilleur résultat. Dans le cas de 90%, il est probable que pour 10% des tests, la précision soit médiocre.

0
Rishi Bansal