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).
Respostas:
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.nk−1
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
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):
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. .p p^
Agora, e, portanto:p^=kn
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
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).
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 )nbootstrap k⋅niter. cv n−1≈n σ2(p^)=p(1−p)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 np k n p^ 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.
fonte
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.
fonte