Posso usar um pequeno conjunto de validação?

15

Entendo o raciocínio por trás da divisão dos dados em um conjunto de teste e um conjunto de validação. Também entendo que o tamanho da divisão dependerá da situação, mas geralmente variará de 50/50 a 90/10.

Eu construí um RNN para corrigir a ortografia e começar com um conjunto de dados de frases de ~ 5m. Raspo frases de 500 mil e depois treino com as restantes ~ 4,5 milhões de frases. Quando o treinamento é concluído, pego meu conjunto de validação e calculo a precisão.

O interessante é que, depois de apenas 4% do meu conjunto de validação, tenho uma precisão de 69,4% e esse percentual não muda em mais de 0,1% em qualquer direção. Eventualmente, acabei de reduzir a validação porque o número está bloqueado em 69,5%.

Então, por que cortar 10% para a validação quando eu provavelmente poderia conseguir 1%? Isso importa?

Mark Cramer
fonte
4
Uma resposta geral é que um tamanho de amostra maior do que eu diria que 10.000 será um subconjunto muito representativo da população. Aumentar a amostra, se ela tiver sido desenhada corretamente, pode ser caro, enquanto a estimativa que você vê será a mesma. Procure um conceito de intervalo de confiança.
Alexey Burnakov

Respostas:

20

Conjuntos de validação maiores fornecem estimativas mais precisas do desempenho fora da amostra. Mas, como você notou, em algum momento essa estimativa pode ser tão precisa quanto você precisa, e você pode fazer algumas previsões grosseiras quanto ao tamanho da amostra de validação necessária para atingir esse ponto.

Para precisão simples / incorreta da classificação, você pode calcular o erro padrão da estimativa como (desvio padrão de uma variável de Bernouilli), em que é a probabilidade de uma classificação correta e é o tamanho do conjunto de validação. É claro que você não conhece , mas pode ter uma ideia do seu alcance. Por exemplo, digamos que você espere uma precisão entre 60-80% e que suas estimativas tenham um erro padrão menor que 0,1%: Quão grande deve ser (o tamanho de o conjunto de validação) seja? Para , obtemos: Parap(1p)/npnp

p(1p)/n<0.001
np=0.6
n>0.60.620.0012=240,000
p=0.8obtemos: Portanto, isso nos diz que você pode usar menos de 5% de seus 5 milhões de amostras de dados para validação. Essa porcentagem diminui se você espera um desempenho mais alto ou, especialmente, se estiver satisfeito com um erro padrão mais baixo da sua estimativa de desempenho fora da amostra (por exemplo, com e para um valor <1%, você precisa apenas de 2100 amostras de validação , ou menos de um vigésimo de um por cento dos seus dados).
n>0.80.820.0012=160,000
p=0.7

Esses cálculos também mostram o argumento de Tim em sua resposta, de que a precisão de suas estimativas depende do tamanho absoluto do seu conjunto de validação (ou seja, em ), e não do tamanho relativo ao conjunto de treinamento.n

(Além disso, devo acrescentar que estou assumindo uma amostragem representativa aqui. Se seus dados são muito heterogêneos, talvez seja necessário usar conjuntos de validação maiores apenas para garantir que os dados de validação incluam as mesmas condições, etc., como os dados de seu trem e teste. )

Ruben van Bergen
fonte
14
p(1p)p=1/2p(1p)=1/4p(1p)/n1/4n
11

Uma boa discussão sobre esse problema é fornecida por Andrew Ng em seu curso de Deep Learning no Coursera.org . Como ele observa, as divisões padrão como 8: 2 ou 9: 1 são válidas se seus dados forem pequenos a moderadamente grandes, mas muitos problemas atuais de aprendizado de máquina usam grandes quantidades de dados (por exemplo, milhões de observações, como no seu caso), e nesse cenário, você pode deixar 2%, 1% ou até menos dos dados como um conjunto de testes, levando todos os dados restantes para o seu conjunto de treinamento (ele na verdade argumenta por usar também um conjunto de desenvolvedores). Como ele argumenta, quanto mais dados você alimentar seu algoritmo, melhor para seu desempenho e isso é especialmente verdadeiro para o aprendizado profundo * (ele também observa que esse não deve ser o caso dos algoritmos de aprendizado de máquina que não aprendem profundamente).

Como já observado no comentário de Alex Burn , não se trata realmente do tamanho do seu conjunto de testes, mas da representatividade do seu problema. Normalmente, com um tamanho maior dos dados, esperamos que seja mais representativo, mas isso não precisa ser o caso. Isso é sempre uma troca e você precisa fazer considerações específicas do problema. Não há regras informando que o conjunto de testes não deve ser menor que X casos ou menor que Y% de seus dados.

* - Isenção de responsabilidade: estou repetindo os argumentos de Andrew Ng aqui, não me consideraria um especialista em aprendizado profundo.

Tim
fonte
2
"não se trata realmente do tamanho do seu conjunto de testes, mas da representatividade do seu problema." - provavelmente, uma maneira pitoresca de dizer isso é que não adianta ter um grande conjunto de treinamento para algo que lida com cães e gatos se o seu conjunto de treinamento for quase todo composto por gatos.
JM não é estatístico
Mais especificamente, isso foi na palestra 'Train / Dev / Test sets' na semana 1 do curso 'Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization' (que é a segunda parte de toda a especialização em deep learning)
icc97
2
Aqui está a citação completa da palestra: "Então, neste exemplo, onde você tem um milhão de exemplos, se precisar de apenas 10.000 para o seu desenvolvedor e 10.000 para o seu teste, sua proporção será mais parecida com essa de 10.000 é 1% de 1 milhão, então você terá 98% de treinamento, 1% de desenvolvimento e 1% de teste.E também vi aplicações em que, se você tiver mais de um milhão de exemplos, poderá acabar com 99,5% de treinamento e 0,25% de desenvolvimento, 0,25% de teste Ou talvez um teste de 0,4%, 0,1%. "
icc97
5

Asymptotic Statistical Theory of Overtraining and Cross-Validation1/2NNN=51060.00032=0.032%

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

Jan Kukacka
fonte