Por que não consigo usar o conjunto de testes como conjunto de validação

8

Encontrei em algum lugar que o conjunto de testes não deve ser usado como um conjunto de validação. Por quê?

O conjunto de validação é acionado quando os parâmetros do modelo são fixados e o aprendizado ocorre apenas através do backprop no lote de treinamento.

Então, por que não posso usar dados de teste como dados de validação?

John77
fonte
8
Meu cliente acabou de enviar anúncios em quatro cores diferentes de envelopes, 1000 de cada cor. Os retornos nos envelopes laranja eram 12 em 1000, enquanto os retornos nas outras três cores estavam entre 8 e 11 em 1000. Portanto, meu modelo prevê que os envelopes laranja obtêm os melhores retornos. Vou provar que esse é um bom modelo aplicando-o aos meus dados: sim, de fato, é 100% correto; os retornos eram melhores nos envelopes laranja. Agora posso publicar meu livro de marketing sabendo que seus conselhos foram estatisticamente comprovados. (Este é um exemplo real de um livro real.)
whuber
4
Você pode definir como você está usando os termos "conjunto de teste" e "conjunto de validação"? (Pessoas diferentes querem dizer coisas diferentes por meio delas.) Você também tem um 'conjunto de treinamento'? Como os dados terminam nesses conjuntos diferentes? Etc.
gung - Reinstate Monica
@gung 1000 dados de treinamento, 1000 dados de teste. Treino o modelo, após cada época tento o modelo em dados de validação = dados de teste. Uma alternativa são 950 dados de treinamento, 50 dados de validação, após cada época eu tento o modelo com dados de validação. Qual é a diferença aqui?
precisa saber é o seguinte
@ john77 Acho que minha resposta explica qual é a diferença - para avaliar o desempenho do modelo em novos dados, você precisa usar dados que não foram usados ​​para desenvolver o modelo (por exemplo, ao decidir quando parar de treinar)
seanv507

Respostas:

7

Suponho que você já entenda por que o desempenho no conjunto de treinamento não é representativo do desempenho real do modelo treinado: ajuste excessivo. Os parâmetros que você aprende durante o treinamento são otimizados para o conjunto de treinamento. Se você não for cuidadoso, poderá otimizar demais os parâmetros, levando a um modelo que é realmente muito bom no conjunto de treinamento, mas não generaliza para dados do mundo real completamente invisíveis.

O fato é que, na prática, os "parâmetros" do método de treinamento não são a única coisa que você precisa especificar para um exemplo de aprendizado. Você também tem hiperparâmetros. Agora, esses hiperparâmetros podem ser uma parte explícita do ajuste do modelo (como taxa de aprendizado), mas você também pode ver outras opções como "hiperparâmetros": você escolhe um SVM ou uma rede neural? Se você implementa a parada antecipada, em que momento você para?

Assim como o ajuste excessivo dos parâmetros no conjunto de treinamento, você pode ajustar demais os hiperparâmetros ao conjunto de validação . Assim que você usa os resultados do método no conjunto de validação para informar como faz a modelagem, agora você tem a chance de realizar o overfitting no conjunto de treinamento + conjunto de validação. Talvez esse conjunto de validação específico seja melhor com um SVM do que no caso geral.

Essa é a principal razão pela qual as pessoas separam os conjuntos de validação e teste. Se você usar um aparelho durante o ajuste do modelo - mesmo no nível "hmm, esse método não funciona tão bem, talvez eu deva tentar ..." - os resultados obtidos nesse aparelho não serão totalmente indicativos do geral resultados que você obterá com dados completamente novos. É por isso que você mantenha uma fração dos dados até o muito fim, além do ponto onde você está fazendo todas as decisões sobre o que fazer.

RM
fonte
5

Vou me ater às redes neurais. Observe que algumas pessoas trocam a validação e o conjunto de testes.

Nas redes neurais, você treina até que seu desempenho no conjunto de validação comece a piorar ('treinamento interrompido'). Portanto, os pesos estão sendo influenciados pelo conjunto de validação (apenas não pelo backprop).

Agora você testa sua rede com dados novos (o conjunto de testes) que não foram usados ​​no processo de criação do modelo. Essa mesma abordagem também se aplica ao selecionar hiperparâmetros, por exemplo, nível de abandono / parâmetro de regularização L2 etc.

seanv507
fonte