Wann wird Standard Scaler verwendet und wann Normalizer?


12

Ich verstehe, was Standard Scalar macht und was Normalizer macht, gemäß der Scikit-Dokumentation: Normalizer , Standard Scaler .

Ich weiß, wann Standard Scaler angewendet wird. Aber in welchem ​​Szenario wird Normalizer angewendet? Gibt es Szenarien, in denen eines dem anderen vorgezogen wird?


Sie müssen auch nicht immer verwenden : Es lohnt sich auch hinzuzufügen, dass baumbasierte Klassifikator- / Regressor-Algorithmen (RF / XGB / GBT) keine Standardisierung benötigen. Sie können ihnen einfach die Rohdaten zuführen. (Sie können sich trotzdem für eine Standardisierung entscheiden, z. B. zum Zeichnen, Korrelieren, Assoziieren)
smci

Antworten:


9

Sie werden für zwei verschiedene Zwecke verwendet.

StandardScalerändert jede Feature- Spalte inf:,i

f:,i=f:,imean(f:,i)std(f:,i).

Normalizerändert jede Stichprobe in wobei fürxn=(fn,1,...,fn,d)

xn=xnsize(xn),
size(xn)

  1. l1Norm ist,xn1=|fn,1|+...+|fn,d|
  2. l2Norm ist ,xn2=fn,12+...+fn,d2
  3. maxNorm ist .xn=max{|fn,1|,...,|fn,d|}

Betrachten Sie zur Veranschaulichung des Kontrasts den eindimensionalen Datensatz (jeder Datenpunkt hat ein Merkmal). Nach dem Anwenden wird der Datensatz zu . Nach dem Anwenden eines beliebigen Typs wird der Datensatz zu , da das einzige Merkmal durch sich selbst geteilt wird. Hat also keinen Sinn für diesen Fall. Es hat auch keine Verwendung, wenn Merkmale unterschiedliche Einheiten haben, z. B. .{1,2,3,4,5}
StandardScaler{1.41,0.71,0.,0.71,1.41}
Normalizer{1.,1.,1.,1.,1.}Normalizer(height,age,income)

Wie in dieser Antwort erwähnt , Normalizerist dies hauptsächlich nützlich, um die Größe eines Vektors in einem iterativen Prozess zu steuern, z. B. eines Parametervektors während des Trainings, um numerische Instabilitäten aufgrund großer Werte zu vermeiden.


2
  • StandardScaler: Es transformiert die Daten so, dass es einen Mittelwert von 0 und eine Standardabweichung von 1 hat. Kurz gesagt, es standardisiert die Daten . Die Standardisierung ist nützlich für Daten mit negativen Werten. Es ordnet die Daten in einer Standardnormalverteilung an . Es ist bei der Klassifizierung nützlicher als bei der Regression . Sie können diesen Blog von mir lesen .

  • Normalizer: Es drückt die Daten zwischen 0 und 1 aus. Es führt eine Normalisierung durch . Aufgrund der verringerten Reichweite und Größe explodieren die Gradienten im Trainingsprozess nicht und Sie erhalten keine höheren Verlustwerte. Ist bei der Regression nützlicher als bei der Klassifizierung . Sie können diesen Blog von mir lesen .


2
Der Normalisierer, den Sie in Ihrem Blog definiert haben, ist der MinMax-Skalierer. Der Link, den ich zur Normalisierung gesetzt habe, ist anders. Es macht die l2-Norm jeder Datenzeile gleich 1.
Heisenbug

Diese Antwort kann Ihnen helfen.
Shubham Panchal

7
-1: "[Standardisierung] ordnet die Daten in normaler Verteilung an." Sie sollten klarstellen, was Sie damit meinen. Ich habe dies als "Standardisierung transformiert Daten so, dass sie die Normalverteilung haben" gelesen, was nicht stimmt. Sie sollten auch erklären, warum Standardisierung bei der Klassifizierung nützlicher ist als Regression (und umgekehrt für die Normalisierung). Ich bezweifle diese Behauptung.
Artem Mavrin
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.