Em geral, se tivermos um grande conjunto de dados, podemos dividi-lo em (1) treinamento, (2) validação e (3) teste. Usamos a validação para identificar os melhores hiperparâmetros na validação cruzada (por exemplo, C no SVM) e, em seguida, treinamos o modelo usando os melhores hiperparâmetros com o conjunto de treinamento e aplicamos o modelo treinado ao teste para obter o desempenho.
Se tivermos um pequeno conjunto de dados, não podemos criar um conjunto de treinamento e teste (amostras insuficientes). Portanto, faremos a validação cruzada (dobra k, deixar um fora, etc.) para avaliar o desempenho do modelo.
Vi que a validação cruzada aninhada (repetida ou estratificada) foi usada na configuração de um pequeno conjunto de dados, ou seja, para gerar desempenho generalizado do modelo e otimizar a seleção de parâmetros. Minha pergunta é: como posso obter os melhores hiperparâmetros na validação cruzada aninhada (repetida / não repetida)? Estou interessado em fazer isso no scikit-learn, se possível. Estou um pouco confuso sobre como fazê-lo.
Eu li vários recursos, mas nenhum me deu a resposta definitiva para esta pergunta:
Validação cruzada aninhada para seleção de modelo
Validação cruzada aninhada e seleção de recurso: quando executar a seleção de recurso?
Respostas:
Visão geral
Como o @RockTheStar concluiu corretamente nos comentários, a validação cruzada aninhada é usada apenas para acessar a estimativa de desempenho do modelo. Dissociados disso, para encontrar os melhores hiperparâmetros, precisamos fazer um ajuste simples com validação cruzada em todos os dados.
Em detalhes:
Ajuste e validação (loops de reamostragem interna e externa)
No loop interno, você executa o ajuste do hiperparâmetro, os modelos são treinados em dados de treinamento e validados em dados de validação. Você encontra os parâmetros ideais e treina seu modelo em todos os dados do loop interno . Embora tenha sido treinado para otimizar o desempenho nos dados de validação, a avaliação é enviesada.
Portanto, este modelo é testado com os dados de teste, portanto, espero que não haja viés, fornecendo uma estimativa de desempenho.
O modelo final
Agora que você conhece o desempenho esperado do seu modelo, precisa treiná-lo com todos os seus dados. Mas nosso modelo não é simplesmente o algoritmo, é todo o processo de construção do modelo!
Portanto, execute o ajuste do hiperparâmetro com todos os seus dados e com as mesmas especificações do loop interno. Com os melhores hiperparâmetros, treine seu modelo final com todos os dados. O desempenho esperado desse modelo final é o que você avaliou com validação cruzada aninhada anteriormente.
Para reiterar, os hiperparâmetros do modelo final é o que você espera fornecer o desempenho encontrado na etapa de Ajuste e validação .
fonte