Quando a validação cruzada aninhada é realmente necessária e pode fazer uma diferença prática?

36

Ao usar a validação cruzada para fazer a seleção do modelo (como por exemplo, ajuste de hiperparâmetro) e avaliar o desempenho do melhor modelo, deve-se usar a validação cruzada aninhada . O loop externo é para avaliar o desempenho do modelo, e o loop interno é para selecionar o melhor modelo; o modelo é selecionado em cada conjunto de treinamento externo (usando o circuito interno do CV) e seu desempenho é medido no conjunto de teste externo correspondente.

Isso foi discutido e explicado em vários tópicos (como por exemplo, aqui Treinamento com o conjunto de dados completo após a validação cruzada ? , veja a resposta de @DikranMarsupial) e é totalmente claro para mim. Fazer apenas uma validação cruzada simples (não aninhada) para seleção de modelo e estimativa de desempenho pode gerar uma estimativa de desempenho com viés positivo. O @DikranMarsupial tem um artigo de 2010 sobre exatamente esse tópico ( Sobre ajuste excessivo na seleção de modelo e viés de seleção subsequente na avaliação de desempenho ), com a Seção 4.3 sendo chamada de Ajuste excessivo na seleção de modelo é realmente uma preocupação genuína na prática? - e o documento mostra que a resposta é sim.

Tudo isso dito, agora estou trabalhando com regressão multivariada de crista múltipla e não vejo diferença entre CV simples e aninhado; portanto, neste caso particular, o CV aninhado parece uma carga computacional desnecessária. Minha pergunta é: sob quais condições o CV simples produzirá um viés perceptível que é evitado com o CV aninhado? Quando o CV aninhado importa na prática e quando não importa tanto? Existem regras práticas?

Aqui está uma ilustração usando meu conjunto de dados real. O eixo horizontal é para regressão de crista. O eixo vertical é um erro de validação cruzada. A linha azul corresponde à validação cruzada simples (não aninhada), com 50 divisões aleatórias de treinamento / teste 90:10. A linha vermelha corresponde à validação cruzada aninhada com 50 divisões aleatórias de treinamento / teste 90:10, em que é escolhido com um loop interno de validação cruzada (também 50 divisões aleatórias 90:10). Linhas são médias acima de 50 divisões aleatórias, sombreados mostram desvio padrão.registro(λ)λ±1

Validação cruzada simples vs aninhada

A linha vermelha é plana porque está sendo selecionado no loop interno e o desempenho do loop externo não é medido em toda a faixa de 's. Se a validação cruzada simples for enviesada, o mínimo da curva azul estará abaixo da linha vermelha. Mas esse não é o caso.λλ

Atualizar

Na verdade, é o caso :-) Só que a diferença é pequena. Aqui está o zoom:

Validação cruzada simples versus aninhada, mais zoom

Uma coisa potencialmente enganosa aqui é que minhas barras de erro (sombras) são enormes, mas os CVs aninhados e simples podem ser (e foram) realizados com as mesmas divisões de treinamento / teste. Portanto, a comparação entre eles é pareada , conforme sugerido por @Dikran nos comentários. Então, vamos fazer uma diferença entre o erro CV aninhado e o erro CV simples (para o que corresponde ao mínimo na minha curva azul); novamente, em cada dobra, esses dois erros são calculados no mesmo conjunto de testes. Traçando essa diferença em divisões de treinamento / teste, recebo o seguinte:λ=0,00250.

Validação cruzada simples vs aninhada, diferenças

Os zeros correspondem às divisões em que o loop CV interno também produziu (acontece quase a metade das vezes). Em média, a diferença tende a ser positiva, ou seja, o CV aninhado tem um erro um pouco maior . Em outras palavras, o CV simples demonstra um viés minúsculo, mas otimista.λ=0,002

(Executei todo o procedimento algumas vezes, e isso acontece sempre.)

Minha pergunta é: em que condições podemos esperar que esse viés seja minúsculo e sob quais condições não devemos?

ameba diz Restabelecer Monica
fonte
Não tenho muita certeza de entender o diagrama. Você poderia gerar um gráfico de dispersão mostrando o erro estimado da validação cruzada aninhada e não aninhada em cada eixo (presumindo que as 50 divisões de treinamento de teste fossem sempre iguais)? Qual é o tamanho do conjunto de dados que você está usando?
Dikran Marsupial
1
Gerei o gráfico de dispersão, mas todos os pontos estão muito próximos da diagonal e é difícil discernir qualquer desvio a partir dela. Então, em vez disso, subtraí o erro CV simples (para lambda ideal) do erro CV aninhado e o plotei em todas as divisões dos testes de treinamento. Parece haver um viés muito pequeno, mas perceptível! Eu fiz a atualização. Deixe-me saber se as figuras (ou minhas explicações) são confusas, gostaria que este post fosse claro.
Ameba diz Reinstate Monica
No primeiro parágrafo, você tem o modelo selecionado em cada conjunto de treinamento externo ; talvez devesse ser interior - em vez disso?
Richard Hardy
@RichardHardy Não. Mas posso ver que essa frase não foi formulada com muita clareza. O modelo é "selecionado" em cada conjunto de treinamento externo. Modelos diferentes (por exemplo, modelos com lambdas diferentes) são ajustados em cada conjunto de treinamento interno, testados em conjuntos de teste interno e, em seguida, um dos modelos é selecionado , com base em todo o conjunto de treinamento externo. Seu desempenho é então avaliado usando um conjunto de testes externos. Isso faz sentido?
Ameba diz Reinstate Monica

Respostas:

13

Eu sugeriria que o viés depende da variação do critério de seleção do modelo, quanto maior a variância, maior o provável viés. A variação do critério de seleção do modelo tem duas fontes principais, o tamanho do conjunto de dados em que é avaliado (portanto, se você tiver um pequeno conjunto de dados, maior será a probabilidade de viés) e a estabilidade do modelo estatístico (se os parâmetros do modelo são bem estimados pelos dados de treinamento disponíveis, há menos flexibilidade para o modelo se ajustar demais ao critério de seleção de modelos, ajustando os hiperparâmetros). O outro fator relevante é o número de opções de modelo a serem feitas e / ou os hiper-parâmetros a serem ajustados.

No meu estudo, estou analisando poderosos modelos não lineares e conjuntos de dados relativamente pequenos (comumente usados ​​em estudos de aprendizado de máquina) e esses dois fatores significam que a validação cruzada aninhada é absolutamente necessária. Se você aumentar o número de parâmetros (talvez com um kernel com um parâmetro de escala para cada atributo), o ajuste excessivo pode ser "catastrófico". Se você estiver usando modelos lineares com apenas um único parâmetro de regularização e um número relativamente grande de casos (em relação ao número de parâmetros), é provável que a diferença seja muito menor.

Devo acrescentar que eu recomendaria sempre o uso de validação cruzada aninhada, desde que seja computacionalmente viável, pois elimina uma possível fonte de viés para que nós (e os revisores; o) não precisemos nos preocupar se é insignificante ou não.

Dikran Marsupial
fonte
2
Se você usar todos os dados, não está efetivamente plotando o erro do conjunto de treinamento? Frequentemente, uso modelos de classificação nos quais os melhores modelos têm erro de conjunto de treinamento zero, mas erro de generalização diferente de zero, mesmo que o parâmetro de regularização seja cuidadosamente escolhido.
Dikran Marsupial
1
Alguns milhares de padrões de treinamento ou menos. Que tipo de modelo você está usando? À medida que o conjunto de dados aumenta, os problemas estatísticos diminuem e os problemas computacionais aumentam, como regra geral. A validação cruzada de dobras k é apenas k vezes mais lenta que o modelo básico (incluindo o ajuste de hiperparâmetros), por isso raramente passa de viável a inviável. A valdiação cruzada k-fold também é facilmente paralelizada, o que eu costumo fazer.
Dikran Marsupial
1
Apenas fornece uma estimativa de desempenho imparcial. O CV essencialmente aninhado estima o desempenho de um método de ajuste de um modelo, incluindo a seleção de modelos por meio de validação cruzada. Para obter o modelo operacional, normalmente apenas repetimos o método usando o conjunto de dados inteiro, o que oferece as mesmas opções de modelo que o procedimento de validação cruzada "simples".
Dikran Marsupial
1
Também me deparei com a questão do CV aninhado. O uso do CV aninhado imparcial envolve o ajuste de modelos com dados menores. Para o CV de 10 vezes, é como 81% no CV aninhado vs. 90% no CV não aninhado. Também a dobra de teste se torna 9% vs 10% em não aninhados. Isso gera variação extra na avaliação do modelo? Especialmente para conjuntos de dados pequenos, como 350 amostras neste post. Essa é a 'desvantagem' do CV aninhado? Em caso afirmativo, como devemos decidir se deseja usar o CV aninhado versus o tamanho do conjunto de dados? Realmente aprecio a opinião de especialistas como você sobre este assunto. Existe algum artigo relacionado a esse problema? @Dikran Marsupial
zesla 18/01
2
@zesla Sim, esse é realmente o caso de haver menos dados para a validação cruzada interna, o que aumentará sua variação, no entanto, o modelo final é construído usando todo o conjunto de dados (incluindo estimativa de hiperparâmetros). Sempre há uma troca entre viés e variação na estimativa de desempenho. É mais importante usar a validação cruzada aninhada se o conjunto de dados for pequeno, pois o excesso de ajuste na seleção de modelos e o viés são mais um problema. Em aplicações práticas, onde existem poucos hiperparâmetros, a diferença pode ter pouco significado prático arxiv.org/abs/1809.09446 .
Dikran Marsupial 22/01