Ich habe in letzter Zeit viel auf dieser Site (@Aniko, @Dikran Marsupial, @Erik) und anderswo über das Problem der Überanpassung bei der Kreuzvalidierung gelesen - (Smialowski et al. 2010, Bioinformatics, Hastie, Elements of Statistics Learning). Der Vorschlag ist, dass jede überwachte Merkmalsauswahl (unter Verwendung der Korrelation mit Klassenbezeichnungen), die außerhalb der Modellleistungsschätzung unter Verwendung einer Kreuzvalidierung (oder einer anderen Modellschätzmethode wie Bootstrapping) durchgeführt wird, zu einer Überanpassung führen kann.
Dies scheint mir nicht intuitiv zu sein. Wenn Sie ein Feature-Set auswählen und Ihr Modell dann nur anhand der ausgewählten Features mithilfe einer Kreuzvalidierung bewerten , erhalten Sie eine unvoreingenommene Schätzung der allgemeinen Modellleistung für diese Features (dies setzt voraus, dass die untersuchte Stichprobe repräsentativ ist) der Bevölkerung)?
Mit diesem Verfahren kann man natürlich keinen optimalen Funktionsumfang beanspruchen, aber kann man die Leistung des ausgewählten Funktionsumfangs bei unsichtbaren Daten als gültig melden?
Ich bin damit einverstanden, dass die Auswahl von Funktionen auf der Grundlage des gesamten Datensatzes zu Datenlecks zwischen Test- und Zugsätzen führen kann. Wenn der Funktionsumfang nach der anfänglichen Auswahl statisch ist und keine andere Optimierung durchgeführt wird, ist es sicher gültig, die quervalidierten Leistungsmetriken zu melden.
In meinem Fall habe ich 56 Features und 259 Cases und so #cases> #features. Die Merkmale werden aus Sensordaten abgeleitet.
Entschuldigung, wenn meine Frage nicht eindeutig ist, aber dies scheint ein wichtiger Punkt zu sein, der geklärt werden muss.
Bearbeiten: Beim Implementieren der Featureauswahl innerhalb der Kreuzvalidierung für den oben beschriebenen Datensatz (dank der folgenden Antworten) kann ich bestätigen, dass das Auswählen von Features vor der Kreuzvalidierung in diesem Datensatz eine signifikante Auswirkung hattevorspannen. Diese Abweichung / Überanpassung war am größten, wenn dies für eine 3-Klassen-Formulierung im Vergleich zu einer 2-Klassen-Formulierung durchgeführt wurde. Ich denke, die Tatsache, dass ich die schrittweise Regression für die Merkmalsauswahl verwendet habe, hat diese Überanpassung verstärkt. Zu Vergleichszwecken verglich ich mit einem anderen, aber verwandten Datensatz eine vor der Kreuzvalidierung durchgeführte sequentielle Vorwärts-Merkmalsauswahlroutine mit Ergebnissen, die ich zuvor mit der Merkmalsauswahl in CV erhalten hatte. Die Ergebnisse zwischen beiden Methoden unterschieden sich nicht dramatisch. Dies kann bedeuten, dass eine schrittweise Regression anfälliger für eine Überanpassung ist als eine sequenzielle FS oder eine Eigenart dieses Datensatzes.
quelle
Antworten:
Wenn Sie eine Featureauswahl für alle Daten durchführen und dann eine Kreuzvalidierung durchführen, wurden die Testdaten in jeder Falte des Kreuzvalidierungsverfahrens auch zur Auswahl der Features verwendet, und dies ist der Grund für die Leistungsanalyse.
Betrachten Sie dieses Beispiel. Wir generieren einige Zieldaten, indem wir eine Münze zehnmal umwerfen und aufzeichnen, ob sie als Kopf oder Zahl ausgegeben wird. Als Nächstes generieren wir 20 Features, indem wir die Münze 10 Mal für jedes Feature werfen und aufschreiben, was wir erhalten. Anschließend führen wir die Featureauswahl durch, indem wir das Feature auswählen, das so genau wie möglich mit den Zieldaten übereinstimmt, und dies als unsere Vorhersage verwenden. Wenn wir dann eine Kreuzvalidierung durchführen, erhalten wir eine erwartete Fehlerrate von etwas weniger als 0,5. Dies liegt daran, dass wir das Merkmal in jeder Falte des Kreuzvalidierungsverfahrens auf der Grundlage einer Korrelation gegenüber dem Trainingssatz und dem Testsatz ausgewählt haben. Die wahre Fehlerrate wird jedoch 0,5 sein, da die Zieldaten einfach zufällig sind. Wenn Sie die Featureauswahl innerhalb jeder Falte der Kreuzvalidierung unabhängig durchführen, ist der erwartete Wert der Fehlerrate 0.
Die Schlüsselidee ist, dass die Kreuzvalidierung eine Methode zur Schätzung der Generalisierungsleistung eines Prozesses zum Erstellen eines Modells ist, sodass Sie den gesamten Prozess in jeder Falte wiederholen müssen. Andernfalls erhalten Sie eine voreingenommene Schätzung oder eine Unterschätzung der Varianz der Schätzung (oder beides).
HTH
Hier ist ein MATLAB-Code, der eine Monte-Carlo-Simulation dieses Aufbaus mit 56 Funktionen und 259 Fällen ausführt, um Ihrem Beispiel zu entsprechen. Die Ausgabe ist:
Verzerrter Schätzer: erate = 0.429210 (0.397683 - 0.451737)
Voreingenommener Schätzer: erate = 0.499689 (0.397683 - 0.590734)
Der verzerrte Schätzer ist derjenige, bei dem die Merkmalsauswahl vor der Kreuzvalidierung durchgeführt wird, der unverzerrte Schätzer ist derjenige, bei dem die Merkmalsauswahl unabhängig in jeder Falte der Kreuzvalidierung durchgeführt wird. Dies deutet darauf hin, dass die Verzerrung in diesem Fall abhängig von der Art der Lernaufgabe ziemlich stark sein kann.
quelle
So fügen Sie eine etwas andere und allgemeinere Beschreibung des Problems hinzu:
Wenn Sie irgendeine Art von datengesteuerter Vorverarbeitung durchführen , z
Um die Leistung des endgültigen Modells durch Cross-Validation / Out-of-Bootstrap (/ Hold-Out) -Validierung abzuschätzen , muss die datengesteuerte Vorverarbeitung für die Surrogat-Trainingsdaten durchgeführt werden, dh für jedes Surrogat-Modell separat.
Wenn die datengesteuerte Vorverarbeitung vom Typ 1 ist, führt dies zu einer "doppelten" oder "verschachtelten" Kreuzvalidierung: Die Parameterschätzung wird in einer Kreuzvalidierung nur unter Verwendung des Trainingssatzes der "äußeren" Kreuzvalidierung durchgeführt. Die ElemStatLearn haben eine Illustration ( https://web.stanford.edu/~hastie/Papers/ESLII.pdf Seite 222 von Druck 5).
Sie können sagen, dass die Vorverarbeitung wirklich Teil des Modellbaus ist. Nur die Vorverarbeitung wird durchgeführt
kann aus der Validierungsschleife genommen werden, um Berechnungen zu speichern.
Umgekehrt: Wenn Ihr Modell vollständig aus Kenntnissen außerhalb des jeweiligen Datensatzes aufgebaut ist (z. B. wenn Sie zuvor durch Ihr Fachwissen entscheiden, dass die Messkanäle 63 - 79 möglicherweise nicht zur Lösung des Problems beitragen können, können Sie diese Kanäle natürlich ausschließen Wenn Sie eine PLS-Regression durchführen und nach Ihren Erfahrungen feststellen, dass 3 latente Variablen eine vernünftige Wahl sind (aber nicht herumspielen, ob 2 oder 5 bessere Ergebnisse liefern), können Sie dies auch tun Fahren Sie mit einer normalen Out-of-Bootstrap- / Cross-Validierung fort.
quelle
Lassen Sie uns versuchen, es ein bisschen intuitiv zu machen. Betrachten Sie dieses Beispiel: Sie haben einen binär abhängigen und zwei binäre Prädiktoren. Sie möchten ein Modell mit nur einem Prädiktor. Beide Prädiktoren haben eine Wahrscheinlichkeit von 95%, der abhängigen Person gleich zu sein, und eine Wahrscheinlichkeit von 5%, der abhängigen Person nicht zuzustimmen.
Nun ist zufällig in 97% der Fälle ein Prädiktor gleich dem von den gesamten Daten abhängigen und der andere nur in 93% der Fälle. Sie wählen den Prädiktor mit 97% und bauen Ihre Modelle. In jeder Falte der Kreuzvalidierung haben Sie den modellabhängigen Prädiktor =, weil er fast immer richtig ist. Daher erhalten Sie eine überproportionale prognostizierte Leistung von 97%.
Nun könnte man sagen, ok, das ist einfach Pech. Wenn die Prädiktoren jedoch wie oben konstruiert sind, haben Sie die Chance, dass 75% von mindestens einem davon eine Genauigkeit von> 95% für den gesamten Datensatz haben, und das ist derjenige, den Sie auswählen werden. Sie haben also eine Chance von 75%, die Leistung zu überschätzen.
In der Praxis ist es überhaupt nicht trivial, den Effekt abzuschätzen. Es ist durchaus möglich, dass Ihre Featureauswahl in jeder Falte dieselben Features auswählt, als ob Sie dies für den gesamten Datensatz getan hätten, und dass dann keine Verzerrung auftritt. Der Effekt wird auch kleiner, wenn Sie viel mehr Samples, aber Features haben. Es kann hilfreich sein, beide Methoden mit Ihren Daten zu verwenden und festzustellen, wie sich die Ergebnisse unterscheiden.
Sie können auch eine Datenmenge (z. B. 20%) beiseite legen, Ihre Methode und die richtige Methode verwenden, um Leistungsschätzungen zu erhalten, indem Sie eine Kreuzvalidierung für die 80% durchführen und feststellen, welche Leistungsvorhersage sich als genauer herausstellt, wenn Sie Ihr Modell auf die 20 übertragen % des Datensatzes beiseite. Damit dies funktioniert, muss Ihre Featureauswahl vor dem Lebenslauf auch nur für 80% der Daten durchgeführt werden. Andernfalls wird die Übertragung Ihres Modells auf Daten außerhalb Ihrer Stichprobe nicht simuliert.
quelle