Scaling et normalisation: résoudre le problème des échelles hétérogènes
Pourquoi les différences d’échelle posent problème dans les données?
Dans un jeu de données, toutes les variables numériques n’utilisent pas la même échelle. Certaines sont exprimées en mètres, d’autres en euros, d’autres encore en pourcentages ou en milliers d’unités. Pour un humain, ces différences semblent naturelles, mais pour un algorithme, elles créent un déséquilibre important. Une variable avec de grandes valeurs peut dominer toutes les autres, influencer les distances, perturber les gradients ou orienter les décisions du modèle même si elle n’est pas réellement plus importante. Par conséquent, certains modèles apprennent mal, convergent difficilement ou donnent des prédictions biaisées simplement parce que les échelles ne sont pas comparables.
Pour éviter ces déséquilibres, on applique des transformations qui remettent toutes les variables sur des bases comparables. Le scaling ajuste l’échelle des données pour que leurs valeurs soient centrées ou ramenées dans un intervalle cohérent, tandis que la normalisation transforme chaque observation pour qu’elle soit comparable aux autres en termes de magnitude. Ces techniques ne modifient pas l’information elle‑même, mais elles garantissent que chaque variable contribue équitablement à l’apprentissage. Elles deviennent indispensables pour les modèles sensibles aux distances, aux gradients ou aux variations d’échelle comme c'est le cas des KNN, les SVM ou la régression linéaire.
Scaling (mise à l'échelle) avec min‑max (MinMaxScaler)
Le
Min‑Max scaling ramène les valeurs d’une variable dans un intervalle donné, généralement [0,1]. L’idée consiste simplement à regarder la plus petite valeur observée \(x_{\min }\) et la plus grande \(x_{\max }\), puis on "étire" ou "rétrécit" toutes les autres valeurs pour qu’elles rentrent dans cet intervalle.
Cette technique est très utile lorsque l’on souhaite conserver la forme de la distribution tout en harmonisant les amplitudes.
La transformation s’écrit:
\(x_{\mathrm{scaled}}=\frac{x-x_{\min }}{x_{\max }-x_{\min }}\)
Où \(x_{min }\) et \(x_{max }\) sont les valeurs minimale et maximale observées.
Cette méthode est utile parce qu’elle ne change pas la forme de la distribution. En effet, les valeurs restent dans le même ordre, les écarts relatifs sont conservés, mais tout est ramené à une échelle commune. Cela permet aux modèles de ne pas être influencés par des variables qui auraient des valeurs beaucoup plus grandes que les autres.
Standardisation (StandardScaler)
La
standardisation (conne aussi sous le nom
Z‑score normalization) consiste à transformer chaque variable pour qu’elle soit centrée autour de 0 et exprimée en nombre d’écarts‑types par rapport à la moyenne. La standardisation sert à transformer une variable pour qu’elle soit exprimée sur une échelle plus "neutre". En effet, on recentre toutes les valeurs autour de 0 et on les exprime en nombre d’écarts‑types par rapport à la moyenne. Concrètement, on regarde à quel point chaque valeur s’éloigne de la moyenne puis on divise cet écart par la dispersion générale de la variable (l’écart‑type).
Cette transformation est particulièrement utile lorsque les données suivent une distribution approximativement normale. Pour une variable \(x\), la formule est:
\(x_{\mathrm{scaled}}=\frac{x-\mu }{\sigma }\)
Où \(\mu\) est la moyenne de la variable et \(\sigma\) son écart‑type.
Cette transformation est très utile lorsque les variables n’ont pas la même amplitude ou la même unité, car elle permet aux modèles d’interpréter chaque feature de manière équilibrée sans qu’une variable à grande échelle ne domine les autres.
Robust Scaling (RobustScaler)
Le
RobustScaler est conçu pour résister aux valeurs extrêmes (outliers). Au lieu d’utiliser la moyenne et l’écart‑type, il se base sur la médiane et l’écart interquartile (IQR), ce qui rend la transformation beaucoup plus stable. La formule est:
\(x_{\mathrm{scaled}}=\frac{x-\mathrm{median}(x)}{\mathrm{IQR}(x)}\)
Où \(\mathrm{IQR}(x)=Q_3-Q_1\).
Cette méthode est particulièrement utile lorsque le jeu de données contient des valeurs très éloignées du reste (qu’on appelle des outliers). Ces valeurs extrêmes peuvent fortement influencer les techniques de scaling classiques, car celles‑ci utilisent la moyenne et l’écart‑type qui sont deux mesures très sensibles aux anomalies. Par exemple, une seule valeur anormalement grande peut augmenter artificiellement la moyenne et "étirer" toute la distribution, ce qui fausse complètement la mise à l’échelle.
Le RobustScaler s’appuie sur la médiane et l’écart interquartile (IQR) qui ne bougent presque pas même en présence d’outliers. Cela permet d’obtenir une transformation plus stable, plus représentative de la majorité des données, et donc mieux adaptée aux situations où les valeurs aberrantes risquent de perturber les scalers traditionnels.
Normalisation L2 (norme euclidienne)
La
normalisation L2 consiste à transformer chaque observation (c’est‑à‑dire chaque ligne du jeu de données) pour que la somme des carrés de ses valeurs soit égale à 1. Autrement dit, on ne modifie pas les variables une par une, mais on ajuste l’ensemble du vecteur pour qu’il ait une "longueur" standardisée.
Pour un vecteur \(x=(x_1,x_2,\dots ,x_n)\), la normalisation L2 est :
\(x_{\mathrm{norm}}=\frac{x}{\sqrt{\sum _{i=1}^nx_i^2}}\)
Pour simplifier, on peut imaginer que chaque observation comme une flèche dans un espace à plusieurs dimensions. La normalisation L2 ne change pas la direction de la flèche, mais elle ajuste sa longueur pour qu’elle soit exactement égale à 1. Cela permet de comparer les observations entre elles sans que leur magnitude (leur "taille") n’influence les calculs.
Cette technique est très utilisée dans les modèles qui reposent sur des notions de similarité ou de distance, comme la similarité cosinus ou la distance euclidienne, car elle met l’accent sur la forme du vecteur plutôt que sur son amplitude.
On parle de normalisation lorsque l’on transforme une observation entière (une ligne du dataset) afin de contrôler sa longueur ou sa somme. Autrement dit, on agit sur le vecteur complet plutôt que de modifier chaque variable séparément, comme c’est le cas avec le scaling ou la standardisation.
Normalisation L1 (norme Manhattan)
La
normalisation L1 ramène chaque observation à une somme absolue égale à 1. Elle est utile lorsque l’on souhaite obtenir des représentations plus clairsemées (sparse), notamment dans certains modèles de texte ou de régularisation. La formule est:
\(x_{\mathrm{norm}}=\frac{x}{\sum _{i=1}^n|x_i|}\)
On peut imaginer que chaque observation possède une "quantité d’information" répartie entre ses différentes composantes. La normalisation L1 redistribue cette quantité de manière à ce que le total soit toujours égal à 1, ce qui met en avant les valeurs les plus importantes et réduit l’influence des plus petites.
Cette technique est particulièrement utile lorsque l’on cherche à obtenir des représentations plus clairsemées (sparse), c’est‑à‑dire avec beaucoup de valeurs proches de zéro. On la retrouve souvent dans les modèles de texte (comme les représentations bag‑of‑words) ou dans certains contextes de régularisation où l’on souhaite que seules quelques composantes dominent réellement.
Les notions évoquées ici (comme les représentations bag‑of‑words ou les techniques de régularisation qui favorisent des vecteurs clairsemés) seront explorées plus en détail dans un cours dédié. L’objectif pour l’instant est simplement de comprendre pourquoi la normalisation L1 peut être utile dans certains contextes sans entrer encore dans les aspects avancés.