Données numériques: normalisation

Après avoir examiné vos données à l'aide de techniques statistiques et de visualisation, vous devez les transformer de manière à ce que votre modèle s'entraîne plus efficacement. L'objectif de la normalisation est de transformer les caractéristiques pour qu'elles soient à la même échelle. Prenons l'exemple des deux fonctionnalités suivantes :

  • La caractéristique X couvre la plage allant de 154 à 24 917 482.
  • La fonctionnalité Y couvre la plage de 5 à 22.

Ces deux fonctionnalités couvrent des plages très différentes. La normalisation peut manipuler X et Y afin qu'elles couvrent une plage similaire, par exemple de 0 à 1.

La normalisation offre les avantages suivants :

  • Elle permet aux modèles de converger plus rapidement pendant l'entraînement. Lorsque différentes caractéristiques ont des plages différentes, la descente de gradient peut "rebondir" et ralentir la convergence. Cela dit, les optimiseurs plus avancés comme Adagrad et Adam protègent contre ce problème en modifiant le taux d'apprentissage effectif au fil du temps.
  • Aide les modèles à inférer de meilleures prédictions. Lorsque différentes caractéristiques ont des plages différentes, le modèle obtenu peut générer des prédictions moins utiles.
  • Permet d'éviter le "piège NaN" lorsque les valeurs des caractéristiques sont très élevées. NaN est l'abréviation de not a number (ce n'est pas un nombre). Lorsqu'une valeur dans un modèle dépasse la limite de précision en virgule flottante, le système définit la valeur sur NaN au lieu d'un nombre. Lorsqu'un nombre du modèle devient un NaN, d'autres nombres du modèle finissent également par devenir des NaN.
  • Elle permet au modèle d'apprendre les pondérations appropriées pour chaque caractéristique. Sans mise à l'échelle des caractéristiques, le modèle accorde une attention trop importante aux caractéristiques présentant les plages les plus larges et pas assez d'attention à celles présentant les plages les plus étroites.

Nous vous recommandons de normaliser les caractéristiques numériques couvrant des plages distinctes (par exemple, l'âge et le revenu). Nous vous recommandons également de normaliser une seule caractéristique numérique qui couvre une large plage, comme city population..

Prenons les deux caractéristiques suivantes :

  • La valeur la plus faible de la caractéristique A est de -0,5 et la plus élevée est de +0,5.
  • La valeur la plus faible de la caractéristique B est de -5,0 et la plus élevée est de +5,0.

Les caractéristiques A et B ont des étendues relativement étroites. Toutefois, la portée de la fonctionnalité B est 10 fois plus large que celle de la fonctionnalité A. Par conséquent :

  • Au début de l'entraînement, le modèle suppose que la caractéristique B est dix fois plus "importante" que la caractéristique A.
  • L'entraînement prendra plus de temps que prévu.
  • Le modèle obtenu peut être sous-optimal.

Les dommages globaux causés par la non-normalisation seront relativement faibles. Toutefois, nous vous recommandons tout de même de normaliser les caractéristiques A et B sur la même échelle, par exemple de -1,0 à +1,0.

Prenons maintenant deux caractéristiques avec une plus grande disparité de plages :

  • La valeur la plus faible de la caractéristique C est -1 et la plus élevée est +1.
  • La valeur la plus faible de la caractéristique D est +5 000 et la plus élevée est +1 000 000 000.

Si vous ne normalisez pas les caractéristiques C et D, votre modèle sera probablement sous-optimal. De plus, l'entraînement prendra beaucoup plus de temps pour converger, voire ne convergera jamais.

Cette section présente trois méthodes de normalisation courantes :

  • mise à l'échelle linéaire
  • Mise à l'échelle du score Z
  • mise à l'échelle logarithmique

Cette section aborde également le clipping. Bien qu'il ne s'agisse pas d'une véritable technique de normalisation, le clipping permet de maîtriser les caractéristiques numériques indisciplinées en les limitant à des plages qui produisent de meilleurs modèles.

Mise à l'échelle linéaire

La mise à l'échelle linéaire (plus couramment appelée mise à l'échelle) consiste à convertir les valeurs à virgule flottante de leur plage naturelle en une plage standard, généralement de 0 à 1 ou de -1 à +1.

Le scaling linéaire est un bon choix lorsque toutes les conditions suivantes sont remplies :

  • Les limites inférieure et supérieure de vos données ne changent pas beaucoup au fil du temps.
  • La caractéristique contient peu ou pas de valeurs aberrantes, et celles-ci ne sont pas extrêmes.
  • La caractéristique est distribuée de manière approximativement uniforme sur sa plage. Autrement dit, un histogramme afficherait des barres à peu près égales pour la plupart des valeurs.

Supposons que age humain soit une caractéristique. La mise à l'échelle linéaire est une bonne technique de normalisation pour age, car :

  • Les limites inférieure et supérieure approximatives sont comprises entre 0 et 100.
  • age contient un pourcentage relativement faible de valeurs aberrantes. Seulement 0,3 % environ de la population a plus de 100 ans.
  • Bien que certains âges soient un peu mieux représentés que d'autres, un grand ensemble de données devrait contenir suffisamment d'exemples de tous les âges.

Exercice : Vérifier vos connaissances

Supposons que votre modèle comporte une caractéristique nommée net_worth qui contient la valeur nette de différentes personnes. La mise à l'échelle linéaire serait-elle une bonne technique de normalisation pour net_worth ? Pourquoi ?

Mise à l'échelle du score Z

Un score Z correspond au nombre d'écarts types d'une valeur par rapport à la moyenne. Par exemple, une valeur qui est supérieure à la moyenne de deux écarts types a un score Z de +2.0. Une valeur qui est 1,5 écart type inférieure à la moyenne a un score Z de -1,5.

Représenter une caractéristique avec la mise à l'échelle du score Z signifie stocker le score Z de cette caractéristique dans le vecteur de caractéristiques. Par exemple, la figure suivante montre deux histogrammes :

  • À gauche, une distribution normale classique.
  • À droite, la même distribution est normalisée par mise à l'échelle du score Z.
Figure 4. Deux histogrammes montrant tous deux des distributions normales avec la même distribution. Le premier histogramme, qui contient des données brutes, a une moyenne de 200 et un écart-type de 30. Le deuxième histogramme, qui contient une version du premier histogramme avec un score Z, a une moyenne de 0 et un écart-type de 1.
Figure 4. Données brutes (à gauche) par rapport au score Z (à droite) pour une distribution normale.

La mise à l'échelle du score Z est également un bon choix pour les données telles que celles illustrées dans la figure suivante, qui ne présentent qu'une distribution vaguement normale.

Figure 5. Deux histogrammes de forme identique, chacun montrant une forte augmentation jusqu'à un plateau, puis une descente relativement rapide suivie d'une diminution progressive. Un histogramme illustre la distribution des données brutes, tandis que l'autre illustre la distribution des données brutes normalisées par mise à l'échelle du score Z.
            Les valeurs sur l'axe X des deux histogrammes sont très différentes.
            L'histogramme des données brutes couvre le domaine de 0 à 29 000,tandis que l'histogramme à l'échelle du score Z va de -1 à environ +4, 8.
Figure 5 : Données brutes (à gauche) par rapport à la mise à l'échelle du score Z (à droite) pour une distribution normale non classique.

Le score Z est un bon choix lorsque les données suivent une distribution normale ou une distribution qui s'en rapproche.

Notez que certaines distributions peuvent être normales dans la majeure partie de leur plage, mais contenir tout de même des valeurs aberrantes extrêmes. Par exemple, la quasi-totalité des points d'une caractéristique net_worth peuvent s'intégrer parfaitement dans 3 écarts-types, mais quelques exemples de cette caractéristique peuvent se trouver à des centaines d'écarts-types de la moyenne. Dans ce cas, vous pouvez combiner la mise à l'échelle du score Z avec une autre forme de normalisation (généralement le clipping) pour gérer cette situation.

Exercice : Vérifier que vous avez bien compris

Supposons que votre modèle s'entraîne sur une caractéristique nommée height qui contient la taille adulte de dix millions de femmes. La mise à l'échelle du score Z serait-elle une bonne technique de normalisation pour height ? Pourquoi ?

Mise à l'échelle logarithmique

La mise à l'échelle logarithmique calcule le logarithme de la valeur brute. En théorie, le logarithme peut être n'importe quelle base. En pratique, la mise à l'échelle logarithmique calcule généralement le logarithme naturel (ln).

La mise à l'échelle logarithmique est utile lorsque les données suivent une distribution de loi de puissance. En termes simples, une distribution de loi de puissance se présente comme suit :

  • Les valeurs faibles de X correspondent à des valeurs très élevées de Y.
  • À mesure que les valeurs de X augmentent, celles de Y diminuent rapidement. Par conséquent, les valeurs élevées de X correspondent à des valeurs très faibles de Y.

Les notes de films sont un bon exemple de distribution de loi de puissance. Dans la figure suivante, notez les points suivants :

  • Certains films ont reçu de nombreuses notes d'utilisateurs. (Les valeurs faibles de X correspondent à des valeurs élevées de Y.)
  • La plupart des films ont très peu de notes d'utilisateurs. (Les valeurs élevées de X correspondent à des valeurs faibles de Y.)

La mise à l'échelle logarithmique modifie la distribution, ce qui permet d'entraîner un modèle qui fera de meilleures prédictions.

Figure 6. Deux graphiques comparant les données brutes et le logarithme des données brutes.
            Le graphique des données brutes montre de nombreuses évaluations d'utilisateurs dans la tête, suivies d'une longue queue. La distribution du graphique logarithmique est plus uniforme.
Figure 6 : Comparaison d'une distribution brute à son logarithme.

Voici un autre exemple : les ventes de livres suivent une loi de puissance, car :

  • La plupart des livres publiés se vendent à un nombre infime d'exemplaires, peut-être une ou deux centaines.
  • Certains livres se vendent à un nombre modéré d'exemplaires, soit plusieurs milliers.
  • Seuls quelques best-sellers se vendront à plus d'un million d'exemplaires.

Imaginons que vous entraîniez un modèle linéaire pour trouver la relation entre, par exemple, les couvertures de livres et les ventes de livres. Un modèle linéaire entraîné sur des valeurs brutes devrait trouver quelque chose sur les couvertures de livres qui se vendent à un million d'exemplaires,qui est 10 000 fois plus puissant que les couvertures de livres qui ne se vendent qu'à 100 exemplaires. Toutefois, la mise à l'échelle logarithmique de tous les chiffres de vente rend la tâche beaucoup plus réalisable. Par exemple, le log de 100 est :

  ~4.6 = ln(100)

alors que le journal de 1 000 000 est le suivant :

  ~13.8 = ln(1,000,000)

Ainsi, le logarithme de 1 000 000 n'est que trois fois plus grand que celui de 100. Vous pouvez probablement imaginer qu'une couverture de livre à succès est environ trois fois plus efficace (d'une manière ou d'une autre) qu'une couverture de livre qui se vend très peu.

Bornage

Le bornement est une technique permettant de minimiser l'influence des anomalies extrêmes. En bref, le clipping consiste généralement à plafonner (réduire) la valeur des valeurs aberrantes à une valeur maximale spécifique. Le clipping est une idée étrange, mais il peut être très efficace.

Par exemple, imaginons un ensemble de données contenant une caractéristique nommée roomsPerPerson, qui représente le nombre de pièces (nombre total de pièces divisé par le nombre d'occupants) pour différentes maisons. Le graphique suivant montre que plus de 99 % des valeurs de caractéristiques sont conformes à une distribution normale (avec une moyenne d'environ 1,8 et un écart-type de 0,7). Toutefois, la fonctionnalité contient quelques valeurs aberrantes, dont certaines sont extrêmes :

Figure 7. Représentation graphique de roomsPerPerson (nombre de pièces par personne), dans laquelle pratiquement toutes les valeurs sont regroupées entre 0 et 4, mais avec une très longue file de valeurs s'étendant jusqu'à 17 pièces par personne
Image 7. Principalement normal, mais pas complètement normal.

Comment minimiser l'impact de ces anomalies extrêmes ? L'histogramme n'est pas une distribution uniforme, une distribution normale ni une distribution de loi de puissance. Que se passe-t-il si vous limitez ou tronquez simplement la valeur maximale de roomsPerPerson à une valeur arbitraire, par exemple 4,0 ?

Représentation graphique de roomsPerPerson, dans laquelle toutes les valeurs sont comprises entre 0 et 4,0. La courbe est en cloche, avec une anomalie : une bosse à 4,0.
Figure 8 : Valeurs de caractéristiques écrêtées à 4.0.

Le fait de limiter la valeur de la caractéristique à 4,0 ne signifie pas que votre modèle ignore toutes les valeurs supérieures à 4,0. Cela signifie que toutes les valeurs supérieures à 4,0 deviennent 4,0. Cela explique la forme particulière de la colline à 4,0. Malgré cette difficulté, l'ensemble de caractéristiques mis à l'échelle est désormais plus utile que les données d'origine.

Attends une seconde ! Pouvez-vous vraiment réduire chaque valeur aberrante à un seuil supérieur arbitraire ? Oui, lorsque vous entraînez un modèle.

Vous pouvez également tronquer les valeurs après avoir appliqué d'autres formes de normalisation. Par exemple, supposons que vous utilisiez la mise à l'échelle du score Z, mais que quelques valeurs aberrantes aient des valeurs absolues bien supérieures à 3. Dans ce cas, vous pouvez :

  • Borner les scores Z supérieurs à 3 pour obtenir exactement 3.
  • Borner les scores Z inférieurs à -3 pour obtenir exactement -3.

Le clipping empêche votre modèle de surindexer les données non importantes. Cependant, certains outliers sont en fait importants. Veillez donc à définir des valeurs limites avec précaution.

Résumé des techniques de normalisation

Technique de normalisationFormuleQuand les utiliser ?
Mise à l'échelle linéaire $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ Lorsque la fonctionnalité est distribuée de manière relativement uniforme dans la plage. Forme plate
Mise à l'échelle du score Z $$ x' = \frac{x - μ}{σ}$$ Lorsque la fonctionnalité est normalement distribuée (pic proche de la moyenne). En forme de cloche
Mise à l'échelle logarithmique $$ x' = log(x)$$ Lorsque la distribution des caractéristiques est fortement asymétrique sur au moins l'un des côtés de la queue. Forme en queue de distribution lourde
Bornage Si $x > max$, définissez $x' = max$
Si $x < min$, définissez $x' = min$
Lorsque la fonctionnalité contient des valeurs aberrantes extrêmes.

Exercice : Testez vos connaissances

Quelle technique serait la plus appropriée pour normaliser une caractéristique avec la distribution suivante ?

Histogramme montrant un cluster de données avec des valeurs comprises entre 0 et 200 000. Le nombre de points de données augmente progressivement pour la plage de 0 à 100 000, puis diminue progressivement de 100 000 à 200 000.

Mise à l'échelle du score Z
Les points de données suivent généralement une distribution normale. La mise à l'échelle du score Z les forcera donc à se situer dans la plage de -3 à +3.
Mise à l'échelle linéaire
Consultez les discussions sur les techniques de normalisation sur cette page, puis réessayez.
Mise à l'échelle logarithmique
Consultez les discussions sur les techniques de normalisation sur cette page, puis réessayez.
Bornage
Consultez les discussions sur les techniques de normalisation sur cette page, puis réessayez.

Supposons que vous développiez un modèle qui prédit la productivité d'un centre de données en fonction de la température mesurée à l'intérieur du centre de données. Presque toutes les valeurs temperature de votre ensemble de données se situent entre 15 et 30 °C, à l'exception des suivantes :

  • Une ou deux fois par an, lors de journées extrêmement chaudes, quelques valeurs comprises entre 31 et 45 sont enregistrées dans temperature.
  • Tous les 1 000 points de temperature sont définis sur 1 000 au lieu de la température réelle.

Quelle serait une technique de normalisation raisonnable pour temperature ?

Tronquez les valeurs aberrantes comprises entre 31 et 45, mais supprimez celles dont la valeur est de 1 000.

Les valeurs de 1 000 sont des erreurs et doivent être supprimées plutôt que tronquées.

Les valeurs comprises entre 31 et 45 sont des points de données légitimes. Il serait probablement judicieux de définir des limites pour ces valeurs, en supposant que l'ensemble de données ne contienne pas suffisamment d'exemples dans cette plage de températures pour entraîner le modèle à faire de bonnes prédictions. Toutefois, lors de l'inférence, notez que le modèle écrêté ferait donc la même prédiction pour une température de 45 °C que pour une température de 35 °C.

Tronquer toutes les valeurs aberrantes
Consultez les discussions sur les techniques de normalisation sur cette page, puis réessayez.
Supprimer toutes les valeurs aberrantes
Consultez les discussions sur les techniques de normalisation sur cette page, puis réessayez.
Supprimez les valeurs aberrantes comprises entre 31 et 45, mais écrêtez celles dont la valeur est de 1 000.
Consultez les discussions sur les techniques de normalisation sur cette page, puis réessayez.