Diferenças entre validação cruzada e bootstrapping para estimar o erro de previsão

103

Gostaria que seus pensamentos sobre as diferenças entre validação cruzada e bootstrapping estimassem o erro de previsão.

Funciona melhor para tamanhos de conjuntos de dados pequenos ou grandes?

conceder
fonte

Respostas:

88

Tudo se resume a variação e viés (como de costume). O CV tende a ser menos tendencioso, mas o CV com dobras em K tem uma variação bastante grande. Por outro lado, o bootstrapping tende a reduzir drasticamente a variação, mas fornece resultados mais tendenciosos (eles tendem a ser pessimistas). Outros métodos de inicialização foram adaptados para lidar com o viés da inicialização (como as regras 632 e 632+).

Duas outras abordagens seriam "CV de Monte Carlo", também conhecido como "CV de grupo excluído", que faz muitas divisões aleatórias dos dados (como mini-treinamento e divisões de teste). A variação é muito baixa para esse método e o viés não é muito ruim se a porcentagem de dados no hold-out for baixa. Além disso, o CV repetido dobra K várias vezes e calcula a média dos resultados semelhantes aos do K regular. Sou mais parcial disso, pois mantém o viés baixo e reduz a variação.

Editar

Para amostras grandes, os problemas de variação se tornam menos importantes e a parte computacional é mais um problema. Eu ainda continuaria com o CV repetido para amostras pequenas e grandes.

Algumas pesquisas relevantes estão abaixo (especialmente Kim e Molinaro).

Referências

Bengio, Y., e Grandvalet, Y. (2005). Viés na estimativa da variância da validação cruzada k-fold. Modelagem e análise estatística para problemas complexos de dados, 75–95.

Braga-Neto, UM (2004). A validação cruzada é válida para a classificação de microarranjos de amostras pequenas Bioinformatics, 20 (3), 374–380. doi: 10.1093 / bioinformática / btg419

Efron, B. (1983). Estimando a taxa de erro de uma regra de previsão: melhoria na validação cruzada. Jornal da Associação Estatística Americana, 316-331.

Efron, B. & Tibshirani, R. (1997). Melhorias na validação cruzada: The. 632+ método de inicialização. Jornal da Associação Estatística Americana, 548-560.

Furlanello, C., Merler, S., Chemini, C., & Rizzoli, A. (1997). Uma aplicação da regra bootstrap 632+ para dados ecológicos. WIRN 97.

Jiang, W. & Simon, R. (2007). Uma comparação dos métodos de inicialização e uma abordagem de inicialização ajustada para estimar o erro de previsão na classificação de microarranjos. Statistics in Medicine, 26 (29), 5320-5334.

Jonathan, P., Krzanowski, W. & McCarthy, W. (2000). Sobre o uso da validação cruzada para avaliar o desempenho na previsão multivariada. Statistics and Computing, 10 (3), 209-229.

Kim, J.-H. (2009). Estimando a taxa de erro de classificação: Validação cruzada repetida, retenção repetida e autoinicialização. Estatística Computacional e Análise de Dados, 53 (11), 3735-3745. doi: 10.1016 / j.csda.2009.04.009

Kohavi, R. (1995). Um estudo de validação cruzada e de autoinicialização para estimativa de precisão e seleção de modelo. Conferência Conjunta Internacional sobre Inteligência Artificial, 14, 1137-1145.

Martin, J. & Hirschberg, D. (1996). Estatísticas de amostra pequena para taxas de erro de classificação I: Medições de taxa de erro.

Molinaro, AM (2005). Estimativa de erro de previsão: uma comparação dos métodos de reamostragem. Bioinformtics, 21 (15), 3301-3307. doi: 10.1093 / bioinformática / bti499

Sauerbrei, W., & Schumacher1, M. (2000). Bootstrap e validação cruzada para avaliar a complexidade dos modelos de regressão orientada a dados. Medical Data Analysis, 26-28.

Tibshirani, RJ, & Tibshirani, R. (2009). Uma correção de viés para a taxa de erro mínima na validação cruzada. Pré-impressão do Arxiv arXiv: 0908.2904.

topepo
fonte
2
O viés do bootstrap não é pesimista, é otimista (o Bootstrap simples, não .0632). Isso ocorre porque o Bootstrap usa muitos elementos de treinamento para testar o modelo, levando a muito peso no erro de amostra.
D1X
33

@Frank Harrell trabalhou muito nessa questão. Não conheço referências específicas.

Mas prefiro ver as duas técnicas como tendo finalidades diferentes. A validação cruzada é uma boa ferramenta ao decidir sobre o modelo - ajuda a evitar enganar-se a pensar que você tem um bom modelo quando, na verdade, está se ajustando demais.

Quando seu modelo é corrigido, o uso do bootstrap faz mais sentido (pelo menos para mim).

Há uma introdução a esses conceitos (mais testes de permutação) usando R em http://www.burns-stat.com/pages/Tutor/bootstrap_resampling.html

Patrick Burns
fonte
2
Faz sentido usar o CV primeiro para selecionar um modelo e depois usar a inicialização nos mesmos dados para avaliar os erros de suas estimativas? Especificamente, quero fazer regressão linear usando ML em dados com ruído não gaussiano desconhecido.
sebhofer
9

Meu entendimento é que o bootstrapping é uma maneira de quantificar a incerteza em seu modelo, enquanto a validação cruzada é usada para a seleção do modelo e para medir a precisão preditiva.

Glen
fonte
muito obrigado pelas respostas. Eu pensei que o bootstrap era melhor quando você tem um conjunto de dados pequeno (<30 obs). Não?
conceder
Eu acho que sim. A validação cruzada pode não ser razoável quando você tem um tamanho pequeno de amostra. Você pode deixar uma validação cruzada de fora, mas isso tende a ser otimista demais.
Glen
Observe também que fazer bootstrap com uma pequena amostra levará a algumas estimativas tendenciosas, conforme observado no artigo original de Efron.
Glen
A medição da precisão preditiva não é uma maneira de quantificar a incerteza? Entendo que o CV é mais comum na seleção de modelos, mas digamos que eu queira estimar a AUC para um LASSO, o CV ou o bootstrap são melhores?
precisa saber é o seguinte
9

Uma diferença é que a validação cruzada, como o jackknife, usa todos os seus pontos de dados, enquanto o bootstrapping, que reanalisa seus dados aleatoriamente, pode não atingir todos os pontos.

Você pode inicializar o quanto quiser, o que significa uma nova amostra maior, o que deve ajudar com amostras menores.

A média da validação cruzada ou do canivete será a mesma da média da amostra, enquanto a média do bootstrap é muito improvável que seja a mesma da média da amostra.

Como a validação cruzada e o peso do canivete, todos os pontos da amostra são iguais, eles devem ter um intervalo de confiança menor (embora possivelmente incorreto) do que o bootstrap.

Neil McGuigan
fonte
2
Neil, parece que pelo menos 2 de 4 afirmações estão erradas. 1. Embora cada amostra boostrap em particular cubra ~ 63% dos pontos de dados originais, se coletarmos muitas amostras (por exemplo, 10k) de bootstrap, como costumamos fazer, a chance de que cada ponto seja coberto em pelo menos uma delas é essencialmente 100%. 2. Acabei de fazer uma verificação numérica rápida - a média das amostras de bootstrap e out-of-bootstrap está muito próxima da média dos dados. Você pode verificar-se
Kochede
Aqui está um código (clique em "Editar" para vê-lo formatado): importar numpy como np, pandas como pd n = 1000 B = 1000 y = np.random.randn (n) significab, meansoob = [], [] para b in intervalo (B): ib = np.random.choice (n, n, replace = True) meanb = y [ib] .mean () significab.append (meanb) indoob = np.ones (n, dtype = bool) indoob [ib] = Meanoob falso = y [indoob] .mean () meansoob.append (meanoob) pd.Series (significab) .hist (histtype = 'etapa') pd.Series (meansoob) .hist (histtype = 'step' Você pode usar o seguinte comando: `` np.mean (meansb), np.mean (meansoob), pd.Series (y) .mean ()
Kochede
@Kochede "essencialmente 100%" não é 100%. "Muito próximo da média" não é exatamente o mesmo que a média. Você está usando palavras de doninha. Eu não estou errado
Neil McGuigan
Então você não apenas dá respostas erradas, mas também insiste nelas com demagogia, ok. A cobertura esperada dos dados por amostras de bootstrap converge rapidamente para 100% com o aumento do número de amostras. Na experiência acima, após menos de 10 amostras de inicialização, todos os pontos de dados são atingidos pela inicialização. Da mesma forma, a expectativa da média das amostras de bootstrap é igual à média da amostra. E na experiência acima após 1000 amostras de bootstrap diferença é inferior a 0,1% (em vez de utilização np.random.rand randn, porque para randn significa é 0)
Kochede
Aqui está o código atualizado para sua referência: import numpy como np, pandas como pd; n = 1000; B = 1000; y = np.random.rand (n); meiosb = []; coberto = np.zeros (n, dtype = bool); cobertura = []; #begin loop para b no intervalo (B): ib = np.random.choice (n, n, replace = True); coberto [ib] = Verdadeiro; cobertura.apêndio (cobertura.sum () * 1,0 / n); meanb = y [ib] .mean (); significa b.append (meanb); #end cobertura de impressão em loop [: 10]; imprime np.mean (meiosb), pd.Series (y) .mean (); print (np.mean (significab) - pd.Series (y) .mean ()) / pd.Series (y) .mean ();
#
2

Estas são duas técnicas de reamostragem:

Na validação cruzada, dividimos os dados aleatoriamente em kfold e isso ajuda na super adaptação, mas essa abordagem tem sua desvantagem. Como ele usa amostras aleatórias, algumas amostras produzem grandes erros. A fim de minimizar o CV, tem técnicas, mas não é tão poderoso com problemas de classificação. O Bootstrap ajuda nisso, melhora o erro de sua própria verificação de amostra ... para obter detalhes, consulte ..

https://lagunita.stanford.edu/c4x/HumanitiesScience/StatLearning/asset/cv_boot.pdf

Reeves
fonte