Normalisierung vor der Kreuzvalidierung

16

Hat das Normalisieren von Daten (um einen Mittelwert von Null und eine Standardabweichung von Eins zu haben) vor dem Durchführen einer wiederholten Kreuzvalidierung eine negative Konsequenz, wie beispielsweise eine Überanpassung?

Hinweis: Dies gilt für eine Situation, in der #cases> total #features ist

Ich transformiere einige meiner Daten mithilfe einer Protokolltransformation und normalisiere dann alle Daten wie oben beschrieben. Ich führe dann eine Merkmalsauswahl durch. Als Nächstes wende ich die ausgewählten Features und normalisierten Daten auf eine wiederholte 10-fache Kreuzvalidierung an, um zu versuchen, die Leistung des generalisierten Klassifikators abzuschätzen, und befürchte, dass die Verwendung aller Daten zur Normalisierung möglicherweise nicht angemessen ist. Sollte ich die Testdaten für jede Falte mit den aus den Trainingsdaten für diese Falte erhaltenen Normalisierungsdaten normalisieren?

Alle Meinungen dankbar erhalten! Entschuldigung, wenn diese Frage offensichtlich erscheint.

Bearbeiten: Beim Testen (in Übereinstimmung mit den nachstehenden Vorschlägen) stellte ich fest, dass die Normalisierung vor dem Lebenslauf im Vergleich zur Normalisierung innerhalb des Lebenslaufs keinen großen Leistungsunterschied darstellt.

BGreene
quelle

Antworten:

13

Um Ihre Hauptfrage zu beantworten, wäre es optimal und angemessener, innerhalb des Lebenslaufs zu skalieren. Aber es wird wahrscheinlich nicht viel ausmachen und könnte in der Praxis überhaupt nicht wichtig sein, wenn Ihr Klassifikator die Daten neu skaliert, was die meisten tun (zumindest in R).

Die Auswahl der Funktion vor der Kreuzvalidierung ist jedoch ein GROSSES NEIN und führt zu einer Überanpassung, da Sie sie basierend auf ihrer Leistung für den gesamten Datensatz auswählen. Die Protokolltransformation kann außerhalb durchgeführt werden, da die Transformation nicht von den tatsächlichen Daten abhängt (mehr vom Datentyp) und nicht von etwas, was Sie nicht tun würden, wenn Sie nur 90% der Daten anstelle von 100% und hätten wird nicht entsprechend den Daten optimiert.

Um auch auf Ihren Kommentar zu antworten, hängt es natürlich von Ihrer Art der Funktionsauswahl ab, ob dies zu einer Überanpassung führt. Wenn Sie sie zufällig auswählen (warum würden Sie das tun?) Oder aus a priori theoretischen Überlegungen (andere Literatur), spielt es keine Rolle. Aber wenn es von Ihrem Datensatz abhängt, wird es. Elemente des statistischen Lernens haben eine gute Erklärung. Sie können ein PDF hier kostenlos und legal herunterladen: http://www-stat.stanford.edu/~tibs/ElemStatLearn/

Der Punkt, der Sie betrifft, befindet sich in Abschnitt 7.10.2 auf Seite 245 des fünften Ausdrucks. Es trägt den Titel "Die falschen und richtigen Wege zur Kreuzvalidierung".

Erik
quelle
Vielen Dank. Wenn die einzigen gemeldeten Ergebnisse die geschätzte Leistung betreffen, die mit dem ausgewählten Modell (den ausgewählten Funktionen) in jeder Falte erzielt wurde, kann dies nicht zu einer Überanpassung führen. Schließlich geben Sie nur die allgemeine Leistung einer bestimmten Feature-Untermenge an.
BGreene
Ich habe meine Antwort erweitert, um Ihren Kommentar zu adressieren. Ich denke, die Erklärung im Link ist besser als das, was ich mir gerade ausdenken kann.
Erik
Vielen Dank. Dies legt nahe, dass die filterbasierte Standardfeature-Auswahl niemals verwendet werden sollte und stattdessen die wrapperbasierte Feature-Auswahl oder eine entsprechende Option. Gilt dies immer noch für die Situation, in der #Cases> #Features? (Ich habe 259 Fälle, insgesamt 56 Funktionen). Ich würde davon ausgehen, dass das Fehlerpotential hier geringer ist?
BGreene
4

Die Kreuzvalidierung wird am besten als Methode zur Schätzung der Leistung eines statistischen Verfahrens und nicht als statistisches Modell angesehen. Um eine unvoreingenommene Leistungsschätzung zu erhalten, müssen Sie daher jedes Element dieses Vorgangs in jeder Falte der Kreuzvalidierung, einschließlich der Normalisierung, separat wiederholen . Also würde ich sagen in jeder Falte normalisieren.

Dies wäre nur dann nicht erforderlich, wenn das statistische Verfahren völlig unempfindlich gegenüber der Skalierung und dem Mittelwert der Daten wäre.

Dikran Beuteltier
quelle
Ich denke, das ist eine gute Antwort, obwohl es nicht streng ist, kommt es auf den Punkt. Ich denke, dass die Bedeutung ist, dass, wenn Sie in jeder Falte normalisieren, es garantiert ist, dass die Normalisierung die Leistung nicht verzerrt. Die Art und Weise, wie es geschrieben wurde, schien es keinen anderen Weg zu geben, um Verzerrungen zu vermeiden, obwohl Dikran in der letzten Zeile darauf hinwies, dass es andere Wege gibt. Wenn Sie eine Normalisierung innerhalb des CV durchführen, wird die Verzerrung niemals erhöht, im Gegensatz zu einer Normalisierung außerhalb des CV. Wie in der anderen Antwort ausgeführt, dürfte die Voreingenommenheit ohnehin nicht viel bewirken.
Tom Anderson
1

Ich denke, wenn die Normalisierung nur zwei Parameter umfasst und Sie eine gute Stichprobe haben, ist das kein Problem. Ich würde mich mehr um die Transformation und den Variablenauswahlprozess kümmern. 10-fache Kreuzvalidierung scheint heute der letzte Schrei zu sein. Verwendet niemand Bootstrap 632 oder 632+ für die Schätzung der Klassifikatorfehlerrate, wie zuerst von Efron (1983) in JASA und später in einem Artikel von Efron und Tibshirani mit dem 632+ vorgeschlagen?

Michael R. Chernick
quelle
0

Ich persönlich mag die .632-Methode. Welches ist im Grunde Boostrapping mit Ersatz. Wenn Sie das tun und Duplikate entfernen, erhalten Sie 632 Einträge aus einem Eingabesatz von 1000. Art von ordentlich.

MannyK
quelle
Der 632-Schätzer unterscheidet sich von dem, was Sie sagen. handelt es sich um eine lineare Kombination von zwei Fehlerratenschätzern, die dem Bootstrap- Schätzer eine Gewichtung von 0,632 und der scheinbaren Fehlerrate eine 0,368 geben (auch Resubstitutionsschätzung genannt). e0
Michael R. Chernick