Differenze tra validazione incrociata e bootstrap per stimare l'errore di previsione


103

Vorrei che i tuoi pensieri sulle differenze tra validazione incrociata e bootstrap per stimare l'errore di previsione.

Uno funziona meglio per set di dati di piccole dimensioni o set di dati di grandi dimensioni?

Risposte:


88

Dipende dalla varianza e dalla distorsione (come al solito). Il CV tende ad essere meno distorto, ma il CV di K-fold presenta una varianza abbastanza grande. D'altra parte, il bootstrap tende a ridurre drasticamente la varianza ma dà risultati più distorti (tendono ad essere pessimisti). Altri metodi di bootstrap sono stati adattati per gestire la distorsione da bootstrap (come le regole 632 e 632+).

Altri due approcci sarebbero il "Monte Carlo CV", noto anche come "CV di abbandono del gruppo", che esegue molte suddivisioni casuali dei dati (una sorta di mini-training e suddivisioni di test). La varianza è molto bassa per questo metodo e la distorsione non è troppo grave se la percentuale di dati nel controllo è bassa. Inoltre, il CV ripetuto fa K volte più volte e fa una media dei risultati simili al K normale. Sono molto parziale a questo dal momento che mantiene il bias basso e riduce la varianza.

modificare

Per campioni di grandi dimensioni, i problemi di varianza diventano meno importanti e la parte computazionale è più un problema. Continuerei a seguire CV ripetuti per campioni di piccole e grandi dimensioni.

Di seguito alcune ricerche pertinenti (in particolare Kim e Molinaro).

Riferimenti

Bengio, Y., & Grandvalet, Y. (2005). Distorsione nella stima della varianza della convalida incrociata di k-fold. Modellistica statistica e analisi per problemi di dati complessi, 75–95.

Braga-Neto, UM (2004). La validazione incrociata è valida per la classificazione di microarray di piccoli campioni Bioinformatica, 20 (3), 374–380. doi: 10.1093 / bioinformatica / btg419

Efron, B. (1983). Stima del tasso di errore di una regola di previsione: miglioramento della convalida incrociata. Journal of American Statistical Association, 316–331.

Efron, B., e Tibshirani, R. (1997). Miglioramenti della convalida incrociata: il. 632+ metodo bootstrap. Journal of American Statistical Association, 548-560.

Furlanello, C., Merler, S., Chemini, C., & Rizzoli, A. (1997). Un'applicazione della regola bootstrap 632+ ai dati ecologici. WIRN 97.

Jiang, W. e Simon, R. (2007). Un confronto tra i metodi bootstrap e un approccio bootstrap adeguato per stimare l'errore di previsione nella classificazione dei microarray. Statistics in Medicine, 26 (29), 5320–5334.

Jonathan, P., Krzanowski, W., & McCarthy, W. (2000). Sull'uso della convalida incrociata per valutare le prestazioni nella previsione multivariata. Statistica e informatica, 10 (3), 209–229.

Kim, J.-H. (2009). Stima della percentuale di errori di classificazione: convalida incrociata ripetuta, ripetuta sospensione e bootstrap. Statistiche computazionali e analisi dei dati, 53 (11), 3735-3745. doi: 10.1016 / j.csda.2009.04.009

Kohavi, R. (1995). Uno studio di validazione incrociata e bootstrap per la stima dell'accuratezza e la selezione del modello. Conferenza internazionale congiunta sull'intelligenza artificiale, 14, 1137-1145.

Martin, J., & Hirschberg, D. (1996). Piccole statistiche di esempio per i tassi di errore di classificazione I: Misure del tasso di errore.

Molinaro, AM (2005). Stima dell'errore di predizione: un confronto tra i metodi di ricampionamento. Bioinformatica, 21 (15), 3301-3307. doi: 10.1093 / bioinformatica / bti499

Sauerbrei, W., & Schumacher1, M. (2000). Bootstrap e convalida incrociata per valutare la complessità dei modelli di regressione basati sui dati. Analisi dei dati medici, 26-28.

Tibshirani, RJ e Tibshirani, R. (2009). Una correzione di polarizzazione per il tasso di errore minimo nella convalida incrociata. Arxiv prestampa arXiv: 0908.2904.


2
La distorsione da Bootstrap non è pesimistica, è ottimistica (Simple Bootstrap non .0632). Questo perché Bootstrap utilizza molti elementi di allenamento per testare il modello che porta a un sacco di peso per errori nel campione.
D1X,

33

@Frank Harrell ha lavorato molto su questa domanda. Non conosco riferimenti specifici.

Ma preferisco vedere le due tecniche come per scopi diversi. La convalida incrociata è un buon strumento quando si decide il modello: ti aiuta a evitare di ingannarti nel pensare di avere un buon modello quando in realtà ti stai adattando troppo.

Quando il tuo modello è corretto, l'utilizzo del bootstrap ha più senso (almeno per me).

C'è un'introduzione a questi concetti (oltre ai test di permutazione) usando R su http://www.burns-stat.com/pages/Tutor/bootstrap_resampling.html


2
Ha senso utilizzare prima il CV per selezionare un modello, e successivamente utilizzare il bootstrap sugli stessi dati per valutare gli errori delle stime? In particolare, voglio fare una regressione lineare usando ML su dati con rumore non gaussiano sconosciuto.
sebhofer,

9

La mia comprensione è che il bootstrap è un modo per quantificare l'incertezza nel modello mentre la convalida incrociata viene utilizzata per la selezione del modello e la misurazione della precisione predittiva.


grazie mille per le risposte. Ho pensato che il bootstrap fosse migliore quando hai un piccolo set di dati (<30 obs). No?
concedi il

Io la penso così. La convalida incrociata potrebbe non essere ragionevole quando si dispone di una piccola dimensione del campione. Si potrebbe fare a meno di una convalida incrociata, ma tende ad essere troppo ottimista.
Glen,

Si noti inoltre che l'avvio del bootstrap con un piccolo campione porterà ad alcune stime distorte, come indicato nel documento originale di Efron.
Glen,

La misurazione della precisione predittiva non è un modo per quantificare l'incertezza? Capisco che CV è più comune per la selezione del modello, ma diciamo che voglio stimare AUC per un LASSO, CV o bootstrap sono migliori?
Max Ghenis

9

Una differenza è che la validazione incrociata, come jackknife, usa tutti i tuoi punti dati, mentre il bootstrap, che campiona i tuoi dati in modo casuale, potrebbe non raggiungere tutti i punti.

Puoi avviare il bootstrap quanto vuoi, il che significa un ricampionamento più grande, che dovrebbe aiutare con campioni più piccoli.

La media cross-validation o jackknife sarà la stessa della media campionaria, mentre è improbabile che la media bootstrap sia uguale alla media campionaria.

Dato che la validazione incrociata e il peso del coltello tuttofare coincidono tutti i punti campione, dovrebbero avere un intervallo di confidenza più piccolo (anche se forse errato) rispetto al bootstrap.


2
Neil, almeno 2 su 4 sembrano sbagliate. 1. Anche se ogni particolare campione di boostrap copre circa il 63% dei punti dati originali, se campioniamo molti (ad esempio 10k) campioni bootstrap come facciamo di solito, la probabilità che ciascun punto venga coperto in almeno uno di essi è essenzialmente del 100%. 2. Ho appena fatto un rapido controllo numerico: la media dei campioni bootstrap e out-of-bootstrap è molto vicina all'intera media dei dati. Puoi controllare te stesso
Kochede il

Ecco un codice (fai clic su "Modifica" per vederlo formattato): importa numpy come np, panda come pd n = 1000 B = 1000 y = np.random.randn (n) meanb, meansoob = [], [] per b in range (B): ib = np.random.choice (n, n, sostituisci = Vero) meanb = y [ib] .mean () meanb.append (meanb) indoob = np.ones (n, dtype = bool) indoob [ib] = Falso meanoob = y [indoob] .mean () meansoob.append (meanoob) pd.Series (meanb) .hist (histtype = 'step') pd.Series (meansoob) .hist (histtype = 'step' ) print np.mean (meanb), np.mean (meansoob), pd.Series (y) .mean ()
Kochede,

@Kochede "essenzialmente 100%" non è 100%. "Molto vicino alla media" non è esattamente uguale alla media. Stai usando parole da donnola. Non sbaglio
Neil McGuigan,

Quindi non solo dai risposte sbagliate, ma insisti anche su di esse con la demagogia, ok. La copertura prevista dei dati da parte dei campioni bootstrap converge rapidamente al 100% con un numero crescente di campioni. Nell'esperimento sopra riportato dopo meno di 10 campioni bootstrap, tutti i punti dati vengono colpiti da bootstrap. Allo stesso modo, l'aspettativa della media dei campioni bootstrap è uguale alla media del campione. E nell'esperimento sopra riportato dopo 1000 la differenza dei campioni bootstrap è inferiore allo 0,1% (usa np.random.rand invece di randn, perché per randn media è 0)
Kochede

Ecco il codice aggiornato per riferimento: import numpy as np, panda as pd; n = 1000; B = 1000; y = np.random.rand (n); meansb = []; coperto = np.zeros (n, dtype = bool); copertura = []; #begin loop per b nell'intervallo (B): ib = np.random.choice (n, n, sostituisci = Vero); coperto [ib] = True; coverage.append (covered.sum () * 1.0 / n); meanb = y [ib] .mean (); meansb.append (meanb); #end copertura stampa loop [: 10]; print np.mean (meanb), pd.Series (y) .mean (); print (np.mean (meanb) - pd.Series (y) .mean ()) / pd.Series (y) .mean ();
Kochede l'

2

Queste sono due tecniche di ricampionamento:

Nella convalida incrociata dividiamo i dati in modo casuale in kfold e questo aiuta nel sovradimensionamento, ma questo approccio ha il suo svantaggio. Poiché utilizza campioni casuali, alcuni campioni producono un errore grave. Al fine di ridurre al minimo il CV ha tecniche ma non è così potente con problemi di classificazione. Bootstrap aiuta in questo, migliora l'errore dal proprio controllo di esempio ... per i dettagli si prega di fare riferimento ..

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.