Kompendium der Kreuzvalidierungstechniken

43

Ich frage mich, ob irgendjemand von einem Kompendium von Kreuzvalidierungstechniken mit einer Diskussion der Unterschiede zwischen ihnen und einem Leitfaden, wann jeder von ihnen zu verwenden ist, weiß. Wikipedia hat eine Liste der gebräuchlichsten Techniken, aber ich bin gespannt, ob es andere Techniken gibt und ob es Taxonomien dafür gibt.

Beispielsweise stoße ich nur auf eine Bibliothek, in der ich eine der folgenden Strategien auswählen kann:

  • Aushalten
  • Bootstrap
  • K Kreuzvalidierung
  • Lass eins weg
  • Stratified Cross Validation
  • Balanced Stratified Cross Validation
  • Geschichtet durchhalten
  • Geschichteter Bootstrap

und ich versuche zu verstehen, was geschichtet und ausgeglichenes Bootstrappen, Durchhalten oder CV bedeuten.

Wir können diesen Beitrag auch in ein Community-Wiki verwandeln, wenn die Leute dies wünschen, und hier eine Diskussion über Techniken oder Taxonomien sammeln.

user815423426
quelle
Diese großartige Frage wäre umso hilfreicher, wenn wir auf Erklärungen zu jeder der Methoden verweisen könnten.
mkt - Setzen Sie Monica

Antworten:

16

Sie können dieser Liste hinzufügen:

  • Wiederholte Kreuzvalidierung
  • Ausgeschlossene Kreuzvalidierung
  • Out-of-Bag (für zufällige Wälder und andere eingesackte Modelle)
  • Der 632+ Bootstrap

Ich habe nicht wirklich viele Ratschläge, wie man diese Techniken einsetzt oder wann man sie einsetzt. Sie können das Caret- Paket in R verwenden, um CV, Boot, Boot632, One-out-, Group-out- und Out-of-Bag-Cross-Validierung zu vergleichen.

Im Allgemeinen verwende ich das Boostrap, weil es weniger rechenintensiv ist als ein wiederholter k-facher Lebenslauf oder ein ausgelassener Lebenslauf. Boot632 ist der Algorithmus meiner Wahl, da er nicht viel mehr Berechnungen erfordert als der Bootstrap und in bestimmten Situationen besser als die Quervalidierung oder der grundlegende Bootstap sein muss.

Ich verwende fast immer Out-of-Bag-Fehlerschätzungen für zufällige Gesamtstrukturen, anstatt eine Kreuzvalidierung durchzuführen. Out-of-Bag-Fehler sind im Allgemeinen unbefangen, und zufällige Gesamtstrukturen benötigen lange genug, um so zu berechnen.

Zach
quelle
3
Irgendwelche Ratschläge, wann Sie diese verwenden sollten?
Whuber
16

Die K-fach Kreuzvalidierung (CV) zerlegt Ihre Daten nach dem Zufallsprinzip in K Partitionen, und Sie halten im Gegenzug eines dieser K Teile als Testfall fest und fassen die anderen K-1 Teile als Ihre Trainingsdaten zusammen. Leave One Out (LOO) ist der Spezialfall, in dem Sie Ihre N Datenelemente nehmen und einen N-fachen Lebenslauf machen. In gewisser Weise ist Hold Out ein weiterer Sonderfall, bei dem Sie nur eine Ihrer K-Falten als Test auswählen und nicht durch alle K-Falten drehen.

Soweit ich weiß, ist der 10-fache Lebenslauf so ziemlich das A und O, da er Ihre Daten effizient nutzt und auch dazu beiträgt, unglückliche Partitionsentscheidungen zu vermeiden. Hold Out nutzt Ihre Daten nicht effizient und LOO ist nicht so robust (oder so ähnlich), aber das 10-fache ist genau richtig.

Wenn Sie wissen, dass Ihre Daten mehr als eine Kategorie enthalten und eine oder mehrere Kategorien viel kleiner als die anderen sind, enthalten einige Ihrer K zufälligen Partitionen möglicherweise überhaupt keine der kleinen Kategorien, was schlecht wäre. Um sicherzustellen, dass jede Partition einigermaßen repräsentativ ist, verwenden Sie die Schichtung: Teilen Sie Ihre Daten in Kategorien auf und erstellen Sie dann zufällige Partitionen, indem Sie zufällig und proportional aus jeder Kategorie auswählen.

Alle diese Variationen von K-Fold CV wählen Sie ersatzlos aus Ihren Daten. Der Bootstrap wählt Daten mit Ersetzung aus, sodass dasselbe Datum mehrmals eingeschlossen werden kann und einige Daten möglicherweise überhaupt nicht enthalten sind. (Jede "Partition" hat auch N Elemente, im Gegensatz zu K-fach, in denen jede Partition N / K Elemente hat.)

(Ich muss zugeben, dass ich nicht genau weiß, wie der Bootstrap im Lebenslauf verwendet wird. Das Prinzip des Testens und des Lebenslaufs besteht darin, sicherzustellen, dass Sie nicht auf Daten testen, auf die Sie trainiert haben, damit Sie erhalten eine realistischere Vorstellung davon, wie Ihre Technik + Koeffizienten in der realen Welt funktionieren könnten.)

BEARBEITEN: "Hold-Out ist nicht effizient" wurde durch "Hold-Out nutzt Ihre Daten nicht effizient" ersetzt, um dies zu verdeutlichen.

Wayne
quelle
1
Wenn Sie sagen, dass "Durchhalten nicht effizient ist", bin ich mir nicht sicher, ob ich dem folge. Was meinen Sie hier mit Effizienz? Im Gegensatz zur regulären N-Faltung dreht sich Hold Out nicht durch die Faltungen, daher sollte es schneller sein. Meinst du stattdessen, dass es schlimmer ist, Überanpassung zu bekämpfen als normaler N-facher Lebenslauf?
Amelio Vazquez-Reina
2
Mit "effizient" meine ich, dass Ihre Daten nicht effizient genutzt werden. Das Schöne an K-fold CV ist, dass 100% Ihrer Daten für Schulungen und 100% Ihrer Daten für Tests verwendet werden, wodurch Ihre Daten effizient genutzt werden. Der Schlüssel ist natürlich, dass nicht alle Ihre Daten gleichzeitig für Tests und Schulungen verwendet werden, was zu wegoptimistischen Testergebnissen führen würde (Überanpassung). Wenn Sie eine statische Unterteilung vornehmen, bedeutet Hold Out, dass beispielsweise 1/3 Ihrer Daten niemals für Schulungszwecke verwendet werden und 2/3 Ihrer Daten niemals für Testzwecke verwendet werden, wodurch viele Informationen in Ihren Daten verschwendet werden.
Wayne
@ Wayne Ist der Holdout Estimator nicht asymptotisch unvoreingenommen? Außerdem ist ein einfacher k-facher Lebenslauf anfälliger für Typ-II-Fehler als ein wiederholter k-facher Lebenslauf.
chl
@chl: Ich glaube, Sie haben in beiden Punkten Recht. Ich habe keinen wiederholten K-fach Lebenslauf verwendet, aber er sollte eine geringere Varianz haben, was helfen würde.
Wayne
3

Ich fand einen der Verweise, auf die im Wikipedia-Artikel verwiesen wird, sehr nützlich

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.48.529&rep=rep1&type=pdf

"Eine Studie zur Kreuzvalidierung und zum Bootstrap für die Genauigkeitsschätzung und Modellauswahl", Ron Kohavi, IJCAI95

Es enthält einen empirischen Vergleich für eine Untergruppe von CV-Techniken. Die tl; dr-Version ist grundsätzlich "10-fach CV verwenden".

Marco Lui
quelle
1

... und eine Anleitung, wann jeder von ihnen zu verwenden ist ...

Leider ist dieses Problem schwieriger, als es zu würdigen ist. Es gibt mindestens zwei Hauptverwendungen der Kreuzvalidierung: Auswahl eines Modells und Bewertung der Modellleistung.

Grob gesagt, wenn Sie eine CV-Variante verwenden, die die Daten mit einem hohen Zug-zu-Test-Verhältnis aufteilt, kann dies zur Auswertung besser sein. Bei Verwendung eines größeren Trainingssatzes wird die Leistung des Modells, das in den vollständigen Datensatz passt, genauer nachgebildet.

Ein hohes Zug-zu-Test-Verhältnis kann jedoch für die Auswahl schlechter sein. Stellen Sie sich vor, es gibt wirklich ein "bestes" Modell, das Sie "auswählen" sollten, aber Ihr Datensatz ist ziemlich groß. Dann haben zu große Modelle, die leicht überanpassen, fast die gleiche CV-Leistung wie das "beste" Modell (weil Sie ihre unechten Parameter als vernachlässigbar einschätzen können). Zufälligkeit in den Daten und das CV / Splitting-Verfahren führen häufig dazu, dass Sie ein überpassendes Modell anstelle des wirklich "besten" Modells wählen.

Siehe Shao (1993), "Lineare Modellauswahl durch Kreuzvalidierung" für ältere asymptotische Theorien im Fall der linearen Regression. Yang (2007), "Konsistenz der Kreuzvalidierung für den Vergleich von Regressionsverfahren" und Yang (2006), "Lernmethoden für die Klassifikation vergleichen" geben eine asymptotische Theorie für allgemeinere Regressions- und Klassifikationsprobleme. Eine strenge Beratung mit endlichen Stichproben ist jedoch schwer zu bekommen.

civilstat
quelle