Warum gibt es eine Asymmetrie zwischen dem Trainingsschritt und dem Bewertungsschritt?

27

Insbesondere in der Verarbeitung natürlicher Sprachen ist bekannt, dass maschinelles Lernen in zwei Schritten ablaufen sollte, einem Trainingsschritt und einem Bewertungsschritt, und sie sollten unterschiedliche Daten verwenden. Warum ist das? Intuitiv hilft dieser Prozess, eine Überanpassung der Daten zu vermeiden, aber ich sehe keinen (informationstheoretischen) Grund, warum dies der Fall ist.

In diesem Zusammenhang habe ich einige Zahlen gesehen, die gezeigt haben, wie viel eines Datensatzes für das Training und wie viel für die Auswertung verwendet werden soll, z. B. 2/3 bzw. 1/3. Gibt es eine theoretische Grundlage für die Auswahl einer bestimmten Distribution?

Tamzin Blake
quelle

Antworten:

15

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.

andreister
quelle
13

Betrachten Sie eine endliche Menge von m Datensätzen. Wenn Sie alle Datensätze als Trainingssatz verwenden, können Sie alle Punkte mit dem folgenden Polynom perfekt anpassen:

y = a0 + a1 * X + a2 * X ^ 2 + ... + an * X ^ m

Wenn Sie einen neuen Datensatz haben, der nicht im Trainingssatz verwendet wird, und die Werte eines Eingabevektors X sich von denen eines Vektors X unterscheiden, der im Trainingssatz verwendet wird, was können Sie über die Genauigkeit der Vorhersage y sagen?

Ich schlage vor, Sie gehen ein Beispiel durch, in dem Sie einen ein- oder zweidimensionalen Eingabevektor X haben (um das überpassende Polynom zu visualisieren) und prüfen, wie groß der Vorhersagefehler für ein Paar (X, y) ist, bei dem es sich nur um einen X-Wert handelt etwas anders als die Werte aus dem Trainingsset.

Ich weiß nicht, ob diese Erklärung theoretisch genug ist, aber hoffentlich hilft es. Ich habe versucht, das Problem am Regressionsmodell zu erklären, da ich es für intuitiver verständlich halte als andere (SVM, Neuronale Netze ...).

Wenn Sie ein Modell erstellen, sollten Sie die Daten in mindestens einen Trainingssatz und einen Testsatz aufteilen (einige teilen die Daten in einen Trainings-, Evaluierungs- und einen Kreuzvalidierungssatz auf). Normalerweise werden 70% der Daten für den Trainingssatz und 30% für die Auswertung verwendet. Wenn Sie dann das Modell erstellen, müssen Sie den Trainingsfehler und den Testfehler überprüfen. Wenn beide Fehler groß sind, ist Ihr Modell zu einfach (das Modell weist eine hohe Verzerrung auf). Wenn andererseits Ihr Trainingsfehler sehr klein ist, aber ein großer Unterschied zwischen Training und Testfehler besteht, bedeutet dies, dass Ihr Modell zu komplex ist (das Modell weist eine hohe Varianz auf).

Der beste Weg, den richtigen Kompromiss zu wählen, besteht darin, Trainings- und Testfehler für Modelle unterschiedlicher Komplexität aufzuzeichnen und dann den zu wählen, bei dem der Testfehler minimal ist (siehe Abbildung unten). Bildbeschreibung hier eingeben

niko
quelle
5
Dies ist eine wirklich gute Antwort auf das Wie - weniger auf das Warum. Aber vielleicht ist das nur eine falsche Frage - es geht uns wirklich darum, was empirisch funktioniert, nicht die Theorie.
Tamzin Blake
@Thom: Deine Frage ist also wirklich der zweite Absatz und nicht das Ende des ersten ("verstehe nicht warum"), denn was empirisch funktioniert, ist, dass du überangepasst wirst: Dein Modell leistet hervorragende Arbeit im Umgang mit kleinen Macken in deinem Trainingsdaten, die im allgemeinen Fall nicht vorliegen.
winwaed
1
@winwaed Die Fragen lauten "Warum gibt es ...?", "Warum ist das?" und "Gibt es ...?", die alle deutlich durch Fragezeichen gekennzeichnet sind. Ich kenne das Phänomen und finde es intuitiv, und ich kenne empirische Beispiele, aber ich weiß nicht, warum es so ist, und es scheint, dass die Informationstheorie eine Antwort für mich haben sollte. Der obige Kommentar war nur ein Hinweis darauf, dass möglicherweise "Warum" -Fragen nicht besonders relevant sind, wenn Sie empirisch überprüfte Regelmäßigkeiten haben, die Sie ausnutzen können.
Tamzin Blake
7

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

Dov
quelle
Ein gutes Beispiel - es ist sehr ähnlich wie bei wissenschaftlichen Hypothesen. Wir sprechen immer noch über Modelle, egal ob es sich um statistische ML-Modelle oder Modelle des Universums handelt.
winwaed
1

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:

  1. Trainingsinstanzen
  2. Validierungsinstanzen
  3. Testinstanzen

M

M1,...,Mn

Es ist wichtig zu wissen, welche unterschiedlichen Rollen die Validierungs- und Testinstanzen haben.

  1. Trainingsinstanzen - passend zu den Modellen.
  2. Validierungsinstanzen - werden zur Auswahl eines Modells verwendet
  3. Testinstanzen (Evaluierungsinstanzen) - werden verwendet, um die Genauigkeit eines Modells an neuen Daten zu messen

Siehe Seite 222 von The Elements of Statistical Learning: Data Mining, Inference und Prognose für weitere Details.


quelle