Es ist komisch, dass die am meisten aufgerufene Antwort die Frage nicht wirklich beantwortet :), also dachte ich, es wäre schön, dies mit etwas mehr Theorie zu untermauern - hauptsächlich aus "Data Mining: Praktische Tools und Techniken für maschinelles Lernen" und Tom Mitchells "Maschinelles Lernen" .
Einführung.
Wir haben also einen Klassifikator und einen begrenzten Datensatz, und eine bestimmte Datenmenge muss in den Trainingssatz aufgenommen werden, und der Rest wird zum Testen verwendet (falls erforderlich, wird eine dritte Teilmenge zur Validierung verwendet).
Das Dilemma, dem wir gegenüberstehen, ist folgendes: Um einen guten Klassifikator zu finden, sollte die "Trainings-Teilmenge" so groß wie möglich sein, aber um eine gute Fehlerschätzung zu erhalten, sollte die "Test-Teilmenge" so groß wie möglich sein - aber beide Teilmengen werden aus dem entnommen gleicher Pool.
Es ist offensichtlich, dass der Trainingssatz größer sein sollte als der Testsatz - das heißt, die Aufteilung sollte nicht 1: 1 sein (Hauptziel ist das Trainieren , nicht das Testen ) - aber es ist nicht klar, wo die Aufteilung sein sollte.
Holdout-Verfahren.
Die Aufteilung der "Obermenge" in Untermengen wird als Holdout-Methode bezeichnet . Beachten Sie, dass Sie möglicherweise Pech haben und Beispiele für eine bestimmte Klasse in einer der Untermengen fehlen (oder überpräsentiert sein können), die über angesprochen werden können
- zufällige Stichprobe, die sicherstellt, dass jede Klasse in allen Datenuntergruppen richtig dargestellt wird - das Verfahren wird als geschichtetes Holdout bezeichnet
- Zufallsstichprobe mit wiederholtem Training-Test-Validierungsprozess darüber - was als wiederholtes geschichtetes Halten bezeichnet wird
In einem einzelnen (nicht wiederholten) Holdout-Verfahren können Sie die Rollen der Test- und Trainingsdaten vertauschen und die beiden Ergebnisse mitteln. Dies ist jedoch nur plausibel, wenn eine 1: 1-Aufteilung zwischen Trainings- und Testsätzen nicht akzeptabel ist (siehe Einführung) ). Dies liefert jedoch eine Idee und eine verbesserte Methode ( stattdessen wird die sogenannte Kreuzvalidierung verwendet) - siehe unten!
Gegenvalidierung.
Bei der Kreuzvalidierung entscheiden Sie sich für eine feste Anzahl von Falten (Partitionen der Daten). Wenn wir drei Falten verwenden, werden die Daten in drei gleiche Partitionen und aufgeteilt
- Wir verwenden 2/3 für das Training und 1/3 für das Testen
- und wiederholen Sie den Vorgang dreimal, so dass am Ende jede Instanz genau einmal zum Testen verwendet wurde.
Dies wird als dreifache Kreuzvalidierung bezeichnet , und wenn ebenfalls eine Schichtung angewendet wird (was häufig zutrifft), wird dies als geschichtete dreifache Kreuzvalidierung bezeichnet .
Aber siehe da, der Standardweg ist nicht der 2/3: 1/3 Split. Zitat "Data Mining: Praktische Tools und Techniken für maschinelles Lernen" ,
Die Standardmethode [...] ist die Verwendung der geschichteten 10-fachen Kreuzvalidierung. Die Daten werden zufällig in 10 Teile aufgeteilt, in denen die Klasse in etwa den gleichen Anteilen wie im vollständigen Datensatz dargestellt wird. Jeder Teil wird der Reihe nach durchgehalten und das Lernschema auf den verbleibenden neun Zehnteln trainiert. dann wird seine Fehlerrate auf dem Holdout-Set berechnet. Somit wird der Lernvorgang insgesamt 10 Mal an verschiedenen Trainingssätzen (von denen jeder eine Menge gemeinsam hat) durchgeführt. Schließlich werden die 10 Fehlerschätzungen gemittelt, um eine Gesamtfehlerschätzung zu ergeben.
Warum 10? Da „..Extensive Tests auf zahlreiche Datensätze mit unterschiedlichen Lerntechniken, haben gezeigt , dass 10 um die richtige Anzahl von Falten ist die beste Schätzung des Fehlers zu erhalten, und es gibt auch einige theoretische Hinweise darauf , dass dies auf dem Rücken ..“ I haven Ich habe nicht herausgefunden, welche umfangreichen Tests und theoretischen Beweise sie bedeuteten, aber dies scheint ein guter Anfang zu sein, um mehr zu graben - wenn Sie es wünschen.
Sie sagen im Grunde nur
Obwohl diese Argumente keineswegs schlüssig sind und die Debatte in maschinellen Lern- und Data-Mining-Kreisen über das beste Bewertungsschema weiter wütet, ist die 10-fache Kreuzvalidierung in der Praxis zum Standard geworden. [...] Darüber hinaus ist die exakte 10-fache oder 20-fache Kreuzvalidierung nicht magisch.
Bootstrap und - endlich! - die Antwort auf die ursprüngliche Frage.
Wir sind aber noch nicht bei der Antwort angelangt, warum das 2/3: 1/3 oft empfohlen wird. Ich gehe davon aus, dass es von der Bootstrap- Methode geerbt wurde .
Es basiert auf Stichproben mit Ersatz. Zuvor haben wir eine Stichprobe aus dem "Grand Set" in genau eine der Teilmengen eingefügt. Bootstraping ist anders und eine Stichprobe kann leicht sowohl im Training als auch im Test-Set erscheinen.
Schauen wir uns ein bestimmtes Szenario an, in dem wir einen Datensatz D1 mit n Instanzen nehmen und n- mal mit Ersetzung abtasten, um einen weiteren Datensatz D2 mit n Instanzen zu erhalten.
Jetzt genau hinschauen.
Da einige Elemente in D2 (mit ziemlicher Sicherheit) wiederholt werden, müssen im ursprünglichen Datensatz einige Instanzen vorhanden sein, die nicht ausgewählt wurden. Diese werden als Testinstanzen verwendet.
Was ist die Chance, dass eine bestimmte Instanz für D2 nicht erfasst wurde ? Die Wahrscheinlichkeit, bei jedem Take aufgegriffen zu werden, beträgt 1 / n , das Gegenteil ist also (1 - 1 / n) .
Wenn wir diese Wahrscheinlichkeiten miteinander multiplizieren, ist es (1 - 1 / n) ^ n, was e ^ -1 ist, was ungefähr 0,3 ist. Dies bedeutet, dass unser Testsatz ungefähr 1/3 und der Trainingssatz ungefähr 2/3 sein wird.
Ich denke, dies ist der Grund, warum es empfohlen wird, 1/3: 2/3 Split zu verwenden: Dieses Verhältnis wird aus der Bootstrapping-Schätzmethode übernommen.
Verpacken.
Ich möchte mit einem Zitat aus dem Data Mining-Buch (das ich nicht beweisen kann, aber für richtig halte) abschließen, in dem allgemein empfohlen wird, eine 10-fache Kreuzvalidierung zu bevorzugen:
Die Bootstrap-Prozedur ist möglicherweise die beste Methode, um Fehler für sehr kleine Datasets abzuschätzen. Wie die einmalige Kreuzvalidierung weist sie jedoch Nachteile auf, die sich durch die Berücksichtigung einer speziellen [...] künstlichen Situation eines völlig zufälligen Datensatzes mit zwei Klassen veranschaulichen lassen. Die wahre Fehlerrate beträgt 50% für jede Vorhersageregel. Ein Schema, das den Trainingssatz auswendig gelernt hat, würde jedoch eine perfekte Resubstitutionsbewertung von 100% ergeben, so dass etraining instance = 0 ist, und der 0,632-Bootstrap wird dies mit einer Gewichtung von 0,368 to mischen Geben Sie eine Gesamtfehlerrate von nur 31,6% (0,632 ¥ 50% + 0,368 ¥ 0%) an, was irreführend optimistisch ist.
Dies ist das Problem der Verallgemeinerung - das heißt, wie gut unsere Hypothese zukünftige Beispiele, die nicht Teil des Trainingssatzes sind, korrekt klassifizieren wird. Sehen Sie sich dieses fantastische Beispiel an, was passiert ist, wenn Ihr Modell nur den Daten entspricht, die Sie haben, und nicht einem neuen: dem Titius-Bode-Gesetz
quelle
Bisher gab @andreiser eine brillante Antwort auf den zweiten Teil der OP-Frage zur Aufteilung der Trainings- / Testdaten, und @niko erklärte, wie eine Überanpassung vermieden werden kann, aber niemand hat die Frage beantwortet: Warum unterschiedliche Daten für Training und Evaluierung verwenden ? hilft uns, Überanpassungen zu vermeiden.
Unsere Daten sind aufgeteilt in:
Es ist wichtig zu wissen, welche unterschiedlichen Rollen die Validierungs- und Testinstanzen haben.
Siehe Seite 222 von The Elements of Statistical Learning: Data Mining, Inference und Prognose für weitere Details.
quelle