Unterschiede zwischen Kreuzvalidierung und Bootstrapping zur Abschätzung des Vorhersagefehlers

102

Ich möchte, dass Ihre Gedanken zu den Unterschieden zwischen Kreuzvalidierung und Bootstrapping den Vorhersagefehler abschätzen.

Funktioniert man besser für kleine Datenmengen oder große Datenmengen?

gewähren
quelle

Antworten:

88

Es kommt auf Varianz und Voreingenommenheit an (wie üblich). CV neigt dazu, weniger voreingenommen zu sein, aber der K-fache CV hat eine ziemlich große Varianz. Auf der anderen Seite führt Bootstrapping zu einer drastischen Verringerung der Varianz, führt jedoch zu voreingenommeneren Ergebnissen (sie tendieren dazu, pessimistisch zu sein). Andere Bootstrap-Methoden wurden angepasst, um die Bootstrap-Abweichung zu berücksichtigen (wie die Regeln 632 und 632+).

Zwei andere Ansätze wären "Monte Carlo CV" oder "Leave-Group-Out CV", bei dem viele zufällige Aufteilungen der Daten vorgenommen werden (ähnlich wie bei Mini-Trainings und Testaufteilungen). Die Varianz ist für diese Methode sehr gering, und die Verzerrung ist nicht allzu groß, wenn der Prozentsatz der Daten im Hold-out gering ist. Ein wiederholter CV führt auch mehrmals zu einer K-Faltung und mittelt die Ergebnisse ähnlich der regulären K-Faltung. Ich bin sehr angetan davon, da es die niedrige Vorspannung beibehält und die Varianz verringert.

Bearbeiten

Bei großen Stichproben werden die Varianzprobleme weniger wichtig und der rechnerische Teil ist eher ein Problem. Ich würde mich immer noch an den wiederholten Lebenslauf für kleine und große Stichproben halten.

Einige relevante Forschungsergebnisse finden Sie weiter unten (va Kim und Molinaro).

Verweise

Bengio, Y. & Grandvalet, Y. (2005). Verzerrung bei der Schätzung der Varianz der k-fachen Kreuzvalidierung. Statistische Modellierung und Analyse für komplexe Datenprobleme, 75–95.

Braga-Neto, UM (2004). Gilt die Kreuzvalidierung für die Microarray-Klassifikation für kleine Stichproben? Bioinformatics, 20 (3), 374–380. doi: 10.1093 / bioinformatics / btg419

Efron, B. (1983). Schätzung der Fehlerrate einer Vorhersageregel: Verbesserung der Kreuzvalidierung. Journal of the American Statistical Association, 316–331.

Efron, B. & Tibshirani, R. (1997). Verbesserungen bei der Kreuzvalidierung: Die. 632+ Bootstrap-Methode. Journal of the American Statistical Association, 548–560.

Furlanello, C., Merler, S., Chemini, C. & Rizzoli, A. (1997). Eine Anwendung der Bootstrap 632+ Regel auf ökologische Daten. WIRN 97.

Jiang, W. & Simon, R. (2007). Ein Vergleich der Bootstrap-Methoden und ein angepasster Bootstrap-Ansatz zur Abschätzung des Vorhersagefehlers bei der Microarray-Klassifizierung. Statistics in Medicine, 26 (29), 5320–5334.

Jonathan, P., Krzanowski, W. & McCarthy, W. (2000). Über die Verwendung der Kreuzvalidierung zur Bewertung der Leistung bei der multivariaten Vorhersage. Statistics and Computing, 10 (3), 209–229.

Kim, J.-H. (2009). Schätzung der Klassifizierungsfehlerrate: Wiederholte Kreuzvalidierung, wiederholte Unterbrechung und Bootstrap. Computational Statistics and Data Analysis, 53 (11), 3735–3745. doi: 10.1016 / j.csda.2009.04.009

Kohavi, R. (1995). Eine Studie zur Kreuzvalidierung und zum Bootstrap für die Genauigkeitsschätzung und Modellauswahl. Internationale gemeinsame Konferenz über künstliche Intelligenz, 14, 1137–1145.

Martin, J. & Hirschberg, D. (1996). Kleine Stichprobenstatistik für Klassifizierungsfehlerraten I: Fehlerratenmessungen.

Molinaro, AM (2005). Vorhersagefehlerschätzung: Ein Vergleich der Resampling-Methoden. Bioinformatics, 21 (15), 3301–3307. doi: 10.1093 / bioinformatics / bti499

Sauerbrei, W. & amp; Schumacher1, M. (2000). Bootstrap und Cross-Validation zur Bewertung der Komplexität datengetriebener Regressionsmodelle. Medizinische Datenanalyse, 26–28.

Tibshirani, RJ & Tibshirani, R. (2009). Eine Bias-Korrektur für die minimale Fehlerrate bei der Kreuzvalidierung. Arxiv-Vorabdruck arXiv: 0908.2904.

topepo
quelle
2
Die Bootstrap-Tendenz ist nicht pesimistisch, sondern optimistisch (Simple Bootstrap nicht .0632). Dies liegt daran, dass Bootstrap viele Trainingselemente verwendet, um das Modell zu testen, was zu einem hohen Gewicht für einen Stichprobenfehler führt.
D1X
33

@Frank Harrell hat viel an dieser Frage gearbeitet. Ich kenne keine spezifischen Referenzen.

Ich sehe die beiden Techniken jedoch eher für unterschiedliche Zwecke. Die Kreuzvalidierung ist ein gutes Werkzeug bei der Auswahl des Modells. Sie hilft Ihnen, nicht zu glauben, dass Sie ein gutes Modell haben, wenn Sie tatsächlich überanpassungsfähig sind.

Wenn Ihr Modell repariert ist, ist die Verwendung des Bootstraps (zumindest für mich) sinnvoller.

Eine Einführung in diese Konzepte (plus Permutationstests) mit R finden Sie unter http://www.burns-stat.com/pages/Tutor/bootstrap_resampling.html

Patrick Burns
quelle
2
Ist es sinnvoll, zunächst einen Lebenslauf für die Auswahl eines Modells zu verwenden und anschließend dieselben Daten mit einem Bootstrapping zu versehen, um die Fehler Ihrer Schätzungen zu bewerten? Insbesondere möchte ich eine lineare Regression mit ML für Daten mit unbekanntem nicht-Gaußschen Rauschen durchführen.
Sebhofer
9

Ich verstehe, dass Bootstrapping eine Möglichkeit ist, die Unsicherheit in Ihrem Modell zu quantifizieren, während die Kreuzvalidierung für die Modellauswahl und die Messung der Vorhersagegenauigkeit verwendet wird.

Tal
quelle
Vielen Dank für die Antworten. Ich dachte, Bootstrapping wäre besser, wenn Sie einen kleinen Datensatz haben (<30 obs). Nein?
Erteilung des
Ich würde es mir denken. Eine Kreuzvalidierung ist möglicherweise nicht sinnvoll, wenn Sie eine kleine Stichprobengröße haben. Sie könnten eine Kreuzvalidierung weglassen, aber das ist in der Regel zu optimistisch.
Glen
Beachten Sie auch, dass das Ausführen eines Bootstraps mit einem kleinen Beispiel zu voreingenommenen Schätzungen führt, wie in Efrons Originalpapier angegeben.
Glen
Ist die Messung der Vorhersagegenauigkeit nicht eine Möglichkeit, die Unsicherheit zu quantifizieren? Ich verstehe, dass CV für die Modellauswahl häufiger ist, aber sagen wir, ich möchte die AUC für ein LASSO schätzen. Ist CV oder Bootstrapping besser?
Max Ghenis
9

Ein Unterschied besteht darin, dass bei der Kreuzvalidierung wie bei Jackknife alle Datenpunkte verwendet werden, während beim Bootstrapping, bei dem Ihre Daten zufällig neu abgetastet werden, möglicherweise nicht alle Punkte erreicht werden.

Sie können so lange booten, wie Sie möchten, dh ein größeres Resample, was bei kleineren Samples hilfreich sein sollte.

Der Kreuzvalidierungs- oder Jackknife-Mittelwert stimmt mit dem Stichprobenmittelwert überein, wohingegen es sehr unwahrscheinlich ist, dass der Bootstrap-Mittelwert mit dem Stichprobenmittelwert übereinstimmt.

Da Kreuzvalidierung und Jackknife-Gewicht bei allen Stichprobenpunkten gleich sind, sollten sie ein kleineres (wenn auch möglicherweise falsches) Konfidenzintervall aufweisen als Bootstrap.

Neil McGuigan
quelle
2
Neil, mindestens 2 von 4 deiner Aussagen scheinen falsch zu sein. 1. Auch wenn jede einzelne Boostrap-Stichprobe ~ 63% der ursprünglichen Datenpunkte abdeckt, beträgt die Wahrscheinlichkeit, dass jeder Punkt in mindestens einem von ihnen abgedeckt wird, im Wesentlichen 100%, wenn wir wie üblich viele (z. B. 10k) Bootstrap-Stichproben abtasten. 2. Ich habe gerade eine schnelle numerische Überprüfung durchgeführt - der Durchschnitt der Bootstrap- und Out-of-Bootstrap-Beispiele liegt sehr nahe am Durchschnitt der gesamten Daten. Sie können sich selbst überprüfen
Kochede
Hier ist ein Code (klicken Sie auf "Bearbeiten", um ihn zu formatieren): importiere numpy als np, pandas als pd n = 1000 B = 1000 y = np.random.randn (n) meansb, meansoob = [], [] für b in Bereich (B): ib = np.random.choice (n, n, replace = True) meanb = y [ib] .mean () meansb.append (meanb) indoob = np.ones (n, dtype = bool) indoob [ib] = Falsch meanoob = y [indoob] .mean () meansoob.append (meanoob) pd.Series (meansb) .hist (histtype = 'step') pd.Series (meansoob) .hist (histtype = 'step' ) print np.mean (meansb), np.mean (meansoob), pd.Series (y) .mean ()
Kochede
@Kochede "im Wesentlichen 100%" ist nicht 100%. "Sehr nahe am Durchschnitt" ist nicht dasselbe wie der Durchschnitt. Sie verwenden Wieselwörter. Ich irre mich nicht
Neil McGuigan
Sie geben also nicht nur falsche Antworten, sondern bestehen auch mit Demagogie darauf, ok. Die erwartete Abdeckung der Daten durch Bootstrap-Samples konvergiert mit zunehmender Anzahl von Samples schnell auf 100%. Im obigen Experiment werden nach weniger als 10 Bootstrap-Samples alle Datenpunkte vom Bootstrap getroffen. In ähnlicher Weise Erwartung von durchschnittlich Bootstrap - Proben ist gleich Mittelwert zu probieren. Und im obigen Experiment beträgt der Unterschied nach 1000 Bootstrap-Samples weniger als 0,1% (verwenden Sie np.random.rand anstelle von randn, da der randn-Mittelwert 0 ist)
Kochede,
Hier ist der aktualisierte Code für Ihre Referenz: importiere numpy als np, pandas als pd; n = 1000; B = 1000; y = np.random.rand (n); meansb = []; verdeckt = np.zeros (n, dtype = bool); Reichweite = []; # Schleifenbeginn für b im Bereich (B): ib = np.random.choice (n, n, replace = True); verdeckt [ib] = wahr; coverage.append (covered.sum () * 1.0 / n); meanb = y [ib] .mean (); meansb.append (meanb); #End Loop Print Coverage [: 10]; print np.mean (meansb), pd.Series (y) .mean (); print (np.mean (meansb) - pd.Series (y) .mean ()) / pd.Series (y) .mean ();
Kochede
2

Dies sind zwei Techniken für das Resampling:

Bei der Kreuzvalidierung werden die Daten nach dem Zufallsprinzip in k-fach unterteilt, was zu einer Überanpassung führt. Dieser Ansatz hat jedoch seinen Nachteil. Da zufällige Stichproben verwendet werden, erzeugt eine Stichprobe einen größeren Fehler. CV zu minimieren hat zwar Techniken, ist aber bei Klassifizierungsproblemen nicht so mächtig. Bootstrap hilft dabei, es verbessert den Fehler aus seiner eigenen Beispielprüfung. Weitere Informationen finden Sie hier.

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

Reeves
quelle