Puis-je utiliser un petit ensemble de validation?

15

Je comprends le raisonnement derrière la division des données en un ensemble de test et un ensemble de validation. Je comprends également que la taille de la scission dépendra de la situation mais variera généralement de 50/50 à 90/10.

J'ai construit un RNN pour corriger l'orthographe et commencer avec un ensemble de données de ~ 5m de phrases. Je rase 500k de phrases, puis je m'entraîne avec les ~ 4,5m de phrases restantes. Une fois la formation terminée, je prends mon jeu de validation et calcule la précision.

La chose intéressante est qu'après seulement 4% de mon ensemble de validation, j'ai une précision de 69,4% et ce pourcentage ne change pas de plus de 0,1% dans les deux sens. Finalement, je viens de couper la validation, car le nombre est bloqué à 69,5%.

Alors pourquoi couper 10% pour la validation alors que je pourrais probablement m'en tirer avec 1%? Est-ce que ça importe?

Mark Cramer
la source
4
Une réponse générale est qu'un échantillon plus grand que je dirais que 10 000 sera un sous-ensemble très représentatif de la population. Augmenter l'échantillon, s'il avait été correctement tiré, peut coûter cher alors que l'estimation que vous voyez sera à peu près la même. Recherchez un concept d'intervalle de confiance.
Alexey Burnakov,

Réponses:

20

Des ensembles de validation plus grands donnent des estimations plus précises des performances hors échantillon. Mais comme vous l'avez remarqué, à un moment donné, cette estimation peut être aussi précise que vous en avez besoin, et vous pouvez faire des prédictions approximatives quant à la taille de l'échantillon de validation dont vous avez besoin pour atteindre ce point.

Pour une précision de classification correcte / incorrecte simple, vous pouvez calculer l'erreur-type de l'estimation comme (écart-type d'une variable de Bernouilli), oùpest la probabilité d'une classification correcte etnest la taille de l'ensemble de validation. Bien sûr, vous ne connaissez pasp, mais vous pourriez avoir une idée de sa portée. Par exemple, supposons que vous vous attendiez à une précision comprise entre 60 et 80%, et que vous souhaitiez que vos estimations aient une erreur standard inférieure à 0,1%: p(1-p)/npnp Quelle doit êtrela taille den(la taille de l'ensemble de validation)? Pourp=0,6on obtient: n> 0,6 - 0,6 2

p(1-p)/n<0,001
np=0,6 Pourp=0,8on obtient: n>0,8-0,82
n>0,6-0,620,0012=240,000
p=0,8 Cela nous indique donc que vous pourriez vous en sortir en utilisant moins de 5% de vos 5 millions d'échantillons de données pour la validation. Ce pourcentage diminue si vous vous attendez à des performances plus élevées, ou surtout si vous êtes satisfait d'une erreur standard inférieure de votre estimation de performance hors échantillon (par exemple avecp=0,7et pour un se <1%, vous n'avez besoin que de 2100 échantillons de validation , soit moins d'un vingtième pour cent de vos données).
n>0,8-0,820,0012=160,000
p=0,7

Ces calculs mettent également en évidence le point soulevé par Tim dans sa réponse, à savoir que la précision de vos estimations dépend de la taille absolue de votre ensemble de validation (c'est-à-dire sur ), plutôt que de sa taille par rapport à l'ensemble d'entraînement.n

(Je pourrais également ajouter que je suppose un échantillonnage représentatif ici. Si vos données sont très hétérogènes, vous devrez peut-être utiliser des ensembles de validation plus grands juste pour vous assurer que les données de validation incluent toutes les mêmes conditions, etc., que vos données de train et de test. )

Ruben van Bergen
la source
14
p(1-p)p=1/2p(1-p)=1/4p(1-p)/n1/4n
11

Une bonne discussion de ce problème est fournie par Andrew Ng dans son cours Deep Learning sur Coursera.org . Comme il le fait remarquer, les répartitions standard comme 8: 2 ou 9: 1 sont valides si vos données sont petites à modérément grandes, mais de nombreux problèmes d'apprentissage automatique actuels utilisent d'énormes quantités de données (par exemple, des millions d'observations comme dans votre cas), et dans un tel scénario, vous pourriez laisser 2%, 1%, ou même moins des données en tant qu'ensemble de test, en prenant toutes les données restantes pour votre ensemble d'entraînement (il plaide en fait pour utiliser également un ensemble de développement). Comme il le fait valoir, plus vous alimentez votre algorithme en données, meilleures sont ses performances et cela est particulièrement vrai pour le deep learning * (il note également que cela ne doit pas être le cas pour les algorithmes de machine learning non-deep learning).

Comme déjà remarqué dans les commentaires d' Alex Burn , il ne s'agit pas vraiment de la taille de votre ensemble de test, mais de sa représentativité pour votre problème. Habituellement, avec une plus grande taille des données, nous espérons qu'elles seront plus représentatives, mais cela ne doit pas être le cas. C'est toujours un compromis et vous devez faire des considérations spécifiques au problème. Il n'y a pas de règles indiquant que l'ensemble de tests ne doit pas être inférieur à X cas, ni inférieur à Y% de vos données.

* - Avertissement: je répète les arguments d'Andrew Ng ici, je ne me considérerais pas comme un spécialiste de l'apprentissage en profondeur.

Tim
la source
2
"il ne s'agit pas vraiment de la taille de votre ensemble de test, mais de sa représentativité pour votre problème." - probablement une façon pittoresque de dire les choses, il est inutile d'avoir un grand ensemble d'entraînement pour quelque chose qui traite des chiens et des chats si votre ensemble d'entraînement est presque entièrement composé de chats.
JM n'est pas statisticien le
Plus précisément, c'était dans la conférence `` Train / Dev / Test sets '' de la semaine 1 du cours `` Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization '' (qui est le
pt.2 de
2
Voici la citation complète de la conférence: "Donc, dans cet exemple où vous avez un million d'exemples, si vous avez besoin de seulement 10 000 pour votre dev et 10 000 pour votre test, votre ratio sera plus comme ceci 10 000 est 1% de 1 million de sorte que vous Je vais avoir 98% de train, 1% de dev, 1% de test. Et j'ai aussi vu des applications où, si vous avez encore plus d'un million d'exemples, vous pourriez vous retrouver avec 99,5% de train et 0,25% de dev, 0,25% de test . Ou peut-être un test de 0,4%, 0,1%. "
icc97
5

Dans l'article Asymptotic Statistical Theory of Overtraining and Cross-Validationde Shun-ichi Amari et al. [1] ils étudient la quantité optimale d'échantillons à exclure en tant qu'ensemble de validation (aux fins d'un arrêt précoce) et concluent que la répartition optimale est1/2N, où Nest le nombre d'échantillons disponibles. Dans ton casN=5dix6 et la répartition optimale est 0,00032=0,032%. Selon la formule, 1580 échantillons devraient être optimaux dans votre cas.

[1] https://www.ncbi.nlm.nih.gov/pubmed/18255701

Jan Kukacka
la source