Quand utiliser Standard Scaler et quand Normalizer?

12

Je comprends ce que fait Standard Scalar et ce que fait Normalizer, selon la documentation de scikit: Normalizer , Standard Scaler .

Je sais quand Standard Scaler est appliqué. Mais dans quel scénario le Normalizer est-il appliqué? Y a-t-il des scénarios où l'un est préféré à l'autre?

Heisenbug
la source
Vous n'avez pas toujours besoin d'utiliser l'un ou l'autre : il convient également d'ajouter que les algorithmes de classifieur / régresseur arborescents (RF / XGB / GBT) n'ont pas besoin de normalisation, vous pouvez simplement leur fournir les données brutes. (Vous pouvez toujours choisir de faire la standardisation de toute façon, par exemple pour le traçage, la corrélation, les mesures d'association)
smci

Réponses:

9

Ils sont utilisés à deux fins différentes.

StandardScalerchange chaque fonction colonne àf:,i

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

Normalizerchange chaque échantillon en où pourxn=(fn,1,...,fn,d)

xn=xnsize(xn),
size(xn)

  1. l1la norme est,xn1=|fn,1|+...+|fn,d|
  2. l2la norme est ,xn2=fn,12+...+fn,d2
  3. maxla norme est .xn=max{|fn,1|,...,|fn,d|}

Pour illustrer le contraste, considérons l'ensemble de données qui est unidimensionnel (chaque point de données a une caractéristique). Après application , l'ensemble de données devient . Après avoir appliqué n'importe quel type de , l'ensemble de données devient , car la seule fonctionnalité est divisée par elle-même. N'a donc aucune utilité pour ce cas. Il n'a également aucune utilité lorsque les caractéristiques ont des unités différentes, par exemple .{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)

Comme mentionné dans cette réponse , Normalizerest surtout utile pour contrôler la taille d'un vecteur dans un processus itératif, par exemple un vecteur de paramètres pendant la formation, pour éviter les instabilités numériques dues à de grandes valeurs.

Esmailian
la source
2
  • StandardScaler: Il transforme les données de manière à ce qu'il ait une moyenne de 0 et un écart-type de 1. Bref, il standardise les données . La normalisation est utile pour les données qui ont des valeurs négatives. Il organise les données dans une distribution normale standard . Il est plus utile en classification qu'en régression . Vous pouvez lire mon blog .

  • Normalizer: Il comprime les données entre 0 et 1. Il effectue la normalisation . En raison de la diminution de la plage et de l'amplitude, les gradients du processus d'entraînement n'explosent pas et vous n'obtenez pas de valeurs de perte plus élevées. Est plus utile en régression qu'en classification . Vous pouvez lire mon blog .

Shubham Panchal
la source
2
Le normalisateur que vous avez défini dans votre blog est le scaler MinMax. Le lien que j'ai mis pour la normalisation est différent. Cela rend la norme l2 de chaque ligne de données égale à 1.
Heisenbug
Cette réponse peut vous aider.
Shubham Panchal
7
-1: "[la normalisation] organise les données en distribution normale." vous devez clarifier ce que vous entendez par là. J'ai lu cela comme "la normalisation transforme les données pour avoir la distribution normale", ce qui n'est pas vrai. Vous devez également expliquer pourquoi la normalisation est plus utile en classification que la régression (et vice versa pour la normalisation); Je doute de cette affirmation.
Artem Mavrin