Validação cruzada e otimização de parâmetros

12

Tenho uma pergunta sobre a otimização de parâmetros quando uso a validação cruzada de 10 vezes.

Quero perguntar se os parâmetros devem ser corrigidos ou não durante o treinamento do modelo de cada dobra, ou seja, (1) selecione um conjunto de parâmetros otimizados para a precisão média de cada dobra.

ou

(2) Eu deveria encontrar o parâmetro otimizado para cada dobra e, em seguida, cada dobra usa diferentes parâmetros otimizados para treinar seu modelo, testar nos dados de teste da dobra, respectivamente, e finalmente avaliar a precisão de cada dobra como resultado?

Qual é o método correto para validação cruzada? Muito obrigado.

Kevin
fonte
Esta pergunta: stats.stackexchange.com/questions/1826/… tem duas ótimas respostas (pontuação mais alta), acho que elas poderiam ajudá-lo em sua pergunta. O segundo é exatamente o que você deseja. OBS .: Gostaria de escrever isso como um comentário, mas não posso fazê-lo, por isso respondi.
1030 Augusto

Respostas:

11

Vamos primeiro distinguir entre dois conjuntos de parâmetros: parâmetros do modelo (por exemplo, pesos para características em regressão) e parâmetros para o algoritmo de aprendizado (e hiperparâmetros). O objetivo da validação cruzada é identificar parâmetros de aprendizado que generalizem bem em todas as amostras da população que aprendemos em cada dobra.

Mais especificamente: pesquisamos globalmente no espaço sobre parâmetros de aprendizado, mas em cada dobra, corrigimos parâmetros de aprendizado e aprendemos os parâmetros do modelo. O resultado deve ser aprender parâmetros que produzam, em média, o melhor desempenho em todas as dobras. Em seguida, podemos usá-los para treinar um modelo em todo o conjunto de dados.

Joel
fonte
Desculpe, o tipo de parâmetro que questionei é hiperparâmetros, como você disse.
Kevin
Como os parâmetros c e g no libSVM. Então, eu deveria usar o mesmo c e g para treinar o modelo de cada dobra que o método (2) mencionado acima e escolher o melhor? Muito obrigado.
Kevin
2
Os itens (1) e (2) acima não estavam claros para mim, então não os referi explicitamente. Você deve pesquisar o espaço da c & g que maximiza sua métrica de tarefa quando calculada a média entre as dobras. Portanto, você define c & g com algum valor, executa o procedimento de treinamento e teste em todas as dobras, calcula a média delas, mantém essa pontuação, modifica c ou g e repete. Por fim, você encontra as melhores c & g e pode treinar o modelo final em todos os seus dados.
Joel
Muito obrigado. Eu tento resumir as respostas. Os dados foram divididos em 10 vezes: dobra-1: (trem1, teste1) ... dobra-10: (trem10, teste10) Em seguida, use a (c1, g1) para treinar e testar na dobra-1 à dobra-10, média da precisão de todas as dobras. Tente outro (c2, g2) para fazer o mesmo processo ... repita até encontrar o melhor (c, g). E a melhor precisão média do (c, g) será o resultado da minha validação cruzada de 10 vezes.
Kevin
1
Sons corrigir ...
Joel
15

Eu acho que a resposta atualmente aceita é incompleta de uma maneira infeliz. Eu não concordo com a frase

O objetivo da validação cruzada é identificar parâmetros de aprendizado que generalizem bem em todas as amostras da população que aprendemos em cada dobra.

Esta é realmente uma aplicação muito importante da validação cruzada, mas não a única. Normalmente, você quer fazer duas coisas:

  1. Crie o melhor modelo possível
  2. Obtenha uma impressão precisa de quão bem ele executa

Agora, para concluir o objetivo 1, dependendo do seu algoritmo, talvez seja necessário ajustar alguns hiperparâmetros e isso é realmente feito com validação cruzada. Mas isso ainda não ajuda no objetivo 2. Para isso, você precisa basicamente aninhar a validação cruzada, assim:

  • Separar dados inteiros em n dobras
  • Para cada um, dobre os dados de treinamento novamente em subpastas
  • Use a validação cruzada nas subpastas para aprender bons hiperparâmetros
  • Com esses hiperparâmetros, construa um modelo nos dados de treinamento dessa dobra
  • Teste o modelo nos dados de teste
  • Repita na próxima dobra

Para construir um bom modelo, você só precisa da validação cruzada interna. Você ainda precisará fazer isso para obter um bom modelo. Mas, para obter uma boa estimativa do desempenho do modelo, é necessário executar todo o processo de construção do modelo dentro de um esquema de validação cruzada. Isso também inclui etapas como imputação etc.

Erik
fonte
1
Erik, você poderia fornecer uma referência de como fazer esse processo?
Chao
Oi @ Err, a ordem geral das análises seria: (1) Encontre os parâmetros de ajuste ideais com validação cruzada, (2) Modelo de reciclagem (com os parâmetros de ajuste obtidos) em todo o conjunto de dados de treinamento para obter os parâmetros do modelo e (3) ) Veja a estimativa geral de desempenho desse método usando a validação cruzada aninhada? O que me deixa confuso é que diferentes hiperparâmetros podem ser escolhidos no processo do CV do nester, de modo que o CV aninhado não estaria investigando especificamente o desempenho geral dos parâmetros do hiperparâmetro / modelo que obtivemos acima?
Michelle
Estou um pouco atrasado para a conversa, mas gostaria de ressaltar que esse método também é chamado de "aninhado" ou "validação cruzada dupla" e aqui está uma boa explicação de Tom Fearn e um exemplo com código na scikit- aprender documentação
MD004 11/07/19