Como obter hiperparâmetros ótimos após validação cruzada aninhada?

8

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?

RockTheStar
fonte
Isso menciona o scikit-learn, mas tem uma pergunta viável de aprendizado de máquina. Isso não parece fora de tópico para mim.
gung - Restabelece Monica
@ gung sim, obrigado. O scikit-learn é uma parte adicional da questão (um plus para me)
RockTheStar

Respostas:

6

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 .

Firebug
fonte
Obrigado pela sua resposta. Eu tento entender, mas não tenho certeza se entendi. Então, onde exatamente eu obtenho meu melhor conjunto de hiperparâmetros?
RockTheStar
@RockTheStar Eu atualizei a resposta. Basicamente, você reajusta (ou seja, executa o ajuste novamente e depois ajusta o modelo ajustado em todos os dados): é aqui que a sua melhor aposta para os hiperparâmetros ideais.
Firebug
1
Então, basicamente, você está dizendo que o CV aninhado é verificar o desempenho do modelo. E precisamos fazer um CV simples para obter dados completos novamente para obter os parâmetros ideais. Estou certo?
RockTheStar
@RockTheStar Sim, você resumiu tudo corretamente.
Firebug
1
@nafizh Desculpe por demorar tanto para responder à sua pergunta, não tinha visto a notificação (?). Todas as estimativas de desempenho devem ser baseadas no CV aninhado, que você criou para testar sua estratégia de construção de modelo. Para executar o ajuste final do hiperparâmetro, faça o loop interno de todos os dados e escolha o melhor de acordo com o mesmo critério usado no CV aninhado. Em seguida, você o ajusta a todos os dados e esse é o seu modelo final, mas o desempenho preditivo que você atribui a ele é o que você obteve no CV aninhado .
Firebug #