Después de examinar tus datos con técnicas estadísticas y de visualización, debes transformarlos de manera que ayuden a que tu modelo se entrene de manera más eficaz. El objetivo de la normalización es transformar las características para que estén en una escala similar. Por ejemplo, considera las siguientes dos funciones:
- 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 podría manipular X
y Y
para que abarquen un rango similar, tal vez de 0 a 1.
La normalización proporciona los siguientes beneficios:
- Ayuda a que los modelos convergen más rápido durante el entrenamiento. Cuando diferentes atributos tienen diferentes rangos, el descenso por gradiente puede “rebotar” y ralentizar la convergencia. Dicho esto, los optimizadores más avanzados, como Adagrad y Adam, protegen contra este problema cambiando la tasa de aprendizaje efectiva con el tiempo.
- Ayuda a los modelos a inferir mejores predicciones. Cuando diferentes atributos tienen distintos rangos, el modelo resultante puede hacer predicciones un poco menos útiles.
- Ayuda a evitar la “trampa de NaN” cuando los valores de los atributos son muy altos.
NaN es la sigla en inglés de not a number. Cuando un valor de un modelo supera el límite de precisión de punto flotante, el sistema establece el valor en
NaN
en lugar de un número. Cuando un número del modelo se convierte en NaN, otros números del modelo también se convierten en NaN. - Ayuda al modelo a aprender los pesos adecuados para cada atributo. Sin el ajuste de atributos, el modelo les presta demasiada atención a los atributos con rangos amplios y no les presta suficiente atención a los atributos con rangos estrechos.
Recomendamos normalizar los atributos numéricos que abarcan rangos claramente diferentes (por ejemplo, edad e ingresos).
También recomendamos que se normalice un solo atributo numérico que cubra un rango amplio, como city population.
.
Ten en cuenta las siguientes dos funciones:
- El valor más bajo de la función
A
es -0.5 y el más alto es +0.5. - El valor más bajo de la función
B
es -5.0 y el más alto es +5.0.
Los componentes A
y B
tienen intervalos relativamente estrechos. Sin embargo, el intervalo de la función B
es 10 veces más amplio que el de la función A
. Por lo tanto:
- Al comienzo del entrenamiento, el modelo supone que el atributo
B
es diez veces más “importante” que el atributoA
. - El entrenamiento tardará más de lo debido.
- Es posible que el modelo resultante no sea el óptimo.
El daño general por no realizar la normalización será relativamente pequeño. Sin embargo, te recomendamos que normalices las funciones A y B en 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 elemento
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 no sea óptimo. Además, el entrenamiento tardará mucho más en converger o incluso no convergerá por completo.
En esta sección, se describen tres métodos de normalización populares:
- escalamiento lineal
- Escalamiento de la puntuación Z
- escalamiento logarítmico
En esta sección, también se aborda el recorte. Aunque no es una técnica de normalización real, el recorte controla los atributos numéricos ingobernables en rangos que producen mejores modelos.
Escalamiento lineal
El escalamiento lineal (que se suele abreviar como ajuste) consiste en convertir los valores de punto flotante de su rango natural en 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 siguientes condiciones:
- Los límites inferior y superior de tus datos no cambian mucho con el tiempo.
- La función contiene pocos valores atípicos o no tiene ninguno, y esos valores no son extremos.
- El atributo se distribuye de forma aproximadamente uniforme en su rango. Es decir, un histograma mostraría barras aproximadamente iguales para la mayoría de los valores.
Supongamos que el age
humano es un atributo. El escalamiento lineal es una buena técnica de normalización para age
por los siguientes motivos:
- Los límites inferior y superior aproximados son de 0 a 100.
age
contiene un porcentaje relativamente pequeño de valores atípicos. Solo el 0.3% de la población tiene más de 100 años.- Aunque ciertas edades están algo mejor representadas que otras, un conjunto de datos grande debe contener ejemplos suficientes de todas las edades.
Ejercicio: Comprueba tus conocimientos
Supongamos que tu modelo tiene un atributo llamadonet_worth
que contiene el valor neto de diferentes personas. ¿El escalamiento lineal sería una buena técnica de normalización para net_worth
? ¿Por qué?
Escalamiento de la 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 es 2 desviaciones estándar mayores que la media tiene una puntuación Z de +2.0. Un valor que es 1.5 desviaciones estándar menos que la media tiene una puntuación Z de -1.5.
Representar un atributo con escala de puntuación Z significa almacenar la puntuación Z de ese atributo 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 el escalamiento de puntuación z.
El escalamiento de la puntuación Z también es una buena opción para datos como los que se muestran en la siguiente figura, que solo tiene una distribución vagamente normal.
La puntuación z es una buena opción cuando los datos siguen una distribución normal o una distribución similar a una normal.
Ten en cuenta que algunas distribuciones pueden ser normales en la mayor parte de su rango, pero aún contienen valores extremos. Por ejemplo, casi todos los puntos de una función net_worth
podrían encajar perfectamente en 3 desviaciones estándar, pero algunos ejemplos de esta función podrían estar a cientos de desviaciones estándar de la media. En estas situaciones, puedes combinar el escalamiento de la puntuación Z con otra forma de normalización (por lo general, recorte) para controlar esta situación.
Ejercicio: Comprueba tu comprensión
Supongamos que tu modelo se entrena en un atributo llamadoheight
que contiene las alturas de diez millones de mujeres adultas. ¿El escalamiento de puntuación z sería una buena técnica de normalización para height
? ¿Por qué?
Escalamiento logarítmico
El escalamiento logarítmico calcula el logaritmo del valor sin procesar. En teoría, el logaritmo podría ser cualquier base. En la práctica, la escala de registro 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. En términos generales, una distribución de ley de potencia 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 clasificaciones de películas son un buen ejemplo de una distribución de ley de potencia. En la siguiente figura, observa lo siguiente:
- Algunas películas tienen muchas calificaciones de los usuarios. (Los valores bajos de
X
tienen valores altos deY
). - La mayoría de las películas tienen muy pocas calificaciones de los usuarios. (Los valores altos de
X
tienen valores bajos deY
).
El escalamiento logarítmico cambia la distribución, lo que ayuda a entrenar un modelo que realizará mejores predicciones.
Como segundo ejemplo, las ventas de libros se ajustan a una distribución de ley de potencia porque:
- La mayoría de los libros publicados venden una pequeña cantidad de copias, tal vez uno o doscientos.
- Algunos libros venden una cantidad moderada de copias, por miles.
- Solo unos pocos más vendidos venden más de un millón de copias.
Supongamos que estás entrenando un modelo lineal para encontrar la relación, por ejemplo, entre las portadas de los libros y las ventas de estos. Un entrenamiento de modelos lineales con valores sin procesar tendría que encontrar algo sobre las portadas de libros que venden un millón de copias que sean 10,000 más poderosas que las que venden solo 100 copias. Sin embargo, el registro de escalamiento 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 registro 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. Es probable que podrías imaginar que la portada de un libro más vendido es tres veces más poderosa (de alguna manera) que una diminuta que se vende.
Recorte
El recorte es una técnica para minimizar la influencia de los valores atípicos extremos. En resumen, el recorte suele limitar (reducir) el valor de los valores extremos a un valor máximo específico. El recorte es una idea extraña y, sin embargo, puede ser muy eficaz.
Por ejemplo, imagina un conjunto de datos que contiene un atributo llamado roomsPerPerson
, que representa la cantidad de habitaciones (cantidad total de habitaciones dividida por la cantidad de ocupantes) de varias casas. En el siguiente gráfico, se muestra que más del 99% de los valores de la función se ajustan a una distribución normal (aproximadamente, una media de 1.8 y una desviación estándar de 0.7). Sin embargo, el atributo contiene
algunos valores atípicos, algunos de ellos extremos:
¿Cómo puedes minimizar la influencia de esos valores atípicos extremos? Bueno, el histograma no es una distribución uniforme, una distribución normal ni una distribución de ley de potencia. ¿Qué sucede si solo limitas o recortas el valor máximo de roomsPerPerson
a un valor arbitrario, como 4.0?
Recortar el valor de la función en 4.0 no significa que tu modelo omita todos los valores superiores a 4.0. En cambio, significa que todos los valores que eran mayores que 4.0 ahora se convierten en 4.0. Esto explica la colina peculiar en 4.0. A pesar de esa colina, el conjunto de atributos ajustado ahora es más útil que los datos originales.
Espera un momento. ¿Realmente puedes reducir cada valor de valor atípico a un umbral superior arbitrario? Sí, cuando entrenas un modelo.
También puedes recortar valores después de aplicar otras formas de normalización. Por ejemplo, supongamos que usas el ajuste de escala de puntuación Z, pero algunos valores atípicos tienen valores absolutos muy superiores a 3. En este caso, puedes hacer lo siguiente:
- Recortar las puntuaciones Z superiores a 3 para que sean exactamente 3
- Recortar las puntuaciones Z inferiores a -3 para que sean exactamente -3
El recorte evita que el modelo indexe en exceso los datos sin importancia. Sin embargo, algunos valores atípicos son importantes, por lo que debes recortar 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 el atributo se distribuye de manera uniforme en un rango fijo. |
Escalamiento de la 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 $x > max$, establece $x' = max$ Si $x < min$, establece $x' = min$ |
Cuando el atributo contiene valores extremos. |
Ejercicio: Pon a prueba tus conocimientos
Supongamos que estás desarrollando un modelo que predice la productividad de un centro de datos según la temperatura medida en su interior.
Casi todos los valores de temperature
de tu conjunto de datos están entre 15 y 30 (Celsius), con las siguientes excepciones:
- Una o dos veces al año, en días extremadamente calurosos, se registran algunos valores entre 31 y 45 en
temperature
. - Cada 1,000 puntos en
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 recortarse.
Los valores entre 31 y 45 son datos legítimos. Es probable que sea una buena idea recortar estos valores, siempre que el conjunto de datos no contenga suficientes ejemplos en este rango de temperatura para entrenar al modelo y que realice 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 que para una de 35.