Feature-Normalisierung vor oder innerhalb der Modellvalidierung durchführen?

52

Eine gängige Vorgehensweise beim maschinellen Lernen ist die Merkmalsnormalisierung oder Datenstandardisierung der Prädiktorvariablen. Das ist es, die Daten zu zentrieren, wobei der Mittelwert abgezogen wird, und die Division durch die Varianz (oder auch die Standardabweichung) zu normalisieren. Aus Gründen der Selbstbeherrschung und meines Verständnisses tun wir dies, um zwei Hauptziele zu erreichen:

  1. Vermeiden Sie aus Gründen der numerischen Stabilität besonders kleine Modellgewichte.
  2. Stellen Sie eine schnelle Konvergenz von Optimierungsalgorithmen wie z. B. Conjugate Gradient sicher, damit die große Größe einer Prädiktor-Dimension gegenüber den anderen nicht zu einer langsamen Konvergenz führt.

Wir teilen die Daten normalerweise in Trainings-, Validierungs- und Testsätze auf. In der Literatur sehen wir normalerweise, dass zur Merkmalsnormalisierung der Mittelwert und die Varianz (oder die Standardabweichung) über den gesamten Satz von Prädiktorvariablen hinweg berechnet werden. Der große Fehler, den ich hier sehe, ist, dass Sie, wenn Sie das tun, tatsächlich zukünftige Informationen in die Trainingsprädiktorvariablen einführen, nämlich die zukünftigen Informationen, die im Mittelwert und in der Varianz enthalten sind.

Aus diesem Grund normalisiere ich die Trainingsdaten und speichere den Mittelwert und die Varianz. Dann wende ich eine Merkmalsnormalisierung auf die Prädiktorvariablen der Validierungs- und Testdatensätze unter Verwendung des Trainingsmittels und der Varianzen an. Gibt es dabei grundsätzliche Mängel? kann mir jemand eine bessere alternative empfehlen?

SkyWalker
quelle
Siehe auch
steffen 22.11.13

Antworten:

46

Ihr Ansatz ist völlig richtig. Obwohl Datentransformationen häufig als "Vorverarbeitung" unterbewertet werden, kann man nicht genug betonen, dass Transformationen zur Optimierung der Modellleistung als Teil des Modellbildungsprozesses behandelt werden können und sollten.

Begründung: Ein Modell soll auf unsichtbare Daten angewendet werden, die zum Zeitpunkt der Erstellung des Modells im Allgemeinen nicht verfügbar sind. Der Validierungsprozess (einschließlich Datenaufteilung) simuliert dies. Um eine gute Schätzung der Modellqualität (und der Generalisierungskraft) zu erhalten, muss die Berechnung der Normalisierungsparameter (Mittelwert und Varianz) auf den Trainingssatz beschränkt werden.

Ich kann nur raten, warum dies in der Literatur nicht immer der Fall ist. Ein Argument könnte sein, dass die Berechnung von Mittelwert und Varianz nicht so empfindlich für kleine Datenschwankungen ist (aber auch dies gilt nur, wenn die Grundstichprobe groß genug ist und die Daten ohne extreme Ausreißer ungefähr normal verteilt sind).

steffen
quelle
Ich finde das etwas verwirrend. Das OP teilt mit, dass er eine Funktionsnormalisierung für Validierungs- und Testdatensätze durchführt. Ihre Antwort sagt zunächst, dass sein Ansatz korrekt ist. Dann sagst du "man muss die Berechnung der Normalisierungsparameter auf den Trainingssatz beschränken", was nicht das ist, was er tut. Ihre Antwort widerspricht sich also, indem Sie ihm sagen, was er tut, und dann etwas anderes vorschlagen. Was vermisse ich hier?
Mahonya
4
Was das OP tut, wird in seinem letzten Absatz beschrieben, und genau das habe ich gesagt. Natürlich wird die Normalisierung auf das Test- / Validierungsset angewendet, wenn es auf das Trainingsset angewendet wurde. Der wichtige Punkt ist, dass die Parameter dieser Normalisierung nur für die Trainingsdaten und nicht für den gesamten Satz berechnet wurden. Hoffe das hilft.
Steffen
Ah, vielen Dank. Ich habe deine Antwort falsch verstanden. Ich dachte, Sie schlagen die "Anwendung" der Normalisierung nur auf Trainingsgeräte vor, was eindeutig nicht das war, was Sie vorgeschlagen haben.
Mahonya
2

Bei der Feature-Normalisierung werden verschiedene Features im gleichen Maßstab erstellt. Die Skalierung beschleunigt den Gradientenabstieg, indem viele zusätzliche Iterationen vermieden werden, die erforderlich sind, wenn ein oder mehrere Features viel größere Werte als die übrigen annehmen (ohne Skalierung weist die dargestellte Kostenfunktion eine große Asymmetrie auf).

Ich halte es für sinnvoll, den Mittelwert und den Var aus dem Trainingssatz zu verwenden, wenn Testdaten vorliegen. Wenn die Datenmenge jedoch sehr groß ist, können sowohl Trainings- als auch Validierungssätze ungefähr als Normalverteilung angesehen werden, sodass sie ungefähr den Mittelwert und die Var teilen.

lennon310
quelle
1
Der Grund, warum die Datennormalisierung den Gradientenabstieg beschleunigen kann, liegt vermutlich darin, dass das RSS ohne Normalisierung elliptische Konturen aufweist. Bei einer festgelegten Lernrate sind daher möglicherweise mehr Iterationen erforderlich, damit der Gradientenabstieg konvergiert. Während bei der Skalierung rss Kreiskonturen aufweist (symmetrisch), konvergiert der Gradientenabfall schnell. Habe ich recht?
Avocado
1

Die von Ihnen beschriebene Methode ist, wie andere gesagt haben, solide. Sie sollten für Ihre Test-Set-Features genau die gleiche Transformation durchführen wie für Features aus Ihrem Training-Set.

Ich denke, es ist erwähnenswert, dass ein weiterer Grund für die Normalisierung von Features darin besteht, die Leistung bestimmter Prozesse zu verbessern, die empfindlich auf Unterschiede im Maßstab bestimmter Variablen reagieren. Beispielsweise zielt die Hauptkomponentenanalyse (PCA) darauf ab, den größten Anteil der Varianz zu erfassen, und als Folge davon werden Variablen, die die größte Varianz aufweisen, stärker gewichtet, wenn die Merkmalsnormalisierung anfangs nicht durchgeführt wird.

bibzzzz
quelle
Sehr guter Punkt! Vielen Dank, dass Sie es mitgebracht haben. Ich erinnere mich, dass ich aus meinen Studien immer die Eingabematrix normalisierte, bevor ich PCA berechnete.
SkyWalker