Precisamos de um conjunto de testes ao usar a validação cruzada k-fold?

21

Eu tenho lido sobre a validação do k-fold e quero ter certeza de que entendi como isso funciona.

Eu sei que, para o método de validação, os dados são divididos em três conjuntos, e o conjunto de teste é usado apenas no final para avaliar o desempenho do modelo, enquanto o conjunto de validação é usado para ajustar os hiperparâmetros, etc.

No método k-fold, ainda mantemos um conjunto de testes para o final e usamos apenas os dados restantes para treinamento e ajuste de hiperparâmetro, ou seja, dividimos os dados restantes em k fold e, em seguida, usamos a precisão média após o treinamento a cada dobra (ou qualquer métrica de desempenho que escolhermos para ajustar nossos hiperparâmetros)? Ou não usamos um conjunto de testes separado e simplesmente dividimos o conjunto de dados inteiro em k dobras (se esse for o caso, suponho que consideramos a precisão média nas dobras k como a nossa precisão final)?

b_pcakes
fonte
3
Depende do que você quer fazer. Se você deseja uma estimativa de desempenho generalizada, sim, o modelo deve fazer testes em dados nunca antes vistos. Mas isso não significa que deve ser uma iteração de holdout, você pode usar a reamostragem para alcançar o mesmo objetivo.
Firebug
2
... o que significa que sempre que você usa resultados de "validação" para otimização de hiperparâmetro / ajuste do modelo, você precisa de outro estágio de validação que seja independente desse ajuste. Nos dois estágios, você pode usar, por exemplo, validação cruzada ou reter (ou fora da inicialização ou ...). CV + CV é chamado CV aninhado,
aguarde

Respostas:

9

No método K-Fold, ainda mantemos um conjunto de testes para o final e usamos apenas os dados restantes para treinamento e ajuste de hiperparâmetros (ou seja, dividimos os dados restantes em k dobras e depois usamos a precisão média após treinando com cada dobra (ou qualquer métrica de desempenho que escolhermos) para ajustar nossos hiperparâmetros)?

Sim. Como regra, o conjunto de testes nunca deve ser usado para alterar seu modelo (por exemplo, seus hiperparâmetros).

No entanto, a validação cruzada às vezes pode ser usada para outros fins que não o ajuste de hiperparâmetro, por exemplo, determinar até que ponto a divisão trem / teste afeta os resultados.

Franck Dernoncourt
fonte
6
+1, mas convém mencionar a validação cruzada aninhada como uma alternativa ao conjunto de validação cruzada + teste.
Ameba diz Reinstate Monica
1
"às vezes pode ser usado para outros fins que não o ajuste do hiperparâmetro". Por exemplo, você pode usar a validação cruzada para fins de validação (= teste de casos desconhecidos para medir erro de generalização).
Cbeleites suporta Monica
3

Geralmente sim. Basicamente, você está falando sobre a troca de viés e variância. Se você usar dados para construir seu modelo (dados de treinamento e validação) e iterar em diferentes hiperparâmetros e tentar maximizar uma métrica de desempenho médio, seu modelo poderá não ser tão bom quanto o indicado.

No entanto, especialmente em conjuntos de dados pequenos, a divisão adicional pode levar a um conjunto de treinamento ainda menor e resultar em um modelo ruim.

coomish
fonte
2
Esta não é uma resposta real para a pergunta.
Michael R. Chernick 13/02/19
Você pode expandir isso para adicionar algo à resposta aceita e aos comentários bastante detalhados?
Mdewey
1

Idealmente, a validação (para seleção do modelo) e o teste final não devem ser misturados. No entanto, se o seu valor k for alto ou for omitido, o uso do resultado do teste para orientar a seleção do modelo é menos prejudicial. Nesse cenário, se você estiver escrevendo um trabalho acadêmico, não faça isso (a menos que se preocupe em explicar) - o que significa sempre ter um conjunto de testes separado. Se você estiver construindo um projeto prático, não há problema em fazê-lo.

ymeng
fonte