Data Science, Python, Economie ...

Accueil

Mise à l'échelle des données - standardisation et normalisation

La mise à l'échelle consiste à altérer les données afin de réduire leur variance ou leur valeur absolue. Elle est utile pour les cas suivants :

  • Lorsque les variables d'un jeu de données ont des ordres de grandeur différents, ces derniers peuvent fausser les estimations des algorithmes d'apprentissage automatique.

  • Les classificateurs utilisant la distance euclidienne seront affectés si un des composant est distribué sur un espace beaucoup plus grand que les autres.

  • Il sera difficile de comparer les coefficients d'une régression linéaire si les variables sur lesquels ils s'appliquent n'ont pas d'échelle comparable.

  • Le gradient descent est plus rapide si les données partagent la même échelle. (rescaled).

Normalisation 'Min-Max'

C'est la méthode la plus simple, qui met à l'échelle les données de manière à ce qu'elles soient bornées entre $[0, 1]$. Le $max(x)$ sera égal à 1 et le $min(x)$ sera égal à 0.

Elle consiste à soustraire, pour chaque variable, la valeur minimum et à diviser le résultat par l'écart maximum rencontré :

$$ x_{norm} = \frac{x - min(x)}{max(x) - min(x)} $$

Où $x$ est la valeur originelle.

Si l'on veut définir une échelle arbitraire $[a,b]$, on peut utiliser la formule suivante :

$$ x' = a + \frac{(x-min(x))(b-a)}{max(x)-min(x)} $$

À noter : Il est recommandé de supprimer les valeurs aberrantes dans les données avant d'utiliser cette technique. En effet, l'écart $max(x) - min(x)$ sera défini par les valeurs extrêmes.

Standardisation (Normalisation Z-score)

La standardisation donne à une variable une moyenne nulle et un écart-type de 1, similaire à une Loi normaleLoi normale
La densité d'une variable aléatoire $X$ d'espérance $\mu$ et d'écart-type $\sigma$ (notée $X\sim \mathcal{N}\left(\mu, \sigma^{2}\right)$ ) est la suivante :

$$
\frac{1}{\sigma \sqrt{2 \pi}} \exp \left(-\frac{(x-\mu)^{2}}{2 \sigma^{2}}\right)
$$
centrée réduite.

Elle est utilisée notamment pour calculer les statistiques de test comme celle de student.

On la calcule en retranchant à la variable sa moyenne et en divisant le résultat par l'écart-type :

$$ x_{stand} = \frac{x-\mu}{\sigma} $$

ou $x$ est la variable de départ, $\mu$ est sa moyenne et $\sigma$ son écart-type estimé.

Cette transformation assigne à la variable une majorité de valeurs comprises entre $[-1, 1]$, le résultat étant moins dépendant des valeurs aberrantes, contrairement à la normalisation min-max.

Transformation Box-Cox

La transformation Box-Cox fait partie des transformations appelées "power transform". Elles utilisent la puissance ou le log pour transformer rendre linéaire une courbe exponentielle.

log-transform

Population américaine. La courbe de droite est exprimée sur une échelle logarithmique. Source

L'analyse des données est ainsi facilitée, le coefficient de corrélation se rapprochant de 1 et les variations suivant une loi normale :

Coefficient de corrélation en fonction de lambda. Source

La transformation Box-Plot est une version particulière de power transform adaptée à la normalisation des données : $x_{\lambda}^{\prime}=\frac{x^{\lambda}-1}{\lambda}$

Une observation minutieuse nous indique que lorsque $\lambda$ est égal à $0$, la transformation Box-Cox aboutit à une indétermination : elle est égale à 0/0.

Au fur et à mesure que $\lambda \rightarrow 0$, la transformation tend vers :

$$ x_{\lambda}^{\prime}=\frac{e^{\lambda \log (x)}-1}{\lambda} \approx \frac{\left(1+\lambda \log (x)+\frac{1}{2} \lambda^{2} \log (x)^{2}+\cdots\right)-1}{\lambda} \rightarrow \log (x) $$

On donne donc à la transformation les valeurs suivantes en fonction de $\lambda$ :

$$ x_{\lambda}^{\prime}=\left\{\begin{array}{ll} \log \left(x\right) & \text { si } \lambda=0 \\ \left(x^{\lambda}-1\right) / \lambda & \text { sinon } \end{array}\right. $$

On peut alors faire varier $\lambda$ afin de trouver la valeur pour laquelle la distribution s'approche le plus d'une loi normale au moyen d'un test de normalité. Cette étape est réalisée de manière algorithmique par l'ordinateur (utiliser sklearn.preprocessing.power_transform).

Normalisation au vecteur unitaire1

Si ce qui nous intéresse se rapporte à la direction du point $p$ et non à sa distance à l'origine, on peut utiliser la normalisation à l'unité.

A noter : Cette dénomination correspond à la norme d'un vecteurNorme d'un vecteur
La norme est un élément de la définition d'un vecteur correspondant à sa longueur.

Définition

La norme d'un vecteur correspond à la longueur d'un vecteur, c'est-à-dire la distance qui sépare les deux points qui définissent le vecteur.

La définition formelle est la suivante1 :


Si $\overrightarrow{u} \in I!R^n$ alors la Norme ou la Magnitude de $\overrightarrow{u}$ est définie comme la longueur ou la magnitude du vecteur et peut être calculée en utilisant la formule $\vert\vert\vec{u}\ve...
et non à la loi normale.

$$ \frac{p}{L_2(p)} $$

$$ L_2(p) = \sqrt{\sum\limits_{k=0}^n p^2_i} $$

Voir la note sur la Norme d'un vecteurNorme d'un vecteur
La norme est un élément de la définition d'un vecteur correspondant à sa longueur.

Définition

La norme d'un vecteur correspond à la longueur d'un vecteur, c'est-à-dire la distance qui sépare les deux points qui définissent le vecteur.

La définition formelle est la suivante1 :


Si $\overrightarrow{u} \in I!R^n$ alors la Norme ou la Magnitude de $\overrightarrow{u}$ est définie comme la longueur ou la magnitude du vecteur et peut être calculée en utilisant la formule $\vert\vert\vec{u}\ve...
pour une explication plus détaillée sur le sujet.

Cette normalisation est particulièrement utile dans le domaine du NLP, et de la classification en général.

Reférences :

  1. Quelle est l'expression française pour 'unit-vector normalization' ?