Après avoir examiné vos données à l'aide de techniques statistiques et de visualisation, vous devez transformer vos données de façon à faciliter l'entraînement de votre modèle efficacement. L'objectif de La normalisation consiste à transformer les caractéristiques à une échelle similaire. Prenons l'exemple des deux fonctionnalités:
- La caractéristique
X
couvre la plage 154 à 24 917 482. - La caractéristique
Y
s'étend sur la plage 5 à 22.
Ces deux caractéristiques couvrent des plages très différentes. La normalisation peut manipuler
X
et Y
afin qu'ils couvrent une plage similaire, peut-être de 0 à 1.
La normalisation offre les avantages suivants:
- Aide les modèles à converger plus rapidement pendant l'entraînement. Lorsque des caractéristiques ont des plages différentes, la descente de gradient "rebond" et une convergence lente. Cela dit, les optimiseurs plus avancés comme Adagrad et Adam se prémunissent contre ce problème en en modifiant le taux d'apprentissage effectif au fil du temps.
- Aide les modèles à déduire de meilleures prédictions. Lorsque les caractéristiques ont des plages différentes, le résultat les prédictions peuvent être moins utiles.
- Elle permet d'éviter le "piège NaN" lorsque les valeurs des caractéristiques sont très élevées.
NaN est l'abréviation de
pas un nombre. Lorsqu'une valeur d'un modèle dépasse la
limite de précision à virgule flottante, le système définit la valeur sur
NaN
à la place d'un nombre. Lorsqu'un nombre du modèle devient une valeur NaN, les autres nombres présents dans le modèle finit aussi par devenir une NaN. - Il permet au modèle d'apprendre des pondérations appropriées pour chaque caractéristique. Sans mise à l'échelle des caractéristiques, le modèle accorde trop d'attention aux caractéristiques dont la portée est large et qui n'accordent pas assez d'attention aux caractéristiques présentant plages étroites.
Nous recommandons de normaliser les caractéristiques numériques couvrant de manière distincte
différentes tranches d'âge (âge et revenus, par exemple).
Nous recommandons également de normaliser
une seule caractéristique numérique couvrant un large éventail
comme city population.
Examinez les deux caractéristiques suivantes:
- La valeur la plus faible de la caractéristique
A
est -0,5 et la valeur la plus élevée est +0,5. - La valeur la plus faible de la caractéristique
B
est -5,0 et la valeur la plus élevée est +5,0.
Les caractéristiques A
et B
ont des durées relativement étroites. Cependant, la caractéristique B
est 10 fois plus large que celui de la caractéristique A
. Par conséquent :
- Au début de l'entraînement, le modèle suppose que la caractéristique
A
est dix fois plus "importants" que la fonctionnalitéB
. - L'entraînement prendra plus de temps que prévu.
- Le modèle qui en résulte peut ne pas être optimal.
Les dommages globaux liés à la non-normalisation seront relativement faibles. Toutefois, nous recommandons quand même de normaliser les caractéristiques A et B à la même échelle, par exemple de -1,0 à +1,0.
Prenons maintenant deux caractéristiques présentant une plus grande disparité des plages:
- La valeur la plus faible de la caractéristique C est -1 et la valeur la plus élevée est +1.
- La valeur la plus faible de la caractéristique
D
est +5 000 et la valeur la plus élevée est +1 000 000 000.
Si vous ne normalisez pas les caractéristiques C
et D
, il est probable que votre modèle
ne soient pas optimales. De plus, l'entraînement prend beaucoup plus de temps
converger, voire échouer complètement !
Cette section couvre trois méthodes de normalisation courantes:
- mise à l'échelle linéaire
- Scaling du score Z
- scaling des journaux
Cette section aborde en outre clipping. Bien que cela ne soit pas vrai de normalisation : le rognage assimile des caractéristiques numériques incontrôlées dans pour produire de meilleurs modèles.
Mise à l'échelle linéaire
Scaling linéaire (le plus souvent raccourcie en mise à l'échelle) signifie convertir des valeurs à virgule flottante de leur plage naturelle dans une plage standard, généralement 0 à 1 ou -1 à +1.
Le scaling linéaire est recommandé 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 d'anomalies, qui ne le sont pas extrême.
- La caractéristique est distribuée de manière approximativement uniforme sur sa plage. Autrement dit, un histogramme afficherait à peu près même des barres pour la plupart des tranches d'âge.
Supposons que l'age
humain soit une caractéristique. Le scaling linéaire
est une bonne normalisation
pour age
, car:
- Les limites inférieure et supérieure approximatives sont comprises entre 0 et 100.
age
contient un pourcentage d'anomalies relativement faible. Seulement environ 0,3% des la population est supérieure à 100.- Bien que certains âges soient un peu mieux représentés que d'autres, un grand l'ensemble de données doit contenir suffisamment d'exemples de tous les âges.
Testez vos connaissances
Supposons que votre modèle comporte une caractéristique nomméenet_worth
qui contient le réseau
de différentes personnes. Le scaling linéaire serait-il une bonne normalisation ?
technique pour net_worth
? Pourquoi ?
Scaling du score Z
La note Z correspond au nombre d'écarts types entre une valeur et la moyenne. Par exemple, une valeur représentant 2 écarts types supérieurs à la moyenne a un score Z de +2,0. Une valeur correspondant à 1,5 écart type inférieur à la moyenne a un z-score de -1,5.
Représenter une caractéristique à l'aide d'une mise à l'échelle du score Z signifie que l'attribut de cette caractéristique est stocké Score Z dans le vecteur de caractéristiques. Par exemple, la figure suivante montre deux histogrammes:
- À gauche, une distribution normale classique.
- À droite, la même distribution normalisée par une mise à l'échelle du score Z.
![Figure 4. Deux histogrammes affichant tous deux des distributions normales avec
la distribution identique. Le premier histogramme, qui contient
données, a une moyenne de 200 et un écart type de 30. Le deuxième
l'histogramme, qui contient une version en z-score de la première
a une moyenne de 0 et un écart type de 1.](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling_classic.png?authuser=5&hl=fr)
La mise à l'échelle du score Z est également un bon choix pour des données comme celles présentées dans la figure suivante, qui ne présente qu'une distribution vaguement normale.
![Figure 5. Deux histogrammes de forme identique, chacun affichant un
grimpent jusqu'à un plateau, puis une descente relativement rapide est suivie d'une
une dépréciation progressive. Un histogramme illustre
la distribution des données brutes ; l'autre histogramme illustre
des données brutes lorsqu'elles sont
normalisées par une mise à l'échelle du score Z.
Les valeurs sur l'axe X des deux histogrammes sont très différentes.
L'histogramme de données brutes s'étend sur le domaine 0 à 29 000, tandis que
L'histogramme du score Z va de -1 à environ +4,8.](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling-non-classic-normal-distribution.png?authuser=5&hl=fr)
La cote Z est un bon choix lorsque les données suivent une distribution normale ou une distribution un peu comme une distribution normale.
Notez que certaines distributions peuvent être normales
plage, mais ils contiennent
toujours des valeurs aberrantes extrêmes. Par exemple, presque toutes les
points d'une caractéristique net_worth
peuvent parfaitement correspondre à 3 écarts types,
mais il peut s'agir, par exemple,
de centaines d'écarts types
à distance de la moyenne. Dans ces situations, vous pouvez combiner
la mise à l'échelle de la cote Z
une autre forme de normalisation (généralement le bornement)
pour gérer cette situation.
Exercice: tester vos connaissances
Supposons que votre modèle s'entraîne sur une caractéristique nomméeheight
qui contient l'adulte
de dix millions de femmes. Le scaling du score Z serait-il une bonne normalisation ?
technique pour height
? Pourquoi ?
Mise à l'échelle logarithmique
La mise à l'échelle logarithmique calcule le logarithme de la valeur brute. En théorie, le le logarithme peut être n'importe quelle base ; En pratique, le scaling des journaux calcule généralement logarithme naturel (ln).
La mise à l'échelle logarithmique est utile lorsque les données sont conformes à une distribution de loi d'alimentation. D'un point de vue informel, la distribution d'une loi de pouvoir se présente comme suit:
- Les valeurs faibles (
X
) sont très élevées (Y
). - À mesure que les valeurs de
X
augmentent, celles deY
diminuent rapidement. Par conséquent,X
correspond à une valeur élevée etY
est donc très faible.
Les classifications de films sont un bon exemple de distribution d'une loi de puissance. Dans les figure, notez:
- Certains films ont beaucoup de notes d'utilisateurs. (Les valeurs faibles de
X
sont élevées valeurs deY
.) - La plupart des films ont très peu de notes d'utilisateurs. (Les valeurs élevées de
X
sont faibles valeurs deY
.)
La mise à l'échelle des journaux modifie la distribution, ce qui permet d'entraîner un modèle pour obtenir de meilleures prédictions.
Autre exemple, la vente de livres se conforme à une distribution basée sur une loi de puissance électrique pour les raisons suivantes:
- La plupart des livres publiés en vendent un nombre infime, peut-être une ou deux cents.
- Certains livres sont vendus à un nombre modéré d'exemplaires, par milliers.
- Seules quelques meilleures ventes se vendent plus d'un million d'exemplaires.
Supposons que vous entraîniez un modèle linéaire pour trouver la relation de, par exemple, des couvertures de livres pour les ventes de livres. Un modèle linéaire entraîné sur des valeurs brutes trouver quelque chose sur les couvertures de livres qui se vendent au million d'exemplaires soit 10 000 fois plus puissant que les couvertures qui ne sont vendues que 100 exemplaires. Cependant, la mise à l'échelle consignée pour tous les chiffres de vente rend la tâche beaucoup plus réalisable. Par exemple, le journal de 100 est:
~4.6 = ln(100)
tandis que le logarithme de 1 000 000 est:
~13.8 = ln(1,000,000)
Ainsi, la logarithme de 1 000 000 est seulement trois fois plus grande que celle de 100. Vous pourriez imaginer la couverture d'un best-seller environ trois fois plus puissant (d'une manière ou d'une autre) qu'une minuscule couverture de livre.
Coupe
Le bornement est une technique pour minimiser l'influence des anomalies extrêmes. En bref, le bornement permet généralement (réduit) la valeur des anomalies jusqu'à une valeur maximale spécifique. Le rognage est un étrange, mais elle peut s'avérer très efficace.
Par exemple, imaginez un ensemble de données contenant une caractéristique nommée roomsPerPerson
,
qui représente le nombre de chambres (nombre total de chambres divisé
en fonction du nombre d'habitants) pour différentes maisons. Le tracé suivant
montre que plus
99% des valeurs des caractéristiques sont conformes à une distribution normale
1,8 et un écart type de 0,7). Toutefois, cette fonctionnalité contient
quelques anomalies, dont certaines extrêmes:
![Figure 7. Graphique de roomsPerPerson, dans lequel presque toutes les valeurs
sont regroupées entre 0 et 4, mais il y a une très longue traîne
jusqu'à 17 pièces par personne](https://developers.google.cn/static/machine-learning/crash-course/images/PreClipping.png?authuser=5&hl=fr)
Comment pouvez-vous minimiser l'influence de ces anomalies extrêmes ? Eh bien,
l'histogramme n'est pas une distribution équitable, une distribution normale ou une loi de puissance
distribution. Que se passe-t-il si vous plafonnez ou restreignez la valeur maximale
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. Le tracé est en forme de cloche, mais la colline est anormale à 4,0](https://developers.google.cn/static/machine-learning/crash-course/images/Clipping.png?authuser=5&hl=fr)
Le fait de rogner la valeur de la caractéristique à 4,0 ne signifie pas que votre modèle ignore tous des valeurs supérieures à 4,0. Cela signifie plutôt que toutes les valeurs supérieures de la version 4.0 à la version 4.0. Cela explique cette étrange colline, située à la valeur 4,0. Malgré l'ensemble de caractéristiques mises à l'échelle est désormais plus utile que les données d'origine.
Attends une seconde ! Pouvez-vous vraiment réduire chaque valeur aberrante à une valeur supérieure arbitraire seuil ? Lors de l'entraînement d'un modèle, oui.
Vous pouvez également rogner les valeurs après avoir appliqué d'autres formes de normalisation. Par exemple, supposons que vous utilisiez une échelle de notation Z, mais que quelques anomalies aient des valeurs absolues bien supérieures à 3. Dans ce cas, vous pouvez:
- Extrayez les scores Z supérieurs à 3 pour obtenir exactement 3.
- Divisez les scores Z inférieurs à -3 pour obtenir exactement -3.
Le rognage empêche votre modèle de surindexer des données sans importance. Toutefois, certaines valeurs aberrantes sont en fait importantes, donc rognez soigneusement les valeurs.
Résumé des techniques de normalisation
Technique de normalisation | Formule | Quand l'utiliser |
---|---|---|
Mise à l'échelle linéaire | $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ | Lorsque la caractéristique est répartie uniformément dans une plage fixe. |
Scaling du score Z | $$ x' = \frac{x - μ}{σ}$$ | Lorsque la distribution des caractéristiques ne contient pas d'anomalies extrêmes. |
Mise à l'échelle logarithmique | $$ x' = log(x)$$ | Lorsque la caractéristique est conforme à la loi de puissance. |
Coupe | Si x € > max$, définir $x' = $max. Si x € < min$, définir $x' = $ min. |
Lorsque la caractéristique contient des anomalies extrêmes. |
Exercice: Tester vos connaissances
Supposons que vous développiez un modèle qui prédit
la productivité 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 tombent
entre 15 et 30 (Celsius), à l'exception des suivantes:
- Une ou deux fois par an, par temps extrêmement chaud, quelques valeurs comprises entre
31 et 45 sont enregistrées dans
temperature
. - Dans
temperature
, chaque 1 000e point est défini sur 1 000. et non la température réelle.
Quelle serait une technique de normalisation raisonnable
temperature
?
Les valeurs 1 000 correspondent à des erreurs et doivent être supprimées plutôt que rognés.
Les valeurs comprises entre 31 et 45 sont des points de données légitimes. Le rognage serait probablement une bonne idée pour ces valeurs, en supposant que l'ensemble de données ne contient pas assez d'exemples dans cette plage de températures entraîner le modèle à faire de bonnes prédictions. Cependant, lors de l'inférence, Notez que le modèle rogné effectuerait donc la même prédiction pour une température de 45 °C pour une température de 35 °C.