Certains développeurs ML ont tendance à normaliser leurs données aveuglément avant « chaque » modèle de Machine Learning sans prendre l’effort de comprendre pourquoi il doit être utilisé, ou même s’il est nécessaire ou non. Ainsi, le but de ce post est d’expliquer comment, pourquoi et quand normaliser les données.
- Normalisation
- Comment normaliser les données?
- Z-score
- Quand normaliser les données et pourquoi ?
- 1- Avant l’ACP:
- 2- Avant le clustering:
- 3- Avant KNN:
- 4- Avant SVM
- 5- Avant de mesurer l’importance des variables dans les modèles de régression
- 6- Avant la régression Lasso et Ridge
- Des cas où la normalisation n’est pas nécessaire ?
- La régression logistique et les modèles basés sur les arbres
- Finaliser la normalisation des données
Normalisation
La normalisation entre en scène lorsque les caractéristiques de l’ensemble de données d’entrée ont de grandes différences entre leurs plages, ou simplement lorsqu’elles sont mesurées dans différentes unités de mesure (par exemple, Livres, Mètres, Miles … etc).
Ces différences dans les plages des caractéristiques initiales causent des problèmes à de nombreux modèles d’apprentissage automatique. Par exemple, pour les modèles qui sont basés sur le calcul de la distance, si l’une des caractéristiques a une large gamme de valeurs, la distance sera régie par cette caractéristique particulière.
Pour illustrer cela avec un exemple : disons que nous avons un ensemble de données à 2 dimensions avec deux caractéristiques, la taille en mètres et le poids en livres, qui vont respectivement de mètres et de livres. Quel que soit le modèle basé sur la distance que vous exécutez sur cet ensemble de données, la caractéristique Poids dominera la caractéristique Hauteur et contribuera davantage au calcul de la distance, simplement parce qu’elle a des valeurs plus grandes que la Hauteur. Donc, pour éviter ce problème, transformer les caractéristiques à des échelles comparables en utilisant la normalisation est la solution.
Comment normaliser les données?
Z-score
Z-score est l’une des méthodes les plus populaires pour normaliser les données, et peut être fait en soustrayant la moyenne et en divisant par l’écart type pour chaque valeur de chaque caractéristique.
Une fois la normalisation effectuée, toutes les caractéristiques auront une moyenne de zéro, un écart-type de un, et donc, la même échelle.
Il existe d’autres méthodes de normalisation mais pour des raisons de simplicité, dans cette histoire, je me contente de la méthode du Z-score.
Quand normaliser les données et pourquoi ?
Comme nous l’avons vu plus haut, pour les modèles basés sur la distance, la normalisation est effectuée pour empêcher les caractéristiques avec des plages plus larges de dominer la métrique de distance. Mais la raison pour laquelle nous normalisons les données n’est pas la même pour tous les modèles d’apprentissage automatique, et diffère d’un modèle à l’autre.
Donc avant quels modèles et méthodes ML vous devez normaliser vos données et pourquoi ?
1- Avant l’ACP:
Dans l’analyse en composantes principales, les caractéristiques avec des variances élevées/des plages larges, obtiennent plus de poids que celles avec une faible variance, et par conséquent, elles finissent par dominer illégitimement les premières composantes principales (composantes avec une variance maximale). J’ai utilisé le mot « illégitimement » ici, parce que la raison pour laquelle ces caractéristiques ont des variances élevées par rapport aux autres est juste parce qu’elles ont été mesurées dans des échelles différentes.
La normalisation peut empêcher cela, en donnant le même poids à toutes les caractéristiques.
2- Avant le clustering:
Les modèles de clustering sont des algorithmes basés sur la distance, afin de mesurer les similarités entre les observations et de former des clusters, ils utilisent une métrique de distance. Ainsi, les caractéristiques avec des plages élevées auront une plus grande influence sur le clustering. Par conséquent, la normalisation est nécessaire avant de construire un modèle de clustering.
3- Avant KNN:
k-nearest neighbors est un classificateur basé sur la distance qui classe les nouvelles observations en fonction des mesures de similarité (par exemple, les métriques de distance) avec les observations étiquetées de l’ensemble d’entraînement. La normalisation fait que toutes les variables contribuent de manière égale aux mesures de similarité .
4- Avant SVM
La machine à vecteurs de support essaie de maximiser la distance entre le plan de séparation et les vecteurs de support. Si une caractéristique a des valeurs très importantes, elle dominera les autres caractéristiques lors du calcul de la distance. La normalisation donne donc à toutes les caractéristiques la même influence sur la métrique de distance.
5- Avant de mesurer l’importance des variables dans les modèles de régression
Vous pouvez mesurer l’importance des variables dans l’analyse de régression, en ajustant un modèle de régression en utilisant les variables indépendantes standardisées et en comparant la valeur absolue de leurs coefficients standardisés. Mais, si les variables indépendantes ne sont pas standardisées, la comparaison de leurs coefficients n’a aucun sens.
6- Avant la régression Lasso et Ridge
Les régressions Lasso et Ridge placent une pénalité sur l’ampleur des coefficients associés à chaque variable. L’échelle des variables va affecter la quantité de pénalité qui sera appliquée sur leurs coefficients. En effet, les coefficients des variables à grande variance sont petits et donc moins pénalisés. Par conséquent, la normalisation est nécessaire avant d’ajuster les deux régressions.
Des cas où la normalisation n’est pas nécessaire ?
La régression logistique et les modèles basés sur les arbres
La régression logistique et les algorithmes basés sur les arbres tels que l’arbre de décision, la forêt aléatoire et le boosting de gradient, ne sont pas sensibles à la magnitude des variables. Donc, la normalisation n’est pas nécessaire avant d’ajuster ce type de modèles.
Finaliser la normalisation des données
Comme nous l’avons vu dans ce post, quand normaliser et quand ne pas normaliser, dépend du modèle que vous voulez utiliser et de ce que vous voulez en faire. Il est donc très important pour un développeur ML de comprendre le fonctionnement interne des algorithmes d’apprentissage automatique, pour pouvoir savoir quand normaliser les données et construire un modèle d’apprentissage automatique réussi.
N.B : La liste des modèles et des méthodes quand la normalisation est nécessaire, présentée dans ce post n’est pas exhaustive.