Como escolho um modelo a partir desta saída [validação cruzada externa]?
Resposta curta: você não.
Trate a validação cruzada interna como parte do procedimento de ajuste do modelo. Isso significa que o ajuste, incluindo o ajuste dos hiperparâmetros (é aqui que a validação cruzada interna se esconde), é como qualquer outra rotina de eliminação de modelo.
A validação cruzada externa estima o desempenho desta abordagem de ajuste de modelo. Para isso, você usa as suposições usuais
- k
model.fitting.procedure
- k
k
Então, como posso usar o CV aninhado para a seleção de modelos?
O CV interno faz a seleção.
Parece-me que selecionar o melhor modelo dentre os modelos K vencedores não seria uma comparação justa, pois cada modelo foi treinado e testado em diferentes partes do conjunto de dados.
k
- Não tendo os mesmos dados de teste: como você deseja afirmar posteriormente que os resultados do teste são generalizados para dados nunca vistos, isso não pode fazer diferença.
- Não tendo os mesmos dados de treinamento:
- se os modelos são estáveis, isso não faz diferença: estável aqui significa que o modelo não muda (muito) se os dados de treinamento são "perturbados", substituindo alguns casos por outros casos.
- se os modelos não são estáveis, três considerações são importantes:
- k
- k
- Se a instabilidade for um problema real, você não poderá extrapolar bem o desempenho para o modelo "real".
O que me leva à sua última pergunta:
Que tipos de análise / verificações posso fazer com as pontuações que recebo das dobras K externas?
- verifique a estabilidade das previsões (use validação cruzada iterada / repetida)
verifique a estabilidade / variação dos hiperparâmetros otimizados.
Por um lado, hiperparâmetros dispersos amplamente podem indicar que a otimização interna não funcionou. Por outro lado, isso pode permitir que você decida sobre os hiperparâmetros sem a etapa de otimização dispendiosa em situações semelhantes no futuro. Com o caro, não me refiro aos recursos computacionais, mas ao fato de que essas informações "custam" que podem ser melhor utilizadas para estimar os parâmetros "normais" do modelo.
verifique a diferença entre a estimativa interna e externa do modelo escolhido. Se houver uma grande diferença (o interior é muito otimista), existe o risco de a otimização interna não funcionar bem por causa do ajuste excessivo.
pergunta de update @ user99889: O que fazer se o CV externo encontrar instabilidade?
Primeiro de tudo, detectar no loop externo do CV que os modelos não produzem previsões estáveis nesse aspecto não difere realmente de detectar que o erro de previsão é muito alto para a aplicação. Esse é um dos resultados possíveis da validação (ou verificação) do modelo, o que implica que o modelo que temos não é adequado a seu propósito.
No comentário ao @davips, eu estava pensando em lidar com a instabilidade no currículo interno - isto é, como parte do processo de otimização do modelo.
Mas você certamente está certo: se mudarmos nosso modelo com base nas descobertas do CV externo, mais uma rodada de testes independentes do modelo alterado será necessária.
No entanto, a instabilidade no CV externo também seria um sinal de que a otimização não foi bem configurada - portanto, encontrar instabilidade no CV externo implica que o CV interno não penalizou a instabilidade da maneira necessária - esse seria o meu principal ponto de vista. crítica em tal situação. Em outras palavras, por que a otimização permite / leva a modelos com excesso de ajuste?
No entanto, existe uma peculiaridade aqui: o IMHO pode desculpar a nova alteração do modelo "final" após uma análise cuidadosa das circunstâncias exatas : como detectamos o super ajuste, qualquer alteração proposta (menos df / mais restritiva ou agregação) ao modelo estar na direção de menos ajuste excessivo (ou pelo menos hiperparâmetros menos propensos a ajuste excessivo). O objetivo do teste independente é detectar o excesso de ajuste - o ajuste insuficiente pode ser detectado por dados que já foram usados no processo de treinamento.
Portanto, se estivermos falando, digamos, sobre reduzir ainda mais o número de variáveis latentes em um modelo PLS que sejam comparativamente benignas (se a alteração proposta for um tipo de modelo totalmente diferente, digamos PLS em vez de SVM, todas as apostas serão canceladas ), e eu ficaria ainda mais relaxado com isso se soubesse que estamos em um estágio intermediário de modelagem - afinal, se os modelos otimizados ainda são instáveis, não há dúvida de que são necessários mais casos. Além disso, em muitas situações, você precisará realizar estudos projetados para testar adequadamente vários aspectos do desempenho (por exemplo, generalização para dados adquiridos no futuro). Ainda assim, eu insistiria que o processo completo de modelagem precisaria ser relatado e que as implicações dessas alterações tardias precisariam ser discutidas cuidadosamente.
Além disso, a agregação incluindo uma estimativa de desempenho analógica e imediata do CV seria possível a partir dos resultados já disponíveis - que é o outro tipo de "pós-processamento" do modelo que eu estaria disposto a considerar benigno aqui. Mais uma vez, seria melhor se o estudo fosse elaborado desde o início para verificar se a agregação não oferece vantagem sobre predições individuais (que é outra maneira de dizer que os modelos individuais são estáveis).
Atualização (2019): quanto mais penso sobre essas situações, mais venho a favor da abordagem "validação cruzada aninhada aparentemente sem aninhamento" .
Além da excelente resposta dos cebeleites (+1), a idéia básica é que a validação cruzada seja usada para avaliar o desempenho de um método para ajustar um modelo, não o próprio modelo. Se você precisar executar a seleção do modelo, será necessário executá-lo independentemente em cada dobra do procedimento de validação cruzada, pois é parte integrante do procedimento de ajuste do modelo. Se você usar um procedimento de seleção de modelo com base na validação cruzada, isso significa que você acaba com a validação cruzada aninhada. É útil considerar o objetivo de cada validação cruzada - uma é para seleção de modelo e a outra para estimativa de desempenho.
Eu faria meu modelo final ajustando o modelo (incluindo seleção de modelo) a todo o conjunto de dados, depois de usar a validação cruzada aninhada para ter uma idéia do desempenho que eu poderia razoavelmente esperar obter desse modelo.
fonte
get an idea of the performance
?Acho que ninguém realmente respondeu à primeira pergunta. Por "validação cruzada aninhada", acho que ele quis dizer combiná-la com o GridSearch. Normalmente, o GridSearch possui um CV incorporado e aceita um parâmetro de quantas dobras queremos testar. Combinando esses dois, acho uma boa prática, mas o modelo do GridSearch e do CrossValidation não é o seu modelo final. Você deve escolher os melhores parâmetros e treinar um novo modelo com todos os seus dados, eventualmente, ou até fazer uma validação cruzada aqui também em dados não vistos e, se o modelo for realmente bom, você treinará em todos os seus dados. Esse é o seu modelo final.
fonte
GridSearchCV(refit=True)
na verdade reajusta um modelo nos dados COMPLETOS usando os melhores parâmetros, de modo que uma etapa extra não é necessária. Veja docs