Spørsmål:
Forskjeller mellom kryssvalidering og bootstrapping for å estimere prediksjonsfeilen
grant
2011-11-14 20:57:47 UTC
view on stackexchange narkive permalink

Jeg vil at tankene dine om forskjellene mellom kryssvalidering og bootstrapping skal estimere prediksjonsfeilen.

Fungerer man bedre for små datasettstørrelser eller store datasett?

Fem svar:
topepo
2011-11-14 22:25:09 UTC
view on stackexchange narkive permalink

Det kommer ned på avvik og skjevhet (som vanlig). CV har en tendens til å være mindre partisk, men K-fold CV har ganske stor avvik. På den annen side har bootstrapping en tendens til å redusere variansen drastisk, men gir mer partiske resultater (de pleier å være pessimistiske). Andre bootstrapping-metoder er tilpasset for å håndtere bootstrap-skjevheten (for eksempel 632 og 632+-reglene).

To andre tilnærminger vil være "Monte Carlo CV", aka "leave-group-out CV" som gjør mange tilfeldige delinger av dataene (som mini-trening og testdelinger). Variansen er veldig lav for denne metoden, og forspenningen er ikke så dårlig hvis prosentandelen av data i hold-out er lav. Gjentatt CV gjør også K-fold flere ganger og gjennomsnittet av resultatene som ligner på vanlig K-fold. Jeg er mest delvis på dette siden det holder den lave forspenningen og reduserer avviket.

Rediger

For store utvalgstørrelser blir avviksproblemene mindre viktige og beregningsdelen er mer av problemer. Jeg vil fortsatt holde meg ved gjentatt CV for små og store utvalgstørrelser.

Noen relevante undersøkelser er nedenfor (spesielt Kim og Molinaro).

Referanser

Bengio, Y., & Grandvalet, Y. (2005). Bias i estimering av variansen av k-kors-validering. Statistisk modellering og analyse for komplekse dataproblemer, 75–95.

Braga-Neto, U. M. (2004). Er kryssvalidering gyldig for mikroprøveklassifisering med liten prøve Bioinformatikk, 20 (3), 374–380. doi: 10.1093 / bioinformatics / btg419

Efron, B. (1983). Estimere feilfrekvensen til en prediksjonsregel: forbedring av kryssvalidering. Journal of the American Statistical Association, 316–331.

Efron, B., & Tibshirani, R. (1997). Forbedringer på kryssvalidering: The. 632+ bootstrap-metode. Journal of the American Statistical Association, 548–560.

Furlanello, C., Merler, S., Chemini, C., & Rizzoli, A. (1997). En anvendelse av bootstrap 632+ -regelen på økologiske data. WIRN 97.

Jiang, W., & Simon, R. (2007). En sammenligning av bootstrap-metoder og en justert bootstrap-tilnærming for å estimere prediksjonsfeilen i mikroarray-klassifisering. Statistics inMedicine, 26 (29), 5320-5334.

Jonathan, P., Krzanowski, W., & McCarthy, W. (2000). Om bruk av kryssvalidering for å vurdere ytelse i multivariat prediksjon. Statistikk og databehandling, 10 (3), 209–229.

Kim, J.-H. (2009). Estimering av klassifiseringsfeilrate: Gjentatt kryssvalidering, gjentatt hold-out og bootstrap. Beregningsstatistikk og dataanalyse, 53 (11), 3735–3745. doi: 10.1016 / j.csda.2009.04.009

Kohavi, R. (1995). En studie av kryssvalidering og bootstrap for nøyaktighetsestimering og modellvalg. International Joint Conference on Artificial Intelligence, 14, 1137–1145.

Martin, J., & Hirschberg, D. (1996). Liten prøvestatistikk for klassifiseringsfeilrater I: Error ratemålinger.

Molinaro, A. M. (2005). Beregning av prediksjonsfeil: en sammenligning av metoder for prøvetaking. Bioinformatikk, 21 (15), 3301–3307. doi: 10.1093 / bioinformatics / bti499

Sauerbrei, W., & Schumacher1, M. (2000). Bootstrap og kryssvalidering for å vurdere kompleksiteten til datadrevne regresjonsmodeller. Medisinsk dataanalyse, 26–28.

Tibshirani, RJ, & Tibshirani, R. (2009). En skjevhetskorrigering for minimum feilrate i kryssvalidering. Arxiv fortrykk arXiv: 0908.2904.

Bootstrap bias er ikke pesimistisk, den er optimistisk (Simple Bootstrap ikke .0632).Dette er fordi Bootstrap bruker mange treningselementer for å teste modellen som fører til mye vekt for i prøvefeil.
Patrick Burns
2011-11-14 21:55:42 UTC
view on stackexchange narkive permalink

@Frank Harrell har gjort mye arbeid med dette spørsmålet. Jeg vet ikke om spesifikke referanser.

Men jeg ser heller på de to teknikkene som for forskjellige formål. Kryssvalidering er et godt verktøy når du bestemmer deg for modellen - det hjelper deg å unngå å lure deg selv til å tro at du har en god modell når du faktisk overmonterer.

Når modellen din er løst, bruk deretter bootstrap gir mer mening (for meg i det minste).

Det er en introduksjon til disse konseptene (pluss permutasjonstester) ved å bruke R på http://www.burns-stat.com/pages/ Veileder / bootstrap_resampling.html

Er det fornuftig å bruke CV først til å velge en modell, og deretter bruke bootstrapping på de samme dataene for å vurdere feilene i estimatene dine?Spesielt vil jeg gjøre lineær regresjon ved bruk av ML på data med ukjent ikke-gaussisk støy.
Glen
2011-11-14 22:19:37 UTC
view on stackexchange narkive permalink

Min forståelse er at bootstrapping er en måte å kvantifisere usikkerheten i modellen din mens kryssvalidering brukes til modellvalg og måling av prediktiv nøyaktighet.

tusen takk for svarene. Jeg trodde bootstrapping var bedre når du har lite datasett (<30 obs). Nei?
Jeg vil tro det. Kryssvalidering er kanskje ikke rimelig når du har en liten utvalgstørrelse. Du kan utelate en kryssvalidering, men det har en tendens til å være overoptimistisk.
Vær også oppmerksom på at det å gjøre bootstrapping med et lite utvalg vil føre til noen partiske estimater, som nevnt i Efrons originale papir.
Er ikke måling av prediktiv nøyaktighet en måte å kvantifisere usikkerhet på?Jeg forstår at CV er mer vanlig for modellvalg, men la oss si at jeg vil estimere AUC for en LASSO, er CV eller bootstrapping bedre?
Neil McGuigan
2011-12-14 12:00:58 UTC
view on stackexchange narkive permalink

En forskjell er at kryssvalidering, som jackknife, bruker alle datapunktene dine, mens bootstrapping, som sampler dataene dine tilfeldig, kanskje ikke treffer alle poengene.

Du kan bootstrap så lenge du vil ha, noe som betyr en større prøve, som skal hjelpe til med mindre prøver.

Gjennomsnittet for kryssvalidering eller jackknife vil være det samme som prøvene, mens gjennomsnittet for bootstrap er svært usannsynlig å være det samme som gjennomsnittet for prøven.

Som kryssvalidering og knivvekt alle prøvepunktene likt, bør de ha et mindre (men muligens feil) konfidensintervall enn bootstrap.

Neil, synes minst 2 av 4 uttalelsene dine er feil. 1. Selv om hver enkelt boostrap-prøve dekker ~ 63% av de originale datapunktene, er sjansen for at hvert punkt dekkes i minst en av dem i det vesentlige 100%, hvis vi prøver mange (f.eks. 10k) bootstrap-prøver som vi pleier å gjøre. 2. Jeg gjorde en rask numerisk sjekk - gjennomsnittet av bootstrap- og out-of-bootstrap-prøver er veldig nær hele datagjennomsnittet.Du kan sjekke deg selv
Her er en kode (klikk "Rediger" for å se den formatert): importer numpy som np, pandaer som pd n = 1000 B = 1000 y = np.random.randn (n) middel, middel = =], [] for b i rekkevidde (B): ib = np.random.choice (n, n, erstatt = True) gjennomsnitt = y [ib]. middel () betyrb.append (meanb) indoob = np.ones (n, dtype = bool) indoob [ib] = Falsk meanoob = y [indoob]. betyr () meansoob.append (meanoob) pd.Series (middelb) .hist (histtype = 'trinn') pd.Series (meansoob) .hist (histtype = 'step') skriv ut np.mean (middelb), np.mean (middeloob), pd.Series (y) .mean ()
@Kochede "i det vesentlige 100%" er ikke 100%."Veldig nær gjennomsnittet" er ikke det samme som nøyaktig det samme som gjennomsnittet.Du bruker vasselord.Jeg tar ikke feil
Så du gir ikke bare feil svar, men du insisterer også på dem med demagogi, ok. Forventet dekning av data fra bootstrap-prøver konvergerer raskt til 100% med økende antall prøver.I det ovennevnte eksperimentet etter mindre enn 10 bootstrap-prøver _all_ datapunkter blir truffet av bootstrap. På samme måte er forventningen om gjennomsnittet av bootstrap-eksempler _ lik_ til gjennomsnittet av prøven.Og i ovennevnte eksperiment er forskjellen mindre enn 0,1% etter 1000 bootstrap-prøver (bruk np.random.rand i stedet for randn, fordi for randn er gjennomsnittet 0)
Her er den oppdaterte koden for din referanse: importer nummen som np, pandaer som pd; n = 1000; B = 1000; y = np.random.rand (n); middelb = []; dekket = np.-nuller (n, dtype = bool); dekning = []; #begynn løkke for b i rekkevidde (B): ib = np.random.choice (n, n, erstatt = True); dekket [ib] = Sant; dekning.append (dekket.sum () * 1.0 / n); gjennomsnitt = y [ib]. middel (); betyrb.append (meanb); #end loop utskriftsdekning [: 10]; skriv ut np.mean (middelb), pd.Series (y) .mean (); skriv ut (np.mean (middelb) - pd.Series (y) .mean ()) / pd.Series (y) .mean ();
Reeves
2017-10-22 00:12:20 UTC
view on stackexchange narkive permalink

Dette er to teknikker for prøvetaking:

I kryssvalidering deler vi dataene tilfeldig i kfold, og det hjelper med overmontering, men denne tilnærmingen har sin ulempe.Siden den bruker tilfeldige prøver, gir noen eksempler store feil.For å minimere CV har teknikker, men det er ikke så kraftig med klassifiseringsproblemer.Bootstrap hjelper i dette, det forbedrer feilen fra sin egen prøvesjekk .. for detaljer, se ..

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



Denne spørsmålet ble automatisk oversatt fra engelsk.Det opprinnelige innholdet er tilgjengelig på stackexchange, som vi takker for cc by-sa 3.0-lisensen den distribueres under.
Loading...