Frage:
Warum nicht das gesamte Trainingsset validieren?
osa
2015-01-02 22:34:46 UTC
view on stackexchange narkive permalink

Wir haben einen Datensatz mit 10.000 manuell beschrifteten Instanzen und einen Klassifizierer, der für alle diese Daten trainiert wurde. Der Klassifikator wurde dann anhand ALLER dieser Daten ausgewertet, um eine Erfolgsrate von 95% zu erhalten.

Was genau ist an diesem Ansatz falsch? Ist es nur so, dass die Statistik 95% in diesem Setup nicht sehr informativ ist? Kann diese 95% -Zahl noch einen Wert haben? Obwohl ich verstehe, dass es theoretisch keine gute Idee ist, habe ich nicht genug Erfahrung in diesem Bereich, um mir selbst sicher zu sein. Beachten Sie auch, dass ich den betreffenden Klassifikator weder erstellt noch bewertet habe.

Abgesehen vom gesunden Menschenverstand, könnte mir jemand eine sehr solide, maßgebliche Referenz geben, die besagt, dass dieses Setup irgendwie falsch ist?

Alles, was ich im Internet finde, sind Spielzeugbeispiele, die eine gewisse Intuition vermitteln sollen. Hier habe ich ein Projekt von Profis mit einer etablierten Erfolgsbilanz, daher kann ich nicht einfach sagen, dass dies falsch ist, zumal ich es nicht genau weiß.

Zum Beispiel dies Seite sagt:

Die Bewertung der Modellleistung mit den für das Training verwendeten Daten ist im Data Mining nicht akzeptabel, da dadurch leicht überoptimistische und überangepasste Modelle generiert werden können.

Dies ist jedoch kaum eine maßgebliche Referenz. Tatsächlich ist dieses Zitat eindeutig falsch, da die Bewertung nichts mit der Erzeugung überanpassender Modelle zu tun hat. Es könnte zu überoptimistischen Datenwissenschaftlern führen, die die falschen Modelle auswählen würden, aber eine bestimmte Bewertungsstrategie hat nichts mit Überanpassung von Modellen an sich zu tun.

Viele Leute (zu Recht oder zu Unrecht) verwenden die Modellbewertungen, um ihr endgültiges Modell auszuwählen.In diesem Fall kann eine bestimmte (unangemessene) Bewertungsstrategie in gewisser Weise überangepasste [endgültige] Modelle erzeugen.
Ich würde Ihre Zweifel einfach direkter aufwerfen.Wenn Sie sagen, dass sie Profis mit einer etablierten Erfolgsbilanz sind, warum fragen Sie sie nicht speziell, warum sie kein unabhängiges Test-Set verwendet haben?Ich vermute, es ist ein Missverständnis - vielleicht haben sie einen separaten Testsatz verwendet und anschließend alle Daten trainiert.
@seanv507, werden wir fragen.Ich stelle nur sicher, dass es auf dem Gebiet der Validierung keine aktuellen Forschungsergebnisse zum Trainingsset gibt ...
Obwohl dies keine vollständige Antwort auf Ihre Frage ist, können Sie vielleicht eine gewisse Intuition gewinnen, wenn Sie den folgenden Fall betrachten.Wenn ein Algorithmus alle 10.000 Ihrer beschrifteten Instanzen explizit speichert, hat er eine 100% ige Genauigkeit, wenn eine dieser Instanzen angezeigt wird.Aber was würde es mit einem Label machen, das es noch nie gesehen hatte ...
Jetzt, wo ich darüber nachdenke, sollte jedes vernünftige Modell aufgrund der Art des Lernens, was auch immer es ist, besser abschneiden, wenn es die Daten gesehen hat, an denen es getestet wird.Es wäre wirklich seltsam, wenn ein Modell in anderen realen Datensätzen besser abschneiden würde als in dem, in dem es trainiert wurde, und es scheint statistisch unwahrscheinlich, dass es in beiden Fällen dasselbe erreicht, beispielsweise 81%.
Sieben antworten:
jpl
2015-01-02 22:51:45 UTC
view on stackexchange narkive permalink

Das Argument ist einfach: Wenn Sie ein Modell erstellen, möchten Sie, dass dieses Modell für NEUE, UNSICHTBARE Daten effizient ist, oder? Andernfalls benötigen Sie kein Modell.

Dann muss Ihre Bewertungsmetrik, beispielsweise Genauigkeit und Rückruf, eine Vorstellung davon geben, wie gut sich Ihr Modell bei unsichtbaren Daten verhält.

Wenn Sie nun dieselben Daten auswerten, die Sie für das Training verwendet haben, werden Ihre Präzision und Ihr Rückruf verzerrt (mit ziemlicher Sicherheit höher als sie sollten), da Ihr Modell die Daten bereits gesehen hat.

Angenommen, Sie sind Lehrer und schreiben eine Prüfung für einige Schüler. Wenn Sie ihre Fähigkeiten bewerten möchten, geben Sie ihnen Übungen, die sie bereits gesehen haben und die sie noch auf ihren Schreibtischen haben, oder neue Übungen, die von dem, was sie gelernt haben, inspiriert sind, sich aber von ihnen unterscheiden?

Aus diesem Grund müssen Sie zur Auswertung immer einen völlig unsichtbaren Testsatz aufbewahren. (Sie können auch Kreuzvalidierung verwenden, aber das ist eine andere Geschichte.)

Ja, danke, das alles weiß ich.Gibt es Beweise dafür, etwas, auf das ich verweisen und sagen kann: „Look, hier die 10 Artikel in JEEE und dieses Video sagen alle, dass diese 95% ige Zahl völlig sinnlos ist“?
Nun, Sie könnten ihnen einfach erklären, was der gesunde Menschenverstand vorschreibt.Ich denke, es wäre ziemlich schwierig, einen wissenschaftlichen Artikel zu finden, der auf diese Grundlagen zurückgeht, aber Sie können jeden betreuten Lernkurs überprüfen, zum Beispiel diesen, der zufällig bei Google ausgewählt wurde: http://www.isys.ucl.ac.be/etudes/cours/linf2275/04classification.pdf (von Folie 68)
Wenn Sie jemanden überzeugen möchten, können Sie ein Modell trainieren, das 0 Fehler in Ihren Daten erzielt, indem Sie ein großes neuronales Netz, einen k-nächsten Nachbarn, eine SVM oder eine zufällige Gesamtstruktur verwenden.(Oder eine Tabelle, in der diese Daten gespeichert sind.) Es sollte klar sein, dass dies keine Eigenschaft ist, die auch für zukünftige Daten gilt.
Die Bewertung eines Trainingssatzes basiert auf einer In-Sample-Diagnose wie AIC, $ R ^ 2 $ usw.
Überanpassung ist sicherlich eines der Ergebnisse: Überanpassung bezieht sich auf die Erstellung eines Modells, das perfekt zu Ihren verfügbaren Daten passt, aber zu spezifisch ist, um wahrscheinlich für die allgemeine Vorhersage neuer Daten verwendet zu werden.Genau das ist es.Es ist in gewisser Weise eine andere Art der Überanpassung als die, die auf Modelle mit übermäßig hohen Polynomen oder ähnlichem zurückzuführen ist, bezieht sich jedoch auf dasselbe Problem.
Ja, @osa ist falsch, wenn er sagt, dass es nichts mit Überanpassung zu tun hat.Diese Antwort sollte korrigiert werden.
Richtig, ich habe meine Antwort bearbeitet und meinen letzten Kommentar zur Überanpassung entfernt.
gung - Reinstate Monica
2015-01-02 23:54:00 UTC
view on stackexchange narkive permalink

@jpl hat hier eine gute Erklärung für die Ideen geliefert. Wenn das, was Sie wollen, nur eine Referenz ist, würde ich ein solides, einfaches Lehrbuch verwenden. Einige angesehene Bücher, die sich mit der Idee der Kreuzvalidierung befassen und erklären, warum dies wichtig ist, könnten sein:

Neil G
2015-01-03 00:59:19 UTC
view on stackexchange narkive permalink

Wenn Sie den gesamten Trainingssatz validieren, ist Ihr ideales Modell dasjenige, das nur die Daten speichert. Nichts kann es übertreffen.

Sie sagen, dass "dies realistisch gesehen kein Modell ist, das nur die Daten speichert". Aber warum bevorzugen Sie andere Modelle? Dies ist der Punkt meiner Reduktion auf die Absurdität der Validierung aller Daten: Der Hauptgrund, warum Sie das Modell nicht mögen, das sich alles merkt, was es gesehen hat, ist, dass es überhaupt nicht verallgemeinert wird. Was soll es bei einer Eingabe tun, die es nicht gesehen hat? Sie möchten also ein Modell, das im Allgemeinen funktioniert, und nicht nur das, was es gesehen hat. Die Art und Weise, wie Sie diesen Wunsch nach einer guten Arbeit mit unsichtbaren Daten codieren, besteht darin, die Validierungsdaten so einzustellen, dass sie genau die unsichtbaren Daten sind.

Wenn Sie jedoch wissen, dass Ihre Trainingsbeispiele die wahre Verteilung vollständig darstellen, fahren Sie fort voraus und validieren Sie mit ihnen!

Entgegen den Behauptungen in Ihrem letzten Absatz ist das von Ihnen zitierte Zitat nicht "eindeutig falsch" und diese "bestimmte Bewertungsstrategie" hat "mit überpassenden Modellen" zu tun. Überanpassung bedeutet eher die Anpassung (das Rauschen) der bereitgestellten Trainingsbeispiele als die statistischen Beziehungen allgemeiner Daten. Wenn Sie anhand der gesehenen Daten validieren, bevorzugen Sie Modelle, die für Rauschen geeignet sind, anstatt solche, die mit unsichtbaren Daten gut funktionieren.

Ja, aber realistisch gesehen ist dies kein Modell, das nur die Daten speichert.Ich nehme an, dies ist eine Art Standardklassifikator.Es kann tatsächlich ein sehr gutes Modell sein, ich weiß es einfach nicht genau.
Sogar einige "Standard" -Klassifikatoren speichern die Daten - oder Teile davon.$ k $ - Die nächsten Nachbarn machen das offensichtlich (und nichts weiter);In der Tat muss mit $ k = 1 $ etwas schrecklich falsch mit Ihrer Implementierung sein, wenn Sie nicht 100% des Trainingssatzes erreichen.Naive Bayes speichert nicht * alle * Daten, extrahiert jedoch eine große Menge bedingter Wahrscheinlichkeiten.Diese sollten wirklich als Stichprobenschätzungen mit einer gewissen Unsicherheit behandelt werden, aber die Validierung des gesamten Trainingssatzes "fördert" diese auf den genauen Bevölkerungswert.
@MattKrause, DANKE!Aha.So kann fast jeder binäre / numerische Klassifikator mit einem einstellbaren Parameter als eine Art Interpolation angesehen werden, wobei höhere Einstellungen des Parameters zu einer besseren Anpassung an den Satz führen, auf dem er trainiert wird.In ähnlicher Weise kann ein Klassifikator mit mehreren einstellbaren Parametern als Optimierungsproblem im Trainingssatz angesehen werden, da wir nur optimieren können.(Es sei denn, wir passen die Parameter an, um eine um 50% schlechtere Anpassung des Trainingssatzes als die maximale Anpassung des Trainingssatzes zu erzielen.)Daher sind die meisten Klassifizierer in einigen Bereichen Interpolatoren / Optimierer.
@Neil G, wie ich sehe, ist das Argument, warum die Kreuzvalidierung nicht perfekt ist, dass die Daten "aus derselben Verteilung" stammen. Daher misst das Messen des Prozentsatzes der korrekten Vermutungen, während es zeigt, dass das Modell etwas vorhersagt, möglicherweise nicht die praktische Verwendbarkeitdes Modells in dem Kontext, in dem wir es verwenden möchten.
Die Kreuzvalidierung von @osa: trennt (viele Male) die Daten in einen Trainingssatz und einen Validierungssatz.Trainingsdaten werden nicht zur Validierung wiederverwendet.Ich habe meine Antwort als Antwort auf Ihren ersten Kommentar bearbeitet.
Aksakal
2015-01-03 00:48:22 UTC
view on stackexchange narkive permalink

Hier ist meine einfache Erklärung.

Wenn wir die Realität modellieren, möchten wir, dass unsere Modelle nicht nur vorhandene Fakten erklären, sondern auch die neuen Fakten vorhersagen können. Der Out-of-Sample-Test soll dieses Ziel emulieren. Wir schätzen (trainieren) das Modell anhand einiger Daten (Trainingssatz), versuchen dann, Vorhersagen außerhalb des Trainingssatzes zu treffen und vergleichen die Vorhersagen mit der Holdout-Stichprobe.

Dies ist natürlich nur eine Übung zur Vorhersage, nicht die reale Vorhersage, weil die Holdout-Stichprobe tatsächlich bereits beobachtet wurde. Der eigentliche Vorhersage-Test findet nur statt, wenn Sie das Modell für die Daten verwenden, die noch nicht beobachtet wurden. Sie haben beispielsweise ein Programm für maschinelles Lernen für Werbung entwickelt. Erst wenn Sie es in der Praxis einsetzen und seine Leistung beobachten, wissen Sie sicher, ob es funktioniert oder nicht.

Trotz der Einschränkung des Trainings- / Holdout-Ansatzes ist es dennoch informativ. Wenn Ihr Modell nur im Beispiel funktioniert, ist es wahrscheinlich überhaupt kein gutes Modell. Diese Art des Testens hilft also dabei, schlechte Modelle auszusortieren.

Eine andere Sache, an die Sie sich erinnern sollten: Nehmen wir an, Sie haben eine Schulung / Validierung des Modells durchgeführt. Wenn Sie das Modell jedoch verwenden möchten, werden Sie das Modell wahrscheinlich für den gesamten Datensatz schätzen. Wie zutreffend sind in diesem Fall die Ergebnisse der Validierung des Modells außerhalb der Stichprobe, die anhand der Trainingsstichprobe geschätzt wurde?

"Offensichtlich handelt es sich hierbei nur um eine Übung zur Vorhersage, nicht um die tatsächliche Vorhersage, da die Holdout-Stichprobe tatsächlich bereits beobachtet wurde."--- das ist übrigens nicht so offensichtlich, da das Modell diese Daten nicht beachtet hat.
@osa, richtig, aber der Modellierer hatte die Daten.Ein Modellierer hat die Holdout-Stichprobe möglicherweise bewusst oder unbewusst ausgewählt, um seine Leistungsmetriken außerhalb der Stichprobe usw. zu unterstützen. Deshalb ist diese Art des Testens kein echter "Backtesting", bei dem die neuen Daten wirklich neu sind.t steht einem Modellierer zum Zeitpunkt der Modellierung nicht zur Verfügung.
@Alsakal, guter Punkt über unbewusste Voreingenommenheit.Ich sehe, es ist eine ähnliche Tendenz wie gute Statistiken zu melden und schlechte zu ignorieren.
Wayne
2015-01-03 02:30:02 UTC
view on stackexchange narkive permalink

Andere haben Ihre früheren Absätze beantwortet, also lassen Sie mich Ihren letzten ansprechen. Die Gültigkeit Ihres Punktes hängt von der Interpretation von "Bewertung" ab. Wenn es im Sinne eines endgültigen Durchlaufs nicht sichtbarer Daten verwendet wird, um einen Eindruck davon zu vermitteln, wie gut das von Ihnen ausgewählte Modell in Zukunft voraussichtlich funktionieren wird, ist Ihr Punkt korrekt.

Wenn "Bewertung" verwendet wird Mehr im Sinne eines "Test" -Sets - das heißt, die Ergebnisse des Trainings mehrerer Modelle zu bewerten, um eines auszuwählen - führt die Auswertung der Trainingsdaten zu einer Überanpassung.

mcstar
2015-01-06 04:18:16 UTC
view on stackexchange narkive permalink

Alle anderen Antworten (insbesondere im Zusammenhang mit Überanpassung) sind sehr gut, aber ich möchte nur eines hinzufügen. Die Natur von Lernalgorithmen besteht darin, dass durch das Training sichergestellt wird, dass sie "etwas" Gemeinsames über die Daten lernen, denen sie ausgesetzt sind. Was wir jedoch nicht direkt sicher sein können, ist genau, welche Merkmale der Trainingsdaten sie tatsächlich lernen. Bei der Bilderkennung ist es beispielsweise sehr schwierig, sicher zu sein, ob ein trainiertes neuronales Netzwerk gelernt hat, wie ein Gesicht aussieht, oder etwas anderes, das den Bildern innewohnt. Ein ANN hätte sich beispielsweise merken können, wie die Hemden, Schultern oder Haare aussehen.

Die Verwendung eines separaten Satzes von Testdaten (vom Training nicht gesehen) ist jedoch eine Möglichkeit, das Vertrauen in Sie zu erhöhen Sie können sich darauf verlassen, dass ein Modell mit realen / unsichtbaren Daten erwartungsgemäß funktioniert. Das Erhöhen der Anzahl der Stichproben und der Variabilität der Merkmale hilft ebenfalls. Mit Merkmalsvariabilität ist gemeint, dass Sie mit Daten trainieren möchten, die so viele Variationen aufweisen, die noch für jede Stichprobe zählen.

Wenn Sie beispielsweise wieder Gesichtsdaten verwenden, möchten Sie jedes einzelne Gesicht auf so vielen verschiedenen Hintergründen wie möglich und mit so vielen Variationen in Bezug auf Kleidung, Beleuchtung, Haarfarbe, Kamerawinkel usw. wie möglich anzeigen. Dies hilft sicherzustellen, dass, wenn der ANN "Gesicht" sagt, es wirklich ein Gesicht ist und keine leere Wand im Hintergrund, die die Antwort ausgelöst hat.

testuser
2015-01-03 11:15:09 UTC
view on stackexchange narkive permalink

Hastie et al. haben ein gutes Beispiel im Zusammenhang mit der Kreuzvalidierung, das meiner Meinung nach auch hier gilt. Betrachten Sie eine Vorhersage mit einer extrem hohen Anzahl von Prädiktoren für Daten, bei denen die Prädiktoren und Ergebnisse alle unabhängig voneinander verteilt sind. Nehmen wir zum Zwecke der Argumentation an, dass alles Bernoulli mit p = 0,5 ist.

Wenn Sie über genügend Variablen verfügen, verfügen Sie über einige Prädiktoren, mit denen Sie die Ergebnisse perfekt vorhersagen können. Bei neuen Daten gibt es jedoch keine Möglichkeit, eine perfekte Genauigkeit zu erzielen.

Dies ist nicht genau das Gleiche wie in Ihrem Fall, zeigt jedoch ein Beispiel, bei dem Ihre Methode Sie wirklich in die Irre führen kann .



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...