Normaliser Standardiser Redimensionner vos Données

Afin de pouvoir analyser vos données et de réaliser tout traitement de préprocessing ou de réduction, il est très important de bien normaliser, standardiser et redimensionner vos données. En voici les tutoriels.

normaliser standardiser redimensionner vos données

Avant de plonger dans ce sujet, commençons par quelques définitions.

« Redimensionner » un vecteur signifie ajouter ou soustraire une constante, puis multiplier ou diviser par une constante, comme vous le feriez pour changer les unités de mesure des données, par exemple, pour convertir une température de Celsius en Fahrenheit.

« Normaliser » un vecteur signifie le plus souvent diviser par une norme du vecteur. Il fait également souvent référence à la remise à l’échelle par le minimum et la plage du vecteur, pour que tous les éléments se situent entre 0 et 1, amenant ainsi toutes les valeurs des colonnes numériques de l’ensemble de données à une échelle commune.

« Standardiser » un vecteur signifie le plus souvent soustraire une mesure de localisation et diviser par une mesure d’échelle. Par exemple, si le vecteur contient des valeurs aléatoires avec une distribution gaussienne, vous pouvez soustraire la moyenne et diviser par l’écart type, obtenant ainsi une variable aléatoire « normale standard » avec une moyenne de 0 et un écart type de 1.

Pourquoi le faire ?

Standardisation :

La standardisation des caractéristiques autour du centre et de 0 avec un écart type de 1 est importante lorsque nous comparons des mesures qui ont des unités différentes. Les variables mesurées à différentes échelles ne contribuent pas de manière égale à l’analyse et peuvent finir par créer un bais.

Par exemple, une variable comprise entre 0 et 1000 l’emportera sur une variable comprise entre 0 et 1. L’utilisation de ces variables sans standardisation donnera la variable avec le poids de la plage la plus large de 1000 dans l’analyse. Transformer les données à des échelles comparables peut éviter ce problème. Les procédures typiques de normalisation des données égalisent la plage et/ou la variabilité des données.

Normalisation :

De même, l’objectif de la normalisation est de modifier les valeurs des colonnes numériques de l’ensemble de données à une échelle commune, sans fausser les différences dans les plages de valeurs. Pour l’apprentissage automatique, chaque ensemble de données ne nécessite pas de normalisation. Il est requis uniquement lorsque les entités ont des plages différentes.

Par exemple, considérons un ensemble de données contenant deux caractéristiques, l’âge et le revenu (x2). Où l’âge varie de 0 à 100 ans, tandis que le revenu varie de 0 à 100 000 et plus. Le revenu est environ 1 000 fois supérieur à l’âge. Ainsi, ces deux caractéristiques sont dans des gammes très différentes. Lorsque nous effectuons une analyse plus approfondie, comme la régression linéaire multivariée, par exemple, le revenu attribué influencera intrinsèquement davantage le résultat en raison de sa valeur plus élevée. Mais cela ne signifie pas nécessairement qu’il est plus important en tant que prédicteur. Nous normalisons donc les données pour amener toutes les variables dans la même plage.

Quand le faire ?

La normalisation est une bonne technique à utiliser lorsque vous ne connaissez pas la distribution de vos données ou lorsque vous savez que la distribution n’est pas gaussienne (une courbe en cloche). La normalisation est utile lorsque vos données ont des échelles variables et que l’algorithme que vous utilisez ne fait pas d’hypothèses sur la distribution de vos données, telles que les k plus proches voisins et les réseaux de neurones artificiels.

La standardisation suppose que vos données ont une distribution gaussienne (courbe en cloche). Cela ne doit pas nécessairement être vrai, mais la technique est plus efficace si votre distribution d’attributs est gaussienne. La standardisation est utile lorsque vos données ont des échelles variables et que l’algorithme que vous utilisez fait des hypothèses sur vos données ayant une distribution gaussienne, comme la régression linéaire, la régression logistique et l’analyse discriminante linéaire.

Standardisation

Comme nous l’avons vu précédemment, la standardisation (ou normalisation du score Z) signifie centrer la variable à zéro et standardiser la variance à 1. La procédure consiste à soustraire la moyenne de chaque observation, puis à diviser par l’écart type.

Le résultat de la normalisation est que les entités seront redimensionnées afin qu’elles aient les propriétés d’une distribution normale standard avec

μ=0 and σ=1

où μ est la moyenne (moyenne) et σ est l’écart type par rapport à la moyenne.

StandardScaler de scikit-learn supprime la moyenne et met les données à l’échelle de la variance unitaire. Nous pouvons importer la méthode StandardScaler de sci-kit learn et l’appliquer à notre ensemble de données.

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler() 
data_scaled = scaler.fit_transform(data)

Vérifions maintenant les valeurs de la moyenne et de l’écart type.

print(data_scaled.mean(axis=0))
print(data_scaled.std(axis=0))
Normaliser Standardiser Redimensionner vos Données normaliser

Comme prévu, la moyenne de chaque variable est maintenant autour de zéro et l’écart type est fixé à 1. Ainsi, toutes les valeurs des variables se situent dans la même plage.

print('Min values (Loan Amount, Int rate and Installment): ', data_scaled.min(axis=0))
print('Max values (Loan Amount, Int rate and Installment): ', data_scaled.max(axis=0))
Normaliser Standardiser Redimensionner vos Données normaliser

Cependant, les valeurs minimales et maximales varient en fonction de l’étalement initial de la variable et sont fortement influencées par la présence de valeurs aberrantes.

Normalisation

Dans cette approche, les données sont mises à l’échelle dans une plage fixe — généralement de 0 à 1.

Contrairement à la normalisation, le coût d’avoir cette plage délimitée est que nous nous retrouverons avec des écarts-types plus petits, ce qui peut supprimer l’effet des valeurs aberrantes. Ainsi, MinMax Scalar est sensible aux valeurs aberrantes.

Une mise à l’échelle Min-Max est généralement effectuée via l’équation suivante :

Normaliser Standardiser Redimensionner vos Données normaliser

Importons MinMaxScalar de Scikit-learn et appliquons-le à notre jeu de données.

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler() 
data_scaled = scaler.fit_transform(data)

Vérifions maintenant les valeurs de la moyenne et de l’écart type.

print('means (Loan Amount, Int rate and Installment): ', data_scaled.mean(axis=0))
print('std (Loan Amount, Int rate and Installment): ', data_scaled.std(axis=0))
Normaliser Standardiser Redimensionner vos Données normaliser

Après MinMaxScaling, les distributions ne sont pas centrées sur zéro et l’écart type n’est pas 1.

print('Min (Loan Amount, Int rate and Installment): ', data_scaled.min(axis=0))
print('Max (Loan Amount, Int rate and Installment): ', data_scaled.max(axis=0))
Normaliser Standardiser Redimensionner vos Données normaliser

Mais les valeurs minimales et maximales sont normalisées à travers les variables, différentes de ce qui se produit avec la standardisation.

Mise à l'échelle robuste

La mise à l’échelle à l’aide de la médiane et des quantiles consiste à soustraire la médiane à toutes les observations, puis à diviser par la différence interquartile. Il met à l’échelle les fonctionnalités à l’aide de statistiques qui résistent aux valeurs aberrantes.

La différence interquartile est la différence entre le 75ème et le 25ème quantile :

IQR = 75th quantile — 25th quantile

L’équation pour calculer les valeurs mises à l’échelle :

X_scaled = (X — X.median) / IQR

Tout d’abord, importez RobustScalar depuis Scikit learn.

from sklearn.preprocessing import RobustScaler
scaler = RobustScaler() 
data_scaled = scaler.fit_transform(data)

Vérifiez maintenant les valeurs de la moyenne et de l’écart type.

print('means (Loan Amount, Int rate and Installment): ', data_scaled.mean(axis=0))
print('std (Loan Amount, Int rate and Installment): ', data_scaled.std(axis=0))
Normaliser Standardiser Redimensionner vos Données normaliser

Comme vous pouvez le voir, les distributions ne sont pas centrées sur zéro et l’écart type n’est pas de 1.

print('Min (Loan Amount, Int rate and Installment): ', data_scaled.min(axis=0))
print('Max (Loan Amount, Int rate and Installment): ', data_scaled.max(axis=0))
Normaliser Standardiser Redimensionner vos Données normaliser

Les valeurs minimale et maximale ne sont pas non plus définies sur certaines limites supérieure et inférieure, comme dans MinMaxScaler.

Partager