Estimativas de variação na validação cruzada k-fold

27

A validação cruzada K-fold pode ser usada para estimar a capacidade de generalização de um determinado classificador. Posso (ou devo) também calcular uma variação combinada de todas as execuções de validação para obter uma estimativa melhor de sua variação?

Se não, por que?

Encontrei documentos que usam o desvio padrão agrupado nas execuções de validação cruzada . Eu também encontrei trabalhos dizendo explicitamente que não existe um estimador universal para a variação de validação . No entanto, também encontrei trabalhos mostrando alguns estimadores de variância para o erro de generalização (ainda estou lendo e tentando compreender este). O que as pessoas realmente fazem (ou relatam) na prática?

EDIT: Quando o CV é usado para medir o erro de classificação bruta (ou seja, uma amostra foi rotulada corretamente ou não foi; por exemplo, verdadeira ou falsa), pode não fazer sentido falar sobre uma variação combinada. No entanto, estou falando do caso em que a estatística que estamos estimando tem uma variação definida. Portanto, para uma determinada dobra, podemos terminar com um valor para a estatística e uma estimativa de variância. Não parece correto descartar essas informações e considerar apenas a estatística média. E, embora eu esteja ciente de que eu poderia criar uma estimativa de variação usando métodos de bootstrap, (se não estiver muito errado), isso ainda ignoraria as variações de dobra e levaria apenas em consideração as estimativas estatísticas (além de exigir muito mais poder de computação).

Cesar
fonte
Você calculou a variação considerando as duas maneiras possíveis para ver se elas diferem muito uma da outra?
zeferino
Sim eu fiz. Em algumas experiências, houve uma mudança de aproximadamente uma ordem de magnitude entre a variação e a variação combinada para amostras de treinamento. Não havia muita diferença para amostras de validação. As mudanças maiores pareciam estar associadas a modelos menos precisos.
Cesar4
11
@ Cesar: boa observação: seus modelos são muito instáveis ​​(alta variação entre iterações). Na classificação (a menos que o classificador seja pior do que adivinhar), previsões instáveis ​​levarão a previsões erradas. Um pensamento ilustrativo para isso é que um desvio de uma previsão correta sempre estará na direção "errada", não há muito alto que cancelaria com muito baixo.
Cbeleites suporta Monica
11
@ cbeleites: isso não seria algo esperado, pois as grandes variações de variação ocorrem principalmente nos modelos que apresentam taxas de erro mais altas? By the way, boa atualização em sua resposta. Ainda preciso ler com mais atenção, mas já estou muito agradecido. Obrigado.
Cesar
11
@ Cesar: Thx. Certamente, é esperado, uma maneira menos ilustrativa de afirmar que é a fórmula de variação para proporções (veja minha resposta): quanto mais extrema for a taxa de erro real, menor será a variação, a variação máxima estará na taxa de erro = 50%.
Cbeleites suporta Monica

Respostas:

13

Pergunta muito interessante, vou ter que ler os papéis que você dá ... Mas talvez isso nos inicie na direção de uma resposta:

Eu costumo lidar com esse problema de uma maneira muito pragmática: eu itero a validação cruzada k-fold com novas divisões aleatórias e calculo o desempenho da maneira usual para cada iteração. As amostras de teste gerais são as mesmas para cada iteração e as diferenças são provenientes de diferentes divisões dos dados.

Relato, por exemplo, como o 5º a 95º percentil do desempenho observado. trocando até amostras por novas amostras e discutindo-as como uma medida de instabilidade do modelo.nk1

Nota: de qualquer maneira, não posso usar fórmulas que precisam do tamanho da amostra. Como meus dados são agrupados ou hierárquicos em estrutura (muitas medições semelhantes, mas não repetidas, do mesmo caso, geralmente várias [cem] localizações diferentes da mesma amostra), não sei o tamanho efetivo da amostra.

comparação ao bootstrapping:

  • as iterações usam novas divisões aleatórias.

  • a principal diferença é reamostrar com (bootstrap) ou sem (cv) substituição.

  • o custo computacional é praticamente o mesmo, pois eu escolheria nenhuma das iterações de cv no das iterações de autoinicialização / k, ou seja, calcule o mesmo número total de modelos.

  • O bootstrap tem vantagens sobre o cv em termos de algumas propriedades estatísticas (assintoticamente corretas, possivelmente você precisa de menos iterações para obter uma boa estimativa)

  • No entanto, com a CV, você tem a vantagem de ter a garantia de que

    • o número de amostras de treinamento distintas é o mesmo para todos os modelos (importante se você deseja calcular curvas de aprendizado)
    • cada amostra é testada exatamente uma vez em cada iteração
  • alguns métodos de classificação descartam amostras repetidas, portanto, a inicialização não faz sentido

Variação para o desempenho

resposta curta: sim, faz sentido falar de variação na situação em que existem apenas {0,1} resultados.

Veja a distribuição binomial (k = sucessos, n = testes, p = probabilidade verdadeira de sucesso = k / n médio):

σ2(k)=np(1p)

A variação de proporções (como taxa de acerto, taxa de erro, sensibilidade, TPR, ..., usarei partir de agora e para o valor observado em um teste) é um tópico que preenche livros inteiros. .pp^

  • Fleiss: Métodos Estatísticos para Taxas e Proporções
  • Forthofer e Lee: Bioestatística tem uma boa introdução.

Agora, e, portanto:p^=kn

σ2(p^)=p(1p)n

Isso significa que a incerteza para medir o desempenho do classificador depende apenas do desempenho real p do modelo testado e do número de amostras de teste.

Na validação cruzada, você assume

  1. que os modelos k "substitutos" têm o mesmo desempenho verdadeiro que o modelo "real" que você normalmente constrói a partir de todas as amostras. (A quebra dessa suposição é o conhecido viés pessimista).

  2. que os modelos "substitutos" k têm o mesmo desempenho verdadeiro (são equivalentes, têm previsões estáveis), portanto, você pode reunir os resultados dos testes k.
    Obviamente, não apenas os modelos k "substitutos" de uma iteração de cv podem ser agrupados, mas os modelos ki de iterações de k-fold cv.

Por que iterar?

A principal coisa que as iterações dizem é a instabilidade do modelo (previsão), ou seja, variação das previsões de modelos diferentes para a mesma amostra.

Você pode relatar diretamente a instabilidade como, por exemplo, a variação na previsão de um determinado caso de teste, independentemente de a previsão estar correta ou um pouco mais indireta como a variação de para diferentes iterações de cv.p^

E sim, esta é uma informação importante.

Agora, se seus modelos forem perfeitamente estáveis, todo o ou produziria exatamente a mesma previsão para uma determinada amostra. Em outras palavras, todas as iterações teriam o mesmo resultado. A variação da estimativa não seria reduzida pela iteração (assumindo ). Nesse caso, a suposição 2 acima é atendida e você está sujeito apenas a sendo n o número total de amostras testadas em todas k dobras da cv. Nesse caso, não são necessárias iterações (exceto para demonstrar estabilidade). k n i t e r . c v n - 1 n σ 2 ( p ) = p ( 1 - P )nbootstrapkniter. cvn1nσ2(p^)=p(1p)n

Você pode construir intervalos de confiança para o desempenho real partir do número de sucessos observados nos testes. Portanto, estritamente, não há necessidade de relatar a incerteza de variância se e forem relatados. No entanto, no meu campo, poucas pessoas estão cientes disso ou têm um controle intuitivo de quão grande é a incerteza com o tamanho da amostra. Então, eu recomendo denunciá-lo de qualquer maneira.k n p npknp^n

Se você observar a instabilidade do modelo, a média combinada é uma estimativa melhor do desempenho real. A variação entre as iterações é uma informação importante e você pode compará-la com a variação mínima esperada para um conjunto de testes de tamanho n com desempenho médio de desempenho real em todas as iterações.

cbeleites suporta Monica
fonte
Você itera com novas divisões aleatórias, com substituição, como no bootstrap? Ou você repete a validação cruzada dobras k várias vezes? Isso é interessante, porque não parece ser de inicialização, mas pode funcionar assim. Mas quantas réplicas você realiza? Isso pode ficar muito caro facilmente.
Cesar3
@ Cesar: é muito semelhante ao bootstrap, veja a resposta expandida.
Cbeleites suporta Monica
Como o CV deixa o "mesmo número de amostras de treinamento distintas" para cada modelo, mas o bootstrapping não? Eu não sigo, como os "conjuntos de dados replicados" do CV são uma combinação diferente de observações - como eles podem fornecer o mesmo número de observações distintas? Talvez você esteja assumindo que cada registro é distinto no conjunto de treinamento original?
probabilityislogic
@probabilityislogic: os conjuntos de dados replicados do CV são menores que o conjunto de dados original. Assim, diferentes réplicas podem ser produzidas mesmo com reamostragem sem substituição. Reamostrando com substituição, você pode desenhar o mesmo registro várias vezes. Assim, o número de registros exclusivos pode variar. Sim, presumo que os registros originais sejam distintos. Para manter a independência estatística, que é crucial para muitos aplicativos, a reamostragem deve ser feita no nível mais alto da hierarquia de dados. (Por exemplo, trabalho com dados de pacientes com centenas de linhas para cada paciente => reamostrar pacientes)
cbeleites suporta Monica
11
O problema com a estimativa da variância (e depois com os intervalos de confiança) é que os modelos e testes de validação cruzada (sobre iterações) não são independentes: no final, você só tem casos independentes. Os modelos não devem ser independentes - de fato, a avaliação usual do CV pressupõe que sejam iguais. Mas, independentemente de quantas iterações você tiver, cada caso já foi testado na primeira iteração. E sempre há a questão de quão representativo é o seu pequeno conjunto de dados. n
cbeleites suportes Monica
1

Lembre-se de que o CV é apenas uma estimativa e nunca pode representar o erro de generalização 'real'. Dependendo do tamanho da amostra (o que afetará o número de dobras ou o tamanho da dobra), você pode ser bastante limitado em sua capacidade de calcular qualquer estimativa de parâmetro da distribuição do erro de generalização. Na minha opinião (e eu já vi isso em vários livros de texto, 'Descoberta de conhecimento com máquinas de vetores de suporte' - Lutz Hamel), você pode executar alguma variante de CV do bootstrap para estimar a distribuição do erro de generalização, mas um padrão 10- 1 (por exemplo), uma vez desligado o CV, não fornecerá pontos de dados suficientes para fazer inferências sobre o verdadeiro erro de geração. O bootstrapping exige que você colete várias amostras com a substituição do seu treinamento / teste / val efetivamente, fazendo vários testes (digamos, 1000) 10-1 (ou o que for) CV. Você então toma sua distribuição amostral de médias para cada teste de CV como uma estimativa da distribuição amostral da média para a população de erros de CV e, a partir disso, você pode estimar parâmetros de distribuição, como média, mediana, std min max Q1 Q3 etc ... É um pouco de trabalho e, na minha opinião, só é realmente necessário se o seu aplicativo for importante / arriscado o suficiente para justificar o trabalho extra. ou seja, talvez em um ambiente de marketing em que a empresa esteja simplesmente feliz por ser melhor do que aleatória, talvez não seja necessária. MAS, se você estiver tentando avaliar as reações dos pacientes a medicamentos de alto risco ou prever expectativas de renda para grandes investimentos, pode ser prudente realizá-las.

clancy
fonte
É uma estimativa, mas poderia ser dito sobre praticamente qualquer uso de uma estatística. No entanto, quando cada dobra já possui uma estimativa de variação, não parece correto descartar essas informações. Atualizei a pergunta com esclarecimentos.
Cesar3
Talvez eu não esteja entendendo. Eu realmente não entendo por que você está sofrendo com a variação de uma única dobra?
Clancy
Executar um único CV de 10 vezes não é exatamente barato para o problema específico que estou tentando resolver. Você está certo, eu poderia estimar a variação, coletando várias amostras com substituição, como no bootstrap. Mas fazer um grande número de currículos, mesmo algumas centenas, pode ser muito impraticável no meu caso. Estou procurando uma maneira (se houver) de combinar estimativas individuais de variação de dobras para que eu possa pelo menos reduzir o número de amostras de bootstrap necessárias. E além disso, curiosidade.
Cesar
Ah ok. Talvez então a variância de cada uma das médias de 10 vezes da média geral da dobra seja uma variável aleatória selecionada na distribuição de amostragem para variações ... (que eu acho que é um qui sq dist ou F dist)
clancy
@clancy: com 10-1, você quer dizer um CV único para n = 10 amostras? Observe que para iterações de exclusão única não faz sentido.
Cbeleites suporta Monica