Después de examinar tus datos a través de técnicas estadísticas y de visualización, debes transformar los datos de forma que tu modelo se entrene más con eficacia. El objetivo de normalization es transformar para que los atributos estén en una escala similar. Por ejemplo, considera los siguientes dos atributos:
- El atributo
X
abarca el rango de 154 a 24,917,482. - El atributo
Y
abarca el rango de 5 a 22.
Estas dos funciones abarcan rangos muy diferentes. La normalización puede manipular
X
y Y
para que abarquen un rango similar, quizás de 0 a 1.
La normalización proporciona los siguientes beneficios:
- Ayuda a los modelos a converger más rápido durante el entrenamiento. Cuando diferentes atributos tienen distintos rangos, el descenso de gradientes "rebotar" y una convergencia lenta. Dicho esto, los optimizadores más avanzados, como Adagrad y Adam lo protegen contra este problema y cambian la tasa de aprendizaje eficaz con el tiempo.
- Ayuda a los modelos a inferir mejores predicciones. Cuando diferentes atributos tienen distintos rangos, el resultado modelo podría hacer predicciones menos útiles.
- Ayuda a evitar la “trampa de NaN” cuando los valores de los atributos son muy altos.
NaN es una abreviatura de
no es un número. Cuando un valor en un modelo supera el
límite de precisión de punto flotante, el sistema establece el valor en
NaN
en su lugar de un número. Cuando un número en el modelo se convierte en NaN, otros números en el modelo finalmente se convierte en un NaN. - Permite que el modelo aprenda los pesos apropiados para cada atributo. Sin el escalamiento de atributos, el modelo presta demasiada atención a funciones con rangos amplios y no hay suficiente atención a las los rangos estrechos.
Recomendamos normalizar los atributos numéricos que cubran
distintos rangos (por ejemplo, ingresos y edad).
Recomendamos normalizar un único atributo numérico
que abarque un rango amplio
como city population.
Ten en cuenta las siguientes dos funciones:
- El valor más bajo del atributo
A
es -0.5 y el más alto es +0.5. - El valor más bajo del atributo
B
es -5.0 y el más alto, +5.0.
Los atributos A
y B
tienen intervalos relativamente estrechos. Sin embargo, la función B
es 10 veces más ancho que el intervalo del atributo A
. Por lo tanto:
- Al comienzo del entrenamiento, el modelo supone que el atributo
A
es diez veces más alto. más "importante" que el elementoB
. - El entrenamiento tardará más de lo que debería.
- El modelo resultante puede no ser óptimo.
El daño general debido a la no normalización será relativamente pequeño. Sin embargo, recomendamos normalizar el Atributo A y el Atributo B a la misma escala. quizás de -1.0 a +1.0.
Ahora, considera dos atributos con una mayor disparidad de rangos:
- El valor más bajo del atributo "C es -1 y el más alto es +1.
- El valor más bajo del atributo
D
es +5,000 y el más alto, +1,000,000,000.
Si no normalizas los atributos C
y D
, es probable que tu modelo
ser subóptimo. Además, el entrenamiento llevará mucho más tiempo
converjan o no converjan por completo.
En esta sección, se abordan tres métodos de normalización populares:
- escalamiento lineal
- Escalamiento de puntuación Z
- escalamiento logarítmico
Esta sección también abarca recorte Aunque no es un verdadero con una técnica de normalización, el recorte acopla los atributos numéricos o rangos que generan mejores modelos.
Escalamiento lineal
Escalamiento lineal (con mayor frecuencia abreviado a solo escalamiento) significa convertir los valores de punto flotante de su rango natural dentro de un rango estándar, por lo general de 0 a 1, o De -1 a +1.
El escalamiento lineal es una buena opción cuando se cumplen todas las condiciones siguientes:
- Los límites inferior y superior de tus datos no cambian mucho con el tiempo.
- El atributo contiene pocos valores atípicos o ninguno, y esos valores no son extremo.
- El atributo se distribuye de manera aproximadamente uniforme en su rango. Es decir, un histograma mostrará barras prácticamente parejas para la mayoría de las edades.
Supongamos que el age
humano es un atributo. El escalamiento lineal es una buena normalización
técnica para age
por el siguiente motivo:
- Los límites inferior y superior aproximados son de 0 a 100.
age
contiene un porcentaje relativamente pequeño de valores atípicos. Solo alrededor del 0.3% de la población es superior a 100.- Aunque algunas edades están mejor representadas que otras, una gran conjunto de datos debe contener suficientes ejemplos de todas las edades.
Verifica tus conocimientos
Supongamos que tu modelo tiene un atributo llamadonet_worth
que contiene la red
de personas diferentes. ¿El escalamiento lineal sería una buena normalización
técnica para net_worth
? ¿Por qué?
Escalamiento de puntuación Z
Una puntuación Z es la cantidad de desviaciones estándar que tiene un valor respecto de la media. Por ejemplo, un valor que tenga 2 desviaciones estándar mayor que la media tiene un puntaje z de +2.0. Un valor que es 1.5 desviaciones estándar menor que la media tiene una puntuación Z de -1,5.
Representar un atributo con escalamiento de puntuación Z significa almacenar el atributo Puntuación Z en el vector de atributos Por ejemplo, en la siguiente figura, se muestran dos Histogramas:
- A la izquierda, una distribución normal clásica.
- A la derecha, la misma distribución normalizada por escala de puntuación Z.
![Figura 4: Dos histogramas: ambos muestran distribuciones normales con
la distribución idéntica. El primer histograma, que contiene datos sin procesar
tiene una media de 200 y una desviación estándar de 30. El segundo
histograma, que contiene una versión de puntuación Z de la primera
tiene una media de 0 y una desviación estándar de 1.](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling_classic.png?authuser=7&hl=es)
La escala de puntuación Z también es una buena opción para datos como los que se muestran en la siguiente figura, que tiene una distribución vagamente normal.
![Figura 5: Dos histogramas de forma idéntica, cada uno con una pronunciación
se eleva hasta una meseta y, luego,
un descenso relativamente rápido, seguido de
deterioro gradual. Un histograma ilustra la
la distribución de los datos sin procesar; el otro histograma ilustra el
de los datos sin procesar normalizados mediante el escalamiento de puntuación Z.
Los valores en el eje X de los dos histogramas son muy diferentes.
El histograma de datos sin procesar abarca el dominio 0 a 29,000, mientras que
el histograma con escala z varía entre -1 y aproximadamente +4.8](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling-non-classic-normal-distribution.png?authuser=7&hl=es)
La puntuación z es una buena opción cuando los datos siguen una distribución normal o una distribución, algo similar a una distribución normal.
Ten en cuenta que algunas distribuciones pueden ser normales en la mayor parte
pero también pueden contener valores atípicos extremos. Por ejemplo, casi todos los
puntos de un atributo net_worth
pueden encajar perfectamente en 3 desviaciones estándar,
pero algunos ejemplos de esta función
podrían ser cientos de desviaciones estándar
de la media. En estas situaciones, puedes combinar el escalamiento de puntuación Z con
Es otra forma de normalización (por lo general, recorte) para manejar esta situación.
Ejercicio: Comprueba tus conocimientos
Supongamos que tu modelo se entrena con un atributo llamadoheight
que sostiene al adulto.
de diez millones de mujeres. ¿El escalamiento de puntuación Z sería una buena normalización
técnica para height
? ¿Por qué?
Escalamiento logarítmico
El escalamiento logarítmico calcula el logaritmo del valor sin procesar. En teoría, la el logaritmo podría ser cualquier base; en la práctica, el escalamiento logarítmico suele calcular el logaritmo natural (ln).
El escalamiento logarítmico es útil cuando los datos se ajustan a una distribución de ley de poder. De manera casual, una distribución de una ley de poder se ve de la siguiente manera:
- Los valores bajos de
X
tienen valores muy altos deY
. - A medida que aumentan los valores de
X
, los valores deY
disminuyen con rapidez. Por lo tanto, los valores altos deX
tienen valores muy bajos deY
.
Las calificaciones de las películas son un buen ejemplo de la distribución de una ley de poder. En la siguiente observa lo siguiente:
- Algunas películas tienen muchas calificaciones de los usuarios. (Los valores bajos de
X
tienen un valor alto valores deY
). - La mayoría de las películas tienen muy pocas calificaciones de los usuarios. (Los valores altos de
X
son bajos valores deY
).
El escalamiento logarítmico cambia la distribución, lo que ayuda a entrenar un modelo que hacer mejores predicciones.
Como segundo ejemplo, las ventas de libros se ajustan a la distribución de una ley de poder por los siguientes motivos:
- La mayoría de los libros publicados venden una pequeña cantidad de copias, quizás una o doscientas.
- Algunos libros venden una cantidad moderada de copias, miles.
- Solo unos pocos más vendidos venden más de un millón de copias.
Supongamos que entrenas un modelo lineal para encontrar la relación por ejemplo, portadas de libros para reservar ventas. Un modelo lineal que se entrena con valores sin procesar tienen que encontrar algo sobre portadas para libros que venden un millón de copias es 10,000 más potente que las portadas de libros que solo venden 100 copias. Sin embargo, el escalamiento logarítmico de todas las cifras de ventas hace que la tarea sea mucho más factible. Por ejemplo, el logaritmo de 100 es el siguiente:
~4.6 = ln(100)
mientras que el logaritmo de 1,000,000 es:
~13.8 = ln(1,000,000)
Entonces, el logaritmo de 1,000,000 es solo alrededor de tres veces más grande que el logaritmo de 100. Probablemente podrías imaginar que la portada de un libro de éxitos en ventas es tres veces. más poderosa (de alguna manera) que una portada de libro en miniatura.
Recorte
El recorte es una técnica para minimizar la influencia de valores atípicos extremos. En resumen, el recorte suele limitar (reduce) el valor de los valores atípicos a un valor máximo específico. El recorte es un una idea extraña y, aun así, puede ser muy eficaz.
Por ejemplo, imagina un conjunto de datos que contiene un atributo llamado roomsPerPerson
,
que representa el número de habitaciones (el total de habitaciones dividida)
por cantidad de ocupantes) de varias casas. El siguiente gráfico muestra que más de
El 99% de los valores de atributos se ajustan a una distribución normal (aproximadamente, una media de
1.8 y una desviación estándar de 0.7). Sin embargo, la función contiene
algunos valores atípicos, algunos extremos:
![Figura 7: Un gráfico de ambientesPorPersona en el que casi todos los valores
se agrupan entre 0 y 4, pero tienen una cola muy larga
con un alcance de 17 salas por persona](https://developers.google.cn/static/machine-learning/crash-course/images/PreClipping.png?authuser=7&hl=es)
¿Cómo puedes minimizar la influencia de esos valores atípicos extremos? Bueno,
un histograma no es una distribución uniforme, una distribución normal o una ley de potencia
distribución. ¿Qué sucede si solo limitas o recortas el valor máximo de
¿roomsPerPerson
en un valor arbitrario, digamos 4.0?
![Un gráfico de ambientesPorPersona en el que todos los valores se encuentran entre 0 y
4. El diagrama tiene forma de campana, pero hay una colina anormal en 4.0](https://developers.google.cn/static/machine-learning/crash-course/images/Clipping.png?authuser=7&hl=es)
Recortar el valor del atributo en 4.0 no significa que el modelo los ignore todas valores superiores a 4.0. En cambio, significa que todos los valores que fueron mayores a 4.0 ahora se convierten en 4.0. Esto explica la elevación particular en 4.0. Pese a esa colina, el conjunto de atributos ajustado ahora es más útil que los datos originales.
Espera un momento. ¿Se puede reducir cada valor atípico a algún valor arbitrario umbral? Sí.
También puedes recortar valores después de aplicar otras formas de normalización. Por ejemplo, supongamos que utilizas el escalamiento de puntuación Z, pero algunos valores atípicos tienen absolutos mayores que 3. En ese caso, podrías hacer lo siguiente:
- Recorta puntos Z superiores a 3 para que sean exactamente 3.
- Corta las puntuaciones Z inferiores a -3 para que sean exactamente -3.
El recorte evita que tu modelo sobreindexe datos sin importancia. Sin embargo, algunos valores atípicos son importantes, así que recorta los valores con cuidado.
Resumen de las técnicas de normalización
Técnica de normalización | Formula | Cuándo debe utilizarse |
---|---|---|
Escalamiento lineal | $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ | Cuando la función se distribuye de manera uniforme entre en un rango fijo. |
Escalamiento de puntuación Z | $$ x' = \frac{x - μ}{σ}$$ | Cuando la distribución de atributos no contiene valores atípicos extremos. |
Escalamiento logarítmico | $$ x' = log(x)$$ | Cuando el atributo cumple con la ley de potencia. |
Recorte | Si USD x > max$, establece $x' = máx.$ Si USD x < mín$, establecer $x' = min$ |
Cuando el atributo contiene valores atípicos extremos. |
Ejercicio: Pon a prueba tus conocimientos
Supongamos que estás desarrollando un modelo que predice la latencia
la productividad en función de la temperatura que se mide en el centro de datos.
Casi todos los valores temperature
de tu conjunto de datos caen
entre 15 y 30 (Celsius), con las siguientes excepciones:
- Una o dos veces al año, en días muy calurosos, algunos valores entre
31 y 45 están registrados en
temperature
. - Cada 1,000 puntos de
temperature
se establece en 1,000 en lugar de la temperatura real.
¿Cuál sería una técnica de normalización razonable para
temperature
?
Los valores de 1,000 son errores y se deben borrar en lugar de recortado.
Los valores entre 31 y 45 son datos legítimos. El recorte probablemente sea una buena idea para estos valores, si suponemos que conjunto de datos no contiene suficientes ejemplos en este rango de temperatura para para entrenarlo para que haga buenas predicciones. Sin embargo, durante la inferencia, ten en cuenta que el modelo recortado haría la misma predicción para una temperatura de 45 grados y una temperatura de 35.