Por que usar o conjunto de validação e o conjunto de teste?

17

Considere uma rede neural:

Para um determinado conjunto de dados, dividimos em conjunto de treinamento, validação e teste. Suponha que façamos isso na proporção clássica 60:20:20 e evitemos o overfitting validando a rede verificando-a no conjunto de validação. Então, qual é a necessidade de testá-lo no conjunto de testes para verificar seu desempenho?

O erro no conjunto de teste não será um pouco igual ao conjunto de validação, pois para a rede são dados invisíveis, assim como o conjunto de validação, e também os dois são iguais em número?

Em vez disso, não podemos aumentar o conjunto de treinamento mesclando o conjunto de testes para que tenhamos mais dados de treinamento e a rede treine melhor e depois use o conjunto de validação para evitar o ajuste excessivo? Por que não fazemos isso?

user1825567
fonte
4
Você gostaria que fosse o mesmo, mas não pode ter certeza, porque o tocou para otimização de hiperparâmetro e parada antecipada; portanto, você precisa de um conjunto de testes virgem.
Emre
@ Emre Mas os pesos serão ajustados com base no conjunto de treinamento e não no conjunto de validação, portanto o resultado no conjunto de teste e validação não deve ser diferente.
precisa saber é o seguinte
Não, eles não (são ajustados de acordo com o conjunto de treinamento). Isso é para parâmetros regulares.
Emre

Respostas:

22

Vamos supor que você esteja treinando um modelo cujo desempenho depende de um conjunto de hiperparâmetros. No caso de uma rede neural, esses parâmetros podem ser, por exemplo, a taxa de aprendizado ou o número de iterações de treinamento.

Com uma escolha de valores de hiperparâmetro, você usa o conjunto de treinamento para treinar o modelo. Mas, como você define os valores para os hiperparâmetros? É para isso que serve o conjunto de validação . Você pode usá-lo para avaliar o desempenho do seu modelo para diferentes combinações de valores de hiperparâmetros (por exemplo, por meio de um processo de pesquisa em grade) e manter o melhor modelo treinado.

Mas, como o modelo selecionado se compara a outros modelos diferentes? Sua rede neural tem um desempenho melhor do que, digamos, uma floresta aleatória treinada com a mesma combinação de dados de treinamento / teste? Você não pode comparar com base no conjunto de validação, porque esse conjunto de validação fazia parte do ajuste do seu modelo. Você usou para selecionar os valores do hiperparâmetro!

O conjunto de testes permite comparar diferentes modelos de maneira imparcial, baseando suas comparações em dados que não foram usados ​​em nenhuma parte do seu processo de seleção de treinamento / hiperparâmetro.

Pablo Suau
fonte
11

O conjunto de testes e o conjunto de validação cruzada têm finalidades diferentes. Se você abandonar um deles, perde os benefícios:

  • O conjunto de validação cruzada é usado para ajudar a detectar o ajuste excessivo e para auxiliar na pesquisa de hiperparâmetros.

  • O conjunto de testes é usado para medir o desempenho do modelo.

Você não pode usar o conjunto de validação cruzada para medir o desempenho do seu modelo com precisão, porque você ajustará deliberadamente seus resultados para obter a melhor métrica possível, talvez centenas de variações de seus parâmetros. Portanto, é provável que o resultado da validação cruzada seja otimista demais.

Pelo mesmo motivo, você não pode descartar o conjunto de validação cruzada e usar o conjunto de teste para selecionar hiper parâmetros, pois é garantido que você estará superestimando o quão bom é o seu modelo. No mundo ideal, você usa o conjunto de testes apenas uma vez ou de maneira "neutra" para comparar diferentes experimentos.

Se você cruzar a validação, encontrar o melhor modelo e adicionar os dados de teste para treinar, é possível (e em algumas situações talvez muito provável) que seu modelo seja aprimorado. No entanto, você não tem como ter certeza de que isso realmente aconteceu e, mesmo que tenha acontecido, você não tem uma estimativa imparcial do que é o novo desempenho.

Ao assistir a muitas competições do Kaggle, minha experiência é que o ajuste ao teste pelo uso excessivo é algo real e afeta essas competições de maneira ampla. Muitas vezes, há um grupo de concorrentes que escalaram a tabela de classificação pública e selecionaram seu melhor modelo em teste (a tabela de classificação pública é efetivamente um conjunto de testes), embora não sejam tão detalhados na validação cruzada. . . esses concorrentes caem na tabela de classificação quando um novo conjunto de testes é introduzido no final.

Uma abordagem razoável é reutilizar (treinar + cv) os dados para treinar novamente usando os hiperparâmetros encontrados antes do teste. Dessa forma, você treina mais dados e ainda obtém uma medida independente de desempenho no final.

Se você deseja obter mais da validação cruzada, a abordagem usual é a validação cruzada k-fold . Um truque comum nas competições do Kaggle é usar a validação cruzada k-fold e, em vez de combinar novamente os dados em um conjunto de treinamento maior (train + cv), para agrupar ou empilhar os resultados da cv em um metamodelo.

Por fim, sempre verifique se suas divisões para validação e teste são robustas contra uma possível correlação dentro do seu conjunto de dados.

Neil Slater
fonte
1
o que você quer dizer com "robusto contra uma possível correlação dentro do seu conjunto de dados"?
user6903745