Ich bin nicht sicher, was Sie in Schritt 7a tun möchten. So wie ich es jetzt verstehe, ergibt es für mich keinen Sinn.
So verstehe ich Ihre Beschreibung: In Schritt 7 möchten Sie die Hold-out-Leistung mit den Ergebnissen einer Kreuzvalidierung vergleichen, die die Schritte 4 bis 6 umfasst (also ja, das wäre eine verschachtelte Konfiguration).
Die Hauptgründe, warum ich diesen Vergleich nicht für sinnvoll halte, sind:
Dieser Vergleich kann nicht zwei der Hauptquellen für überoptimistische Validierungsergebnisse aufdecken, die ich in der Praxis erlebe:
Datenlecks (Abhängigkeit) zwischen Trainings- und Testdaten, die durch eine hierarchische (auch als Cluster bezeichnete) Datenstruktur verursacht werden und bei der Aufteilung nicht berücksichtigt werden. In meinem Bereich haben wir in der Regel mehrere (manchmal Tausende) Ablesungen (= Zeilen in der Datenmatrix) desselben Patienten oder ein biologisches Replikat eines Experiments. Diese sind nicht unabhängig, daher muss die Aufteilung der Validierung auf Patientenebene erfolgen. Wenn jedoch ein solches Datenleck auftritt, haben Sie es sowohl in der Aufteilung für das Hold-Out-Set als auch in der Kreuzvalidierungsaufteilung. Hold-out wäre dann genauso optimistisch eingestellt wie Cross-Validation.
Vorverarbeitung der Daten in der gesamten Datenmatrix, wobei die Berechnungen nicht für jede Zeile unabhängig sind, sondern für die Berechnungsparameter für die Vorverarbeitung viele / alle Zeilen verwendet werden. Typische Beispiele wären zB eine PCA-Projektion vor der "tatsächlichen" Klassifizierung.
Dies würde sich wiederum sowohl auf Ihre Wartezeit als auch auf die äußere Kreuzvalidierung auswirken, sodass Sie sie nicht erkennen können.
Bei den Daten, mit denen ich arbeite, können beide Fehler leicht dazu führen, dass der Bruchteil der Fehlklassifizierungen um eine Größenordnung unterschätzt wird!
Wenn Sie sich auf diesen gezählten Bruchteil der Leistung von Testfällen beschränken, benötigen Modellvergleiche entweder eine extrem große Anzahl von Testfällen oder lächerlich große Unterschiede in der tatsächlichen Leistung. Der Vergleich von 2 Klassifikatoren mit unbegrenzten Trainingsdaten kann ein guter Anfang für das weitere Lesen sein.
Ein Vergleich der Modellqualität, die die innere Kreuzvalidierung für das "optimale" Modell und die äußere Kreuzvalidierung oder Hold-out-Validierung vorgibt, ist jedoch sinnvoll: Wenn die Diskrepanz hoch ist, ist es fraglich, ob Ihre Optimierung der Rastersuche funktioniert hat (was Sie möglicherweise getan haben) Varianz aufgrund der hohen Varianz des Leistungsmaßes). Dieser Vergleich ist einfacher, da Sie Probleme erkennen können, wenn Ihre innere Einschätzung im Vergleich zur anderen lächerlich gut ist. Wenn dies nicht der Fall ist, müssen Sie sich nicht so viele Gedanken über Ihre Optimierung machen. Aber in jedem Fall haben Sie, wenn Ihre äußere (7) Messung der Leistung ehrlich und solide ist, zumindest eine nützliche Schätzung des erhaltenen Modells, ob es optimal ist oder nicht.
Meiner Meinung nach ist das Messen der Lernkurve noch ein anderes Problem. Ich würde das wahrscheinlich separat behandeln, und ich denke, Sie müssen klarer definieren, wofür Sie die Lernkurve benötigen (benötigen Sie die Lernkurve für einen Datensatz des gegebenen Problems, der Daten und der Klassifizierungsmethode oder der Lernkurve?) für diesen Datensatz des gegebenen Problems, Daten und Klassifizierungsverfahrens) und eine Reihe weiterer Entscheidungen (z. B. wie mit der Modellkomplexität als Funktion der Trainingsstichprobengröße umgegangen werden soll? Erneut optimieren, feste Hyperparameter verwenden, festlegen Funktion zum Fixieren von Hyperparametern je nach Trainingssetgröße?)
(Meine Daten enthalten normalerweise so wenige unabhängige Fälle, dass die Messung der Lernkurve so genau ist, dass sie in der Praxis verwendet werden kann. Sie sind jedoch möglicherweise besser beraten, wenn Ihre 1200 Zeilen tatsächlich unabhängig sind.)
update: Was ist "falsch" am Beispiel von Scikit-Learn?
Erstens ist hier nichts falsch an verschachtelter Kreuzvalidierung. Die verschachtelte Validierung ist für die datengesteuerte Optimierung von größter Bedeutung, und die Kreuzvalidierung ist ein sehr leistungsfähiger Ansatz (insbesondere, wenn sie iteriert / wiederholt wird).
Ob überhaupt etwas falsch ist, hängt von Ihrer Sichtweise ab: Solange Sie eine ehrliche verschachtelte Validierung durchführen (wobei die äußeren Testdaten streng unabhängig bleiben), ist die äußere Validierung ein angemessenes Maß für die Leistung des "optimalen" Modells. Daran ist nichts auszusetzen.
Bei der Rastersuche dieser proportionalen Leistungsmessungen für die Hyperparameter-Optimierung von SVM können und können jedoch mehrere Dinge schief gehen. Grundsätzlich bedeutet dies, dass Sie sich (wahrscheinlich?) Nicht auf die Optimierung verlassen können. Trotzdem haben Sie eine ehrliche Einschätzung der Leistung des erhaltenen Modells, solange Ihr äußerer Split ordnungsgemäß durchgeführt wurde, auch wenn das Modell nicht das bestmögliche ist.
Ich werde versuchen, intuitive Erklärungen zu geben, warum die Optimierung Probleme bereiten kann:
Mathematisch / statistisch gesehen besteht das Problem bei den Proportionen darin, dass die gemessenen Proportionen aufgrund der endlichen Stichprobengröße einer großen Varianz unterliegen (abhängig auch von der tatsächlichen Leistung des Modells, ):p^np
Var(p^)=p(1−p)n
Sie brauchen lächerlich viele Fälle (zumindest im Vergleich zu der Anzahl der Fälle, die ich normalerweise haben kann), um die erforderliche Präzision (Bias / Varianz-Sinn) für die Schätzung des Erinnerungsvermögens und der Präzision (maschinelles Lernen, Leistungssinn) zu erreichen. Dies gilt natürlich auch für Verhältnisse, die Sie aus solchen Anteilen berechnen. Sehen Sie sich die Konfidenzintervalle für Binomialverhältnisse an. Sie sind schockierend groß! Oftmals größer als die tatsächliche Verbesserung der Leistung gegenüber dem Hyperparameter-Raster. Und statistisch gesehen ist die Gittersuche ein massives Mehrfachvergleichsproblem: Je mehr Punkte des Gitters Sie auswerten, desto höher ist das Risiko, eine Kombination von Hyperparametern zu finden, die für den von Ihnen bewerteten Zug / Test-Split versehentlich sehr gut aussieht. Das meine ich mit Skimming Varianz.
Man betrachte intuitiv eine hypothetische Änderung eines Hyperparameters, die langsam zu einer Verschlechterung des Modells führt: Ein Testfall nähert sich der Entscheidungsgrenze. Die Leistungskennzahlen für den „harten“ Anteil erkennen dies erst, wenn der Fall die Grenze überschreitet und auf der falschen Seite ist. Dann weisen sie jedoch sofort einen vollen Fehler für eine unendlich kleine Änderung des Hyperparameters zu.
Um eine numerische Optimierung durchführen zu können, muss sich das Leistungsmaß gut verhalten. Das heißt: Weder der sprunghafte (nicht stetig differenzierbare) Teil des verhältnismäßigen Leistungsmaßes noch die Tatsache, dass außer diesem Sprung tatsächlich auftretende Veränderungen nicht erkannt werden, sind für die Optimierung geeignet.
Richtige Bewertungsregeln werden auf eine Weise definiert, die für die Optimierung besonders geeignet ist. Sie haben ihr globales Maximum, wenn die vorhergesagten Wahrscheinlichkeiten mit den tatsächlichen Wahrscheinlichkeiten für jeden Fall übereinstimmen, um zu der fraglichen Klasse zu gehören.
Bei SVMs besteht das zusätzliche Problem, dass nicht nur die Leistungsmessungen, sondern auch das Modell auf diese unruhige Weise reagieren: Kleine Änderungen des Hyperparameters ändern nichts. Das Modell ändert sich nur, wenn die Hyperparameter so stark geändert werden, dass ein Fall entweder nicht mehr Support-Vektor ist oder Support-Vektor wird. Auch solche Modelle sind schwer zu optimieren.
Literatur:
- Brown, L .; Cai, T. & DasGupta, A .: Interval Estimation for a Binomial Proportion, Statistical Science, 16, 101-133 (2001).
- Cawley, GC & Talbot, NLC: Zur Überanpassung bei der Modellauswahl und der anschließenden Auswahlverzerrung bei der Leistungsbewertung, Journal of Machine Learning Research, 11, 2079-2107 (2010).
Gneiting, T. & Raftery, AE: Streng korrekte Bewertungsregeln, Vorhersage und Schätzung, Journal of American Statistical Association, 102, 359-378 (2007). DOI: 10.1198 / 016214506000001437
Brereton, R .: Chemometrics for Pattern Recognition, Wiley, (2009).
weist auf das sprunghafte Verhalten der SVM in Abhängigkeit von den Hyperparametern hin.
Update II: Skimming Varianz
Was Sie sich im Modellvergleich leisten können, hängt natürlich von der Anzahl der unabhängigen Fälle ab. Lassen Sie uns hier eine schnelle und unsaubere Simulation des Risikos von Skimming-Abweichungen durchführen:
scikit.learn
sagt, dass sie 1797 in den digits
Daten haben.
- Nehmen wir an, dass 100 Modelle verglichen werden, z. B. ein Raster für 2 Parameter.10×10
- davon ausgehen, dass beide Parameter (Bereiche) die Modelle überhaupt nicht beeinflussen,
dh alle Modelle haben die gleiche tatsächliche Leistung von beispielsweise 97% (typische Leistung für den digits
Datensatz).
Führen Sie Simulationen zum "Testen dieser Modelle" mit einer Stichprobengröße von 1797 Zeilen im Datensatz durch104digits
p.true = 0.97 # hypothetical true performance for all models
n.models = 100 # 10 x 10 grid
n.rows = 1797 # rows in scikit digits data
sim.test <- replicate (expr= rbinom (n= nmodels, size= n.rows, prob= p.true),
n = 1e4)
sim.test <- colMaxs (sim.test) # take best model
hist (sim.test / n.rows,
breaks = (round (p.true * n.rows) : n.rows) / n.rows + 1 / 2 / n.rows,
col = "black", main = 'Distribution max. observed performance',
xlab = "max. observed performance", ylab = "n runs")
abline (v = p.outer, col = "red")
Hier ist die Verteilung für die beste beobachtete Leistung:
Die rote Linie kennzeichnet die tatsächliche Leistung aller unserer hypothetischen Modelle. Im Durchschnitt beobachten wir nur 2/3 der wahren Fehlerrate für die scheinbar besten der 100 verglichenen Modelle (für die Simulation wissen wir, dass sie alle mit 97% korrekten Vorhersagen gleich gut abschneiden).
Diese Simulation ist offensichtlich sehr vereinfacht:
- Neben der Varianz der Stichprobengröße gibt es mindestens die Varianz aufgrund von Modellinstabilität, daher unterschätzen wir die Varianz hier
- Parameter, die sich auf die Modellkomplexität auswirken, decken in der Regel Parametersätze ab, bei denen die Modelle instabil sind und daher eine hohe Varianz aufweisen.
- Für die UCI-Ziffern aus dem Beispiel hat die ursprüngliche Datenbank ca. 11000 Ziffern von 44 Personen geschrieben. Was ist, wenn die Daten nach der Person gruppiert werden, die sie geschrieben hat? (Dh es ist einfacher, eine von jemandem geschriebene 8 zu erkennen, wenn Sie wissen, wie diese Person beispielsweise eine 3 schreibt?) Die effektive Stichprobengröße kann dann so niedrig wie 44 sein.
- Das Optimieren von Modell-Hyperparametern kann zu einer Korrelation zwischen den Modellen führen (was aus der Perspektive der numerischen Optimierung als gut angesehen wird). Es ist schwierig, den Einfluss davon vorherzusagen (und ich vermute, dass dies unmöglich ist, ohne den tatsächlichen Typ des Klassifikators zu berücksichtigen).
Im Allgemeinen erhöhen jedoch sowohl die geringe Anzahl unabhängiger Testfälle als auch die hohe Anzahl verglichener Modelle die Verzerrung. Das Papier von Cawley und Talbot liefert auch empirisch beobachtetes Verhalten.