Hold-out-Validierung vs. Cross-Validierung


54

Mir scheint, dass eine Hold-out-Validierung nutzlos ist. Das heißt, die Aufteilung des Originaldatensatzes in zwei Teile (Training und Testen) und die Verwendung der Testergebnisse als Verallgemeinerungsmaßnahme ist etwas nutzlos.

Die K-fache Kreuzvalidierung scheint bessere Annäherungen an die Generalisierung zu liefern (da sie in jedem Punkt trainiert und testet). Warum sollten wir also die Standard-Holdout-Validierung verwenden? Oder sogar darüber reden?


10
warum denkst du, ist es nutzlos? In Abschnitt 7, Elemente der statistischen Lerntheorie, finden Sie eine formale Analyse ihrer Vor- und Nachteile. Statistisch gesehen ist k-fach besser, aber die Verwendung eines Testsatzes ist nicht unbedingt schlecht. Intuitiv müssen Sie berücksichtigen, dass ein Testsatz (bei korrekter Verwendung) tatsächlich ein Datensatz ist , der beim Training überhaupt nicht verwendet wurde. Es ist also in gewissem Sinne definitiv nützlich, ein Modell zu bewerten. Auch k-fach ist super teuer, also ist Aushalten eine Art "Annäherung" an das, was k-fach macht (aber für jemanden mit geringer Rechenleistung).
Charlie Parker

Sicher. Aus theoretischer Sicht ist K-fach genauer, aber etwas rechenintensiver. Die Frage war: Warum nicht IMMER eine K-fache Kreuzvalidierung durchführen?

2
Aha. Ich würde argumentieren, dass der Grund meistens immer rechnerisch ist. K-fach approximiert den Verallgemeinerungsfehler besser, so dass aus statistischer Sicht K-fach die Methode der Wahl ist, die ich glaube. Hold-out ist viel einfacher zu implementieren UND erfordert nicht so viele Modelle. In der Praxis kann das Trainieren eines Modells sehr teuer sein.
Charlie Parker

1
Richtig - aber ich denke, das Argument "zu rechenintensiv" ist ziemlich schwach. Fast immer sind wir bestrebt, die genauesten Modelle zu entwickeln. Es gibt jedoch ein Paradoxon, bei dem viele der in der Literatur durchgeführten Experimente nur eine einzige Hold-out-Validierungsmenge aufweisen.

1
Frage - Elemente der statistischen Lerntheorie Abschnitt 7.10.1 mit dem Titel "K-fache Kreuzvalidierung" scheint darauf hinzudeuten, dass es ideal ist, die Testdaten von den Trainingsdaten (wie bei der Hold-out-Validierung) zu trennen, und dass die k-fache Validierung nur ein Kompromiss ist Daten sind oft rar. Ich bin noch ein Neuling in der Statistik. Können Sie darauf hinweisen, wie genau die Kreuzvalidierung tatsächlich ist?
Nummer 24.08.16

Antworten:


21

Ich vermute nur, dass Sie mit drei Stunden Programmiererfahrung durchhalten können. Der andere dauert im Prinzip eine Woche und in der Praxis sechs Monate.

Im Prinzip ist es einfach, aber das Schreiben von Code ist mühsam und zeitaufwändig. Wie Linus Torvalds berühmt sagte: "Schlechte Programmierer sorgen sich um den Code. Gute Programmierer sorgen sich um Datenstrukturen und ihre Beziehungen." Viele der Statistiker sind schlechte Programmierer, ohne eigenes Verschulden. Um eine k-fache Kreuzvalidierung effizient durchführen zu können (und damit meine ich, dass es nicht furchtbar frustrierend ist, Datenstrukturen mehrmals zu debuggen und zu verwenden), muss R vage verstanden werden. Datenstrukturen werden jedoch im Allgemeinen im "Intro" übersprungen zu den Tutorials zur statistischen Programmierung. Es ist wie die alte Person, die zum ersten Mal das Internet benutzt. Es ist wirklich nicht schwer, es dauert nur eine zusätzliche halbe Stunde oder so, um das erste Mal herauszufinden, aber es ist brandneu und das macht es verwirrend, so dass es leicht zu ignorieren ist.

Sie haben Fragen wie diese: Wie eine Hold-out - Validierung in R zu implementieren . Keine Straftat für den Fragesteller. Aber viele Leute sind einfach nicht in der Lage, Code zu schreiben. Die Tatsache, dass die Leute überhaupt Kreuzvalidierungen durchführen, ist genug, um mich glücklich zu machen.

Es klingt albern und trivial, aber das kommt aus persönlicher Erfahrung, da ich dieser Typ war und mit vielen Leuten gearbeitet habe, die dieser Typ waren.


18
Vielleicht habe ich als jemand, der CS studiert hat, eine etwas verzerrte Sichtweise dazu, aber wenn Sie die Hold-out-Validierung korrekt implementieren können (was bereits bedeutet, dass Sie den Datensatz in zwei Teile aufteilen und einen für das Training und den anderen zum Testen verwenden), die Das einzige, was Sie ändern müssen, ist das Verhältnis der Aufteilung und setzen Sie das Ganze in eine Schleife. Es scheint nur schwer zu glauben, dass dies ein großes Problem sein würde.
Voo

3
@Voo: Außerdem reicht es hier nicht aus, programmieren zu können: Sie müssen das Problem gut genug verstehen, um beurteilen zu können, für welche Störfaktoren Sie bei der Aufteilung verantwortlich sein müssen. Siehe z . B. stats.stackexchange.com/questions/20010/… . Ich glaube, ich sehe diese Art von Problemen häufiger als "reine" Codierungsprobleme (obwohl man es nie weiß: Wer kaum in der Lage ist, eine einfache Aufteilung der Zeilen in der Datenmatrix zu codieren, macht normalerweise auch den übergeordneten Fehler, keine Aufteilung vorzunehmen zB auf Patientenebene)
cbeleites unterstützt Monica am

Beachten Sie auch, dass Sie ohne Programmierung eine ordnungsgemäße Aufteilung der
Wartezeiten

5
An die Aufsteiger: Beachten Sie, dass ich eine separate Frage gestellt habe, die meine Logik in Frage stellt. stats.stackexchange.com/q/108345/36229
shadowtalker

1
Ich denke nicht, dass die Antwort, die den Unterschied zwischen zwei Kreuzvalidierungsmethoden erklärt, jemals menschliche
Lernzeit sein

40

Hold-out wird häufig als Synonym für die Validierung mit unabhängigen Testsätzen verwendet, obwohl es entscheidende Unterschiede zwischen der zufälligen Aufteilung der Daten und der Erstellung eines Validierungsexperiments für unabhängige Tests gibt.

Unabhängige Testsätze können verwendet werden, um die Generalisierungsleistung zu messen, die nicht durch Resampling oder Hold-out-Validierung gemessen werden kann, z. B. die Leistung für unbekannte zukünftige Fälle (= Fälle, die später nach Abschluss des Trainings gemessen werden). Dies ist wichtig, um zu wissen, wie lange ein vorhandenes Modell für neue Daten verwendet werden kann (z. B. Instrumentendrift). Allgemeiner kann dies als Messung der Extrapolationsleistung beschrieben werden, um die Grenzen der Anwendbarkeit zu definieren.

Ein weiteres Szenario, in dem eine Unterbrechung tatsächlich von Vorteil sein kann, ist: Es ist sehr einfach sicherzustellen, dass die Trainings- und Testdaten ordnungsgemäß getrennt sind - viel einfacher als bei einer Validierung durch erneutes Abtasten: z

  1. Aufteilung entscheiden (zB zufällige Zuordnung von Fällen)
  2. messen
  3. Mess- und Referenzdaten der Trainingsfälle => Modellierung \ Weder Mess- noch Referenzdaten der Testfälle werden der modellierenden Person ausgehändigt.
  4. endgültiges Modell + Messungen der durchgehaltenen Fälle => Vorhersage
  5. Vergleichen Sie die Vorhersagen mit der Referenz für durchgehaltene Fälle.

Abhängig von dem Grad der Trennung, den Sie benötigen, kann jeder Schritt von einer anderen Person ausgeführt werden. In erster Linie kann durch die Nichtübergabe von Daten (auch nicht von Messwerten) der Testfälle an den Modellierer sichergestellt werden, dass keine Testdaten in den Modellierungsprozess gelangen. Auf einer zweiten Ebene könnten die endgültigen Modell- und Testfallmessungen noch jemand anderem übergeben werden, und so weiter.

Ja, Sie zahlen dafür die geringere Effizienz der Hold-out-Schätzungen im Vergleich zur Resampling-Validierung. Aber ich habe viele Artikel gesehen, in denen ich den Verdacht habe, dass die Validierung des Resamplings Fälle nicht richtig trennt (in meinem Bereich gibt es viele gruppierte / hierarchische / gruppierte Daten).

Ich habe meine Lektion über Datenlecks beim erneuten Abtasten gelernt, indem ich eine Woche nach dem Einreichen ein Manuskript zurückgezogen habe, als ich herausfand, dass mein Aufteilungsverfahren (durch Ausführen von Permutationstests nebenbei) ein Leck aufwies (Tippfehler in der Indexberechnung).

Manchmal ist ein Hold-out effizienter, als jemanden zu finden, der bereit ist, die Zeit für die Überprüfung des Resampling-Codes (z. B. für Cluster-Daten) zu verwenden, um das gleiche Maß an Sicherheit über die Ergebnisse zu erlangen. Allerdings ist es normalerweise nicht effizient, dies zu tun, bevor Sie sich in der Phase befinden, in der Sie beispielsweise die zukünftige Leistung messen müssen (erster Punkt) - mit anderen Worten, wenn Sie ohnehin ein Validierungsexperiment für das vorhandene Modell aufbauen müssen.

OTOH: In Situationen mit geringer Stichprobengröße ist eine Unterbrechung keine Option: Sie müssen genügend Testfälle aushalten, damit die Testergebnisse präzise genug sind, um die erforderlichen Schlussfolgerungen zu ziehen binomiales 95% -Konfidenzintervall, das deutlich unter 50:50 liegt!) Frank Harrell würde auf die Faustregel verweisen, dass mindestens ca. Es werden 100 (Test-) Fälle benötigt, um einen Anteil (wie den Bruchteil korrekt vorhergesagter Fälle) mit einer nützlichen Genauigkeit richtig zu messen.


Update: Es gibt Situationen, in denen eine ordnungsgemäße Aufteilung besonders schwierig ist und eine gegenseitige Validierung nicht mehr möglich ist. Betrachten Sie ein Problem mit einer Reihe von Störfaktoren. Das Aufteilen ist einfach, wenn diese Confounder streng verschachtelt sind (z. B. bei einer Studie mit mehreren Patienten werden von jedem Patienten mehrere Proben genommen und von jeder Probe mehrere Zellen analysiert): Sie teilen auf der höchsten Ebene der Stichprobenhierarchie (patientenbezogen) . Möglicherweise haben Sie jedoch unabhängige Confounder, die nicht ineinander verschachtelt sind, z. B. tägliche Abweichungen oder Abweichungen, die von verschiedenen Experimentatoren verursacht werden, die den Test ausführen. Sie müssen dann sicherstellen, dass die Aufteilung für alle unabhängig istConfounder auf der höchsten Ebene (die verschachtelten Confounder sind automatisch unabhängig). Dies zu beheben ist sehr schwierig, wenn einige Störfaktoren nur während der Studie identifiziert werden und das Entwerfen und Durchführen eines Validierungsexperiments möglicherweise effizienter ist als das Behandeln von Splits, bei denen fast keine Daten für das Training oder das Testen der Ersatzmodelle zurückbleiben.


6
Ich wünschte, ich könnte mehr als +1 für diese sehr gründliche Antwort geben. Mir hat es besonders gut gefallen, dass Sie Ihr Problem mit einem Datenleck angesprochen haben, da dies deutlich macht, dass es auch für Experten nicht trivial sein kann, solche Probleme auszuschließen. Dies ist ein guter Realitätscheck!
Marc Claesen

Stellst du nicht die Frage? Ja, aufgrund von Störfaktoren ist das Teilen schwierig, aber es ist schwierig, unabhängig davon, ob Sie eine einzelne Hold-Out-Validierung oder eine k-fache Kreuzvalidierung durchführen, nicht wahr? (Trotzdem danke für eine aufschlussreiche Antwort!)
Nils von Barth

1
@NilsvonBarth: Ich verstehe nicht, wie meine Argumente zirkulär sind: Das OP fragt "warum [überhaupt] Hold-out-Validierung verwendet wird", und ich gebe eine Reihe praktischer Gründe an. Die statistisch effizienteste Verwendung einer begrenzten Anzahl von Fällen ist nicht immer die wichtigste Eigenschaft des Studiendesigns. (Meiner Erfahrung nach ist dies aufgrund der äußerst begrenzten Fallzahlen häufig der Fall: Ich rate viel häufiger zu einem wiederholten / iterierten k-fachen Lebenslauf anstelle einer Unterbrechung). Für einige Confounder ist physische Aufteilung möglich und einfach - und ein sehr effizienter Weg, um Sneak-Previews zu verhindern. Wer weiß, ob wir das doppelt finden ...
cbeleites unterstützt Monica

Irgendwann kann eine verblindete statistische Datenanalyse für zu viele falsch positive Papiere erforderlich sein?
cbeleites unterstützt Monica

2
@NilsvonBarth: Vorsicht mit dem Hold-out, der Unabhängigkeit garantiert: Es ist einfach, das Hold-out so zu implementieren (durch physisches Hold-out von Fällen, dh Probekörper werden weggelegt und erst nach Abschluss des Modelltrainings gemessen), aber oft wird der begriff hold-out für etwas verwendet, das eigentlich eher einer zufälligen aufteilung der daten gleicht - und dann können alle möglichkeiten, fehler bei der aufteilung zu machen, auch mit hold-out gemacht werden!
cbeleites unterstützt Monica

8

Es kann nützlich sein, die Terminologie ein wenig zu klären. Wenn wir eine ganze Zahl kleiner als (oder gleich) wobei die Stichprobengröße ist, und wir die Stichprobe in eindeutige Teilstichproben aufteilen, dann ist das, was Sie als Hold-out-Validierung bezeichnen, wirklich nur 2-fach ( = 2) ) Kreuzvalidierung. Die Kreuzvalidierung ist lediglich ein Instrument zur Schätzung der Fehlerraten (oder Generalisierbarkeit) eines bestimmten Modells außerhalb der Stichprobe. Die Notwendigkeit, die Fehlerrate außerhalb der Stichprobe abzuschätzen, ist weit verbreitet und hat eine ganze Literatur hervorgebracht. Siehe zunächst Kapitel 7 von ESL .n n k kknnkk

Um die Fragen zu beantworten:

  1. Warum darüber reden? Pädagogisch. Es lohnt sich, sich die Hold-out-Validierung als einen speziellen und nur gelegentlich nützlichen Fall einer ansonsten recht nützlichen Methode mit vielen, vielen Variationen vorzustellen.

  2. Warum es benutzen? Wenn man das Glück hat, einen kolossalen Datensatz zu haben (in Bezug auf Beobachtungen, ), dann ist es sinnvoll, die Daten in zwei Hälften zu teilen - Training auf der einen und Testen auf der anderen Seite. Dies ist aus rechnerischen Gründen sinnvoll, da nur einmal angepasst und einmal vorhergesagt werden muss (und nicht mal). Aus der Perspektive der "Schätzung großer Stichproben" ist dies sinnvoll, da Sie eine Menge Beobachtungen haben, auf die Sie Ihr Modell abstimmen können.knk

Eine Faustregel, die ich gelernt habe, lautet: Wenn groß ist, kann klein sein, aber wenn klein ist, sollte in der Nähe von .k n k nnknkn


13
Ich glaube nicht, dass ein Holdout gleichbedeutend mit einer zweifachen Validierung ist, da Sie bei einer zweifachen Validierung zwei Modelle anpassen und dann die Fehler über die beiden Holdout-Sätze mitteln.
Alex

8

Wenn Ihre Modellauswahl- und Anpassungsprozedur aufgrund subjektiver oder teilweise subjektiver Kriterien (Betrachten von Grafiken und dergleichen) nicht festgelegt werden kann, ist die Hold-out-Validierung möglicherweise das Beste, was Sie tun können. (Ich nehme an, Sie könnten in jeder CV-Falz so etwas wie Mechanical Turk verwenden, obwohl ich noch nie davon gehört habe, dass es gemacht wird.)


6

Ich wollte nur ein paar einfache Richtlinien hinzufügen, die Andrew Ng in unserer CS 229-Klasse in Stanford in Bezug auf die Kreuzvalidierung erwähnt hat. Dies sind die Praktiken, denen er in seiner eigenen Arbeit folgt.

Sei die Anzahl der Stichproben in Ihrem Datensatz. Wenn dies nicht der verwenden Sie die Auslassungsüberprüfung.m 20mm20

Wenn verwende eine k-fache Kreuzvalidierung mit einem relativ großen Berücksichtigung des Rechenaufwandes.k m20<m100km

Wenn verwenden Sie die reguläre k-fache Kreuzvalidierung . Wenn die Rechenleistung nicht ausreicht und , verwenden Sie die Hold-Out-Kreuzvalidierung.( k = 5 ) , m > 10 , 000100<m1,000,000(k=5)m>10,000

Wenn die Hold-Out-Cross-Validierung verwenden, aber Rechenleistung verfügbar ist, können Sie die k-fache Cross-Validierung wenn Sie diese zusätzliche Leistung aus Ihrem Modell herausholen möchten.( k = 5 )m1,000,000(k=5)


5

Kurze Antwort:

Ich würde empfehlen, immer einen Lebenslauf mit mindestens für:k=5

  • komplexe Modelle
  • Endergebnisse, die Gültigkeitsbeschränkungen einhalten müssen

Sie könnten dies entspannen für:

  • Training auf sehr großen Datensätzen
  • einfache Modelle trainieren
  • Prototyping, wenn es um Zeit geht

Einige von Ihnen erwähnten, dass das Programmieren in R ein Problem sein könnte. Ich empfehle Ihnen, sich das "mlr" -Paket anzuschauen . Es vereint verschiedene Pakete in einer einheitlichen Oberfläche und bietet außerdem wirklich fortschrittliche Resampling- und Leistungsbewertungsmethoden.

Schauen Sie mal rein : http://mlr-org.github.io/mlr-tutorial/release/html/resample/ und: http://mlr-org.github.io/mlr-tutorial/release/html/performance/ index.htm

Noch ein paar Erklärungen - was CV wirklich tut, ist, den Bias-Varianz-Kompromiss zu knacken:

Nun besteht das Problem, das beide Ansätze zu lösen versuchen, darin, den Generalisierungsfehler abzuschätzen, der von den Daten abhängig ist, die zum Trainieren eines Modells verwendet wurden.

Holdout hat ein Problem mit Voreingenommenheit und Varianz:

Indem wir die Datenmenge, mit der wir testen, verkleinern, erhöhen wir die Varianz unseres geschätzten Generalisierungsfehlers, da die Testdaten die zugrunde liegende Verteilung möglicherweise nicht mehr sehr gut darstellen. Dies selbst führt jedoch nicht zu einer Verzerrung, da die geschätzte Leistung erwartungsgemäß korrekt sein wird.

Die Verkleinerung des Trainingssatzes führt jedoch zu einer pessimistischen Tendenz, da die zugrunde liegende Verteilung in den Daten nicht gut dargestellt wird und das Modell auch nicht zu den Daten passt. Wenn Sie das Trainingsset sehr klein halten, kommt es auch zu Abweichungen.

Da sich die Größe des Trainings und des Test-Sets gegenseitig bestimmen, ergibt sich ein Kompromiss zwischen pessimistischer Tendenz und hoher Varianz.

k - 1k fache Kreuzvalidierung behebt dieses Problem, indem die Trainingsmenge groß gehalten wird (ein Bruchteil von der Daten wird für das Training in jeder Iteration verwendet) und die Varianz des Testfehlers durch erneutes Abtasten behandelt wird . Nach allen Iterationen haben wir die Leistung bei jeder Beobachtung des Datensatzes mit einem Lernenden getestet. Offensichtlich erfordert dies mehr Rechenzeit als einfaches Aussetzen.k1k

Die gegenseitige Validierung ist besonders wichtig für komplexere Lernende (mit hoher Varianz). Diese sind in der Regel auch rechenintensiver, was den gesamten Prozess sehr zeitintensiv machen kann.


3

All dies sind nützliche Kommentare. Berücksichtigen Sie einfach noch einen. Wenn Sie über genügend Daten verfügen, können Sie mit Hold-Out ein bestimmtes Modell (ein bestimmtes SVM-Modell, ein bestimmtes CART-Modell usw.) bewerten. Wenn Sie dagegen andere Verfahren zur gegenseitigen Validierung verwenden, bewerten Sie die Methoden (unter Ihren Problembedingungen) ) anstelle von Modellen (SVM-Methodik, CART-Methodik usw.).

Hoffe das ist hilfreich!


3

Das Modellieren mit zeitkritischen Daten ist für mich eine Ausnahme. K-Falz kann in einigen Fällen nicht funktionieren, wenn Sie die Zukunft auf der Grundlage der vorherigen Daten vorhersagen müssen. Die Test-Sets müssen die zukünftigen Daten sein, und Sie können sie in der Trainingsphase niemals anfassen. ex Vorhersage verkaufen oder die Börse. Durchhalten ist in diesen Fällen nützlich.


Mal seriöse Daten?
Nr.

3

Einfach gesagt; Zeit. Kreuzvalidierung Sie führen die Trainingsroutine k-mal durch (dh einmal für jedes Hold-Out-Set). Wenn Sie über große Datenmengen verfügen, dauert es möglicherweise viele Stunden oder sogar Tage, um das Modell für nur einen Datensatz zu trainieren, sodass Sie dies mit k multiplizieren, wenn Sie die Kreuzvalidierung verwenden.

Obwohl die Kreuzvalidierung die beste Methode ist, ist sie unter bestimmten Umständen nicht durchführbar, und die dafür erforderliche Zeit wäre möglicherweise besser dafür aufgewendet worden, die Daten auf verschiedene Arten zu modellieren oder verschiedene Verlustfunktionen auszuprobieren, um ein besseres Modell zu erhalten.

Meine persönliche Präferenz ist es, Validierungsdaten aus dem gesamten Datensatz zu entnehmen. Anstatt einen einzelnen 10-prozentigen Teil aus dem Kopf oder Schwanz der Daten zu entnehmen, entnehme ich 2% aus 5 Punkten im Datensatz. Das macht die Validierungsdaten ein bisschen repräsentativer für die Daten als Ganzes.


Auch wenn es sich um eine alte Frage und eine neue Antwort handelt, stimme ich dem zu, weil es die unbegründete Behauptung in Frage stellt, dass "K-fach präziser, aber etwas rechenintensiver" ist, die die anderen Antworten ignorierten oder zu schnell überholten.
The Laconic

0

Es ist zu beachten, dass es nicht immer möglich ist, die Kreuzvalidierung anzuwenden. Berücksichtigen Sie die zeitabhängigen Datasets, sodass Sie die Verlaufsdaten verwenden möchten, um ein Vorhersagemodell für das zukünftige Verhalten zu trainieren. In diesem Fall müssen Sie die Hold-Out-Validierung anwenden.


2
In diesem Fall sollten Sie die Validierung weiterleiten.
Neil G
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.