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?
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:
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.
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%
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.
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.
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. .
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.