62 votos

Es una buena práctica siempre escala/normalizar los datos para el aprendizaje de máquina?

Mi entendimiento es que cuando algunas de las características tienen diferentes rangos en sus valores (por ejemplo, imagine que una característica es la edad de una persona y otra, siendo su salario en DÓLARES) afectará negativamente algoritmos debido a que la característica con grandes valores tendrán más influencia, es una buena práctica SIEMPRE escala/normalizar los datos?

Me parece que si los valores son ya similares entre los que, luego de la normalización de ellos tendrá poco efecto, pero si los valores son muy diferentes de normalización va a ayudar, sin embargo se siente demasiado sencillo para ser verdad :)

Me estoy perdiendo algo? Hay situaciones/algoritmos fueron realmente es deseable permitir que algunas de las características deliberadamente superan a los demás?

66voto

catalpa Puntos 723

Lo primero es lo primero, no creo que hay muchas preguntas de la forma "Es una buena práctica siempre X en el aprendizaje de máquina", donde la respuesta va a ser la definitiva. Siempre? Siempre siempre? A través paramétricos, no paramétricos, Bayesiano, Monte Carlo, ciencias sociales, puramente matemático, y millones característica de los modelos? Que estaría bien, ¿no es!

Concretamente, si bien, aquí están algunas de las formas en que: solo de ti depende.

Algunas veces, cuando la normalización es buena:

1) Varios algoritmos, en particular SVMs vienen a la mente, a veces puede converge mucho más rápido en los datos normalizados (aunque por qué, precisamente, no recuerdo).

2) Cuando el modelo es sensible a la magnitud y las unidades de dos características diferentes son diferentes, y arbitrario. Esto es como el caso que usted sugiere, en la que algo se hace más influencia de lo que debería.

Pero por supuesto, no todos los algoritmos son sensibles a la magnitud de la manera que usted sugiere. Lineal de los coeficientes de regresión será el mismo si se hace, o no, la escala de sus datos, ya que mirando proporcional de las relaciones entre ellos.

Algunas veces, cuando la normalización es malo:

1) Cuando se desea interpretar sus coeficientes, y no normalizar bien. La regresión en algo como dólares te da un resultado significativo. La regresión en proporción-de-máximo-dinero-en-la muestra puede que no.

2) Cuando, en realidad, las unidades en sus características son significativas, y la distancia no hacer una diferencia! De vuelta a la SVMs -- si usted está tratando de encontrar un max-margen de clasificador, entonces las unidades que van en los que 'max' de la materia. Las características de escala para los algoritmos de clustering puede cambiar sustancialmente el resultado. Imaginar cuatro grupos alrededor del origen, cada uno en diferentes cuadrantes, todos muy bien a escala. Ahora, imagine que el eje de las y se estiró a diez veces la longitud del eje de las x. en lugar de cuatro cuadrantes: clústeres, usted va a obtener el largo aplastado baguette de datos cortada en cuatro trozos a lo largo de su longitud! (Y, la parte importante es, usted podría preferir cualquiera de estos!)

Estoy seguro de insatisfacción en resumen, la mayoría de la respuesta general es que usted necesita preguntarse a sí mismo muy en serio lo que hace sentido con los datos, y el modelo que está utilizando.

24voto

Amir Puntos 230

Bueno, yo creo más punto de vista geométrico ayudará a decidir mejor si la normalización ayuda o no. Imagina tu problema de interés sólo tiene dos características y rango diferente. A continuación, geométricamente, los puntos de datos están repartidas por todo y la forma de un elipsoide. Sin embargo, si las características son normalizado que estará más concentrado y esperemos que forman una unidad círculo y hacer que la covarianza diagonal o al menos cerca de la diagonal. Esto es lo que es la idea detrás de la aplicación de métodos tales como lote-la normalización de las representaciones intermedias de datos en redes neuronales. El uso de BN la velocidad de convergencia aumenta sorprendentemente (tal vez de 5 a 10 veces), ya que la pendiente puede ayudar a los gradientes de hacer lo que se supone que deben hacer con el fin de reducir el error.

En los no normalizados caso, el gradiente de optimización basado en algoritmos tendrá un tiempo muy difícil de mover el peso de vectores hacia una buena solución. Sin embargo, el costo de la superficie de la normalizado caso es menos alargada y gradiente basado en métodos de optimización va a hacer mucho mejor y divergen menos.

Este es ciertamente el caso de los modelos lineales y especialmente las whos función de costo es una medida de la divergencia de la modelo de la salida y el de destino (por ejemplo, la regresión lineal con MSE función de coste), pero podría no ser necesariamente el caso en el no-lineales. Sin embargo, la normalización no hace daño a la para modelos no lineales, pero no hacerlo para modelos lineales va a hacer daño.

La imagen de abajo podría ser [aproximadamente] visto como ejemplo de una alargada superficie de error en el que el gradiente de métodos basados podría tener tiempo duro para ayudar a que el peso de los vectores de movimiento hacia el local optima.

enter image description here

8voto

MartyTPS Puntos 186

Permítanme contarles la historia de cómo aprendí la importancia de la normalización.

Yo estaba tratando de clasificar un manuscrito dígitos de datos (es una simple tarea de clasificación de las características extraídas de las imágenes de los escritos a mano dígitos) con las Redes Neuronales como una cesión de una Máquina de Aprendizaje del curso.
Como cualquier otra persona, yo empecé con una Red Neuronal de la biblioteca/de la herramienta, se alimenta con los datos y empezó a jugar con los parámetros. He intentado cambiar el número de capas, el número de neuronas y diversas funciones de activación. Ninguno de ellos dio los resultados esperados (precisión de alrededor de 0.9).

El Culpable? El factor de escala (s) en función de activación = $\frac{s}{1+e^{-s.x}}$-1. Si el parámetro s no está establecido, la función de activación activar cada entrada o anular cada entrada, en cada iteración. Que, obviamente, se llevaron a inesperados valores para los parámetros del modelo. Mi punto es, no es fácil establecer s cuando la entrada x es variable a lo largo de grandes valores.

Como algunas de las otras respuestas ya se señaló, la "buena práctica" en cuanto a si para normalizar los datos o no depende de los datos, el modelo y la aplicación. Por la normalización, en realidad se está tirando algo de información acerca de los datos, tales como el máximo absoluto y el mínimo de los valores. Así, no hay ninguna regla.

Gracias.

4voto

ripper234 Puntos 39314

Como otros dijeron, la normalización no es siempre aplicable; por ejemplo, desde un punto de vista práctico.

Con el fin de ser capaz de escala o normalizar las características comunes de la gama como [0,1], usted necesita saber el min/max (o mean/stdev dependiendo de la escala del método de aplicar) de cada característica. IOW: debe tener todos los datos para todas las funciones antes de iniciar el entrenamiento.

Muchas prácticas de problemas de aprendizaje no proporcionan con todos los datos a priori, por lo que simplemente no se puede normalizar. Tales problemas requieren de un enfoque de aprendizaje en línea.

Sin embargo, tenga en cuenta que algunos en línea (como opuesto al aprendizaje por lotes) algoritmos que aprenden a partir de un ejemplo en un momento, el apoyo de una aproximación a la escala/normalización. Ellos aprenden de las escalas y compensar por ellos, de forma iterativa. vowpal wabbit por ejemplo, de manera iterativa, normaliza para la escala por defecto (a menos que explícitamente deshabilitar el auto-escalado por forzar un cierto algoritmo de optimización como ingenuo --sgd)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X