Existe-t-il une règle de base pour diviser au mieux les données en ensembles de formation et de validation? Un partage égal 50/50 est-il conseillé? Ou y a-t-il des avantages évidents à avoir plus de données d'entraînement par rapport aux données de validation (ou vice versa)? Ou ce choix dépend-il à peu près de l'application?
J'utilise principalement 80% / 20% des données de formation et de validation, respectivement, mais j'ai choisi cette division sans aucune raison de principe. Une personne plus expérimentée en apprentissage automatique peut-elle me conseiller?
machine-learning
robguinness
la source
la source
Réponses:
Il existe deux problèmes concurrents: avec moins de données d'entraînement, vos estimations de paramètres ont une plus grande variance. Avec moins de données de test, vos statistiques de performances auront 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 qu'aucune des deux variations ne soit 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 aucune répartition unique ne vous donnera une variance satisfaisante dans vos estimations. Si vous avez 100 000 instances, peu importe que vous choisissiez une répartition 80:20 ou une division 90:10 (en effet, vous pouvez choisir d'utiliser moins de données d'entraînement si votre méthode est particulièrement intensive en calcul).
En supposant que vous ayez suffisamment de données pour effectuer des données de test retenues appropriées (plutôt qu'une validation croisée), ce qui suit est un moyen instructif de gérer les variances:
la source
Vous seriez surpris d'apprendre que 80/20 est un ratio assez courant, souvent appelé le principe de Pareto . C'est généralement une valeur sûre si vous utilisez ce ratio.
Cependant, selon la méthodologie de formation / validation que vous employez, le ratio peut changer. Par exemple: si vous utilisez la validation croisée 10 fois, vous vous retrouverez avec un ensemble de validation de 10% à chaque fois.
Il y a eu quelques recherches pour déterminer quel est le bon rapport entre l'ensemble d'apprentissage et l'ensemble de validation :
Dans leur conclusion, ils spécifient une formule:
Ce qu'ils entendent par complexité est:
En prenant la première règle empirique (c'est-à-dire que l'ensemble de validation doit ê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 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.
la source
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%
la source
in the modern big data era, where, for example, you might have a million examples in total, then the trend is that your dev (cross validation) and test sets have been becoming a much smaller percentage of the total.
Il suggère que cela pourrait être 99,5: 0,25: 0,25.Eh bien, vous devriez penser à une dernière chose.
Si vous avez un jeu de données vraiment volumineux, comme 1 000 000 d'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 plupart de la variance des données et vous pouvez facilement dire que le modèle fonctionne bien sur la base de ces 5000 exemples en test et en développement.
la source
Supposons que vous ayez moins de données, je suggère d'essayer 70%, 80% et 90% et tester ce qui donne un meilleur résultat. Dans le cas de 90%, il y a des chances que pour 10% de test, vous obteniez une précision médiocre.
la source
Peut-être un 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 aléatoirement avec remplacement (c'est-à-dire rééchantillonner, comme dans le bootstrap statistique) n cas sur les n initiaux , la probabilité qu'un cas individuel soit sélectionné dans le 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.
la source
Tout dépend des données disponibles. Si vous avez une quantité considérable de données, 80/20 est un bon choix comme mentionné ci-dessus. Mais si vous ne faites pas de validation croisée avec une répartition 50/50, cela peut vous aider beaucoup plus et vous empêcher de créer un modèle sur-ajustant vos données d'entraînement.
la source