Ich baue Regressionsmodelle. Als Vorverarbeitungsschritt skaliere ich meine Merkmalswerte auf Mittelwert 0 und Standardabweichung 1. Müssen die Zielwerte auch normalisiert werden?
Ich baue Regressionsmodelle. Als Vorverarbeitungsschritt skaliere ich meine Merkmalswerte auf Mittelwert 0 und Standardabweichung 1. Müssen die Zielwerte auch normalisiert werden?
Antworten:
Lassen Sie uns zunächst analysieren, warum die Merkmalsskalierung durchgeführt wird. Die Merkmalsskalierung verbessert die Konvergenz von Algorithmen für steilste Abfahrten, die nicht die Eigenschaft der Skaleninvarianz besitzen.
Bei Trainingsbeispielen mit stochastischem Gefälle informieren Sie die Gewichtsaktualisierungen iterativ wie :
Wobei die Gewichte sind, eine Schrittweite ist, der Gradient bezüglich der Gewichte ist, eine Verlustfunktion ist, die durch parametrisierte Funktion ist , ein Trainingsbeispiel ist und die Antwort / Bezeichnung ist.
Vergleichen Sie die folgenden konvexen Funktionen, die die richtige Skalierung und die falsche Skalierung darstellen.
Ein Schritt durch eine Gewichtsaktualisierung von Größe führt zu einer viel besseren Verringerung des Fehlers im richtig skalierten Fall als im falsch skalierten Fall. Unten ist die Richtung von der Länge .
Das Normalisieren der Ausgabe wirkt sich nicht auf die Form von , daher ist dies im Allgemeinen nicht erforderlich.
Ich kann mir nur vorstellen, dass die Skalierung der Ausgaben Auswirkungen hat, wenn Ihre Antwortvariable sehr groß ist und / oder Sie f32-Variablen verwenden (was bei der linearen GPU-Algebra üblich ist). In diesem Fall ist es möglich, einen Gleitkommaüberlauf eines Elements der Gewichte zu erhalten. Das Symptom ist entweder ein Inf-Wert oder es wird zur anderen extremen Darstellung umgebrochen.
Im Allgemeinen ist es nicht notwendig. Durch die Skalierung von Eingaben wird vermieden, dass ein oder mehrere Merkmale andere in ihrer Größe dominieren. Infolgedessen erfasst das Modell den Beitrag der kleineren Skalierungsvariablen kaum, selbst wenn diese stark sind. Wenn Sie das Ziel skalieren, wird der mittlere quadratische Fehler automatisch skaliert. MSE> 1 bedeutet automatisch, dass Sie schlechter abschneiden als eine konstante (naive) Vorhersage.
Nein, lineare Transformationen der Antwort sind niemals notwendig. Sie können jedoch hilfreich sein, um die Interpretation Ihres Modells zu erleichtern. Wenn Ihre Antwort zum Beispiel in Metern angegeben wird, aber normalerweise sehr klein ist, kann es hilfreich sein, auf Millimeter zu skalieren. Beachten Sie auch, dass das Zentrieren und / oder Skalieren der Eingaben aus demselben Grund nützlich sein kann. Beispielsweise können Sie einen Koeffizienten grob als den Effekt auf die Änderung der Antwort pro Einheit im Prädiktor interpretieren, wenn alle anderen Prädiktoren auf 0 gesetzt sind . Aber 0 ist oft kein gültiger oder interessanter Wert für diese Variablen. Durch Zentrieren der Eingaben können Sie den Koeffizienten als den Effekt pro Einheit interpretieren, der sich ändert, wenn die anderen Prädiktoren ihre Durchschnittswerte annehmen.
Andere Transformationen (z. B. log oder Quadratwurzel) können hilfreich sein, wenn die Antwort in den Prädiktoren auf der ursprünglichen Skala nicht linear ist. In diesem Fall können Sie allgemeine lineare Modelle lesen, um festzustellen, ob sie für Sie geeignet sind.
Es hat Auswirkungen auf Gradientenabfallsaktualisierung in einem schlechten Weg. Überprüfen Sie die Formel für den Gefälle-Abstieg:
Nehmen wir an, ist eine Funktion, die 1000-mal größer als
für wir . Der optimale Weg, um (0,0) zu erreichen, welches das globale Optimum ist, besteht darin, sich über die Diagonale zu bewegen, aber wenn eines der Merkmale das andere in Bezug auf den Maßstab dominiert, tritt dies nicht auf.
Zur Veranschaulichung: Wenn Sie die Transformation , nehmen Sie eine einheitliche Lernrate für beide Koordinaten an und berechnen Sie den Gradienten dannDie funktionale Form ist dieselbe, aber die Lernrate für die zweite Koordinate muss auf 1/1000 derjenigen für die erste Koordinate angepasst werden, damit sie dieser entspricht. Wenn nicht, dominiert die Koordinate zwei und der Vektor zeigt mehr in diese Richtung.
Infolgedessen spannt es das Delta so vor, dass es nur in diese Richtung zeigt, und verlangsamt die Konvergenz.
Ja , Sie müssen die Zielvariable skalieren. Ich werde diese Referenz zitieren :
Eine Zielvariable mit einer großen Wertespreizung kann wiederum zu großen Fehlergradientenwerten führen, wodurch sich die Gewichtungswerte dramatisch ändern und der Lernprozess instabil wird.
In der Referenz finden Sie auch eine Demonstration des Codes, bei der die Modellgewichte während des Trainings aufgrund der sehr großen Fehler explodierten und die für Gewichtsaktualisierungen berechneten Fehlergradienten ebenfalls explodierten. Kurz gesagt, wenn Sie die Daten nicht skalieren und sehr große Werte haben, stellen Sie sicher, dass Sie sehr kleine Lernratenwerte verwenden. Dies wurde auch von @drSpacy erwähnt.