¿Realizar la normalización de características antes o dentro de la validación del modelo?

52

Una buena práctica común en Machine Learning es hacer la normalización de características o la estandarización de datos de las variables predictoras, eso es todo, centrar los datos restando la media y normalizarlos dividiendo por la varianza (o la desviación estándar también). Para la autocontención y, a mi entender, hacemos esto para lograr dos cosas principales:

  1. Evite pesos de modelos extra pequeños con el propósito de estabilidad numérica.
  2. Garantice la convergencia rápida de algoritmos de optimización como, por ejemplo, Gradiente conjugado, de modo que la gran magnitud de una dimensión predictiva con las otras no conduzca a una convergencia lenta.

Por lo general, dividimos los datos en conjuntos de capacitación, validación y prueba. En la literatura generalmente vemos que para hacer la normalización de características toman la media y la varianza (o desviación estándar) sobre todo el conjunto de variables predictoras. El gran defecto que veo aquí es que si haces eso, de hecho estás introduciendo información futura en las variables predictoras de entrenamiento, es decir, la información futura contenida en la media y la varianza.

Por lo tanto, sí presento la normalización sobre los datos de entrenamiento y guardo la media y la varianza. Luego aplico la normalización de características a las variables predictoras de los conjuntos de datos de validación y prueba usando la media de entrenamiento y las variaciones. ¿Hay alguna falla fundamental con esto? ¿Alguien puede recomendar una mejor alternativa?

Andante del cielo
fuente

Respuestas:

46

Su enfoque es completamente correcto. Aunque las transformaciones de datos a menudo se infravaloran como "preprocesamiento", no se puede enfatizar lo suficiente que las transformaciones para optimizar el rendimiento del modelo pueden y deben tratarse como parte del proceso de construcción del modelo.

Razonamiento: un modelo se aplicará a datos invisibles que, en general, no están disponibles en el momento en que se construye el modelo. El proceso de validación (incluida la división de datos) simula esto. Entonces, para obtener una buena estimación de la calidad del modelo (y el poder de generalización) es necesario restringir el cálculo de los parámetros de normalización (media y varianza) al conjunto de entrenamiento.

Solo puedo adivinar por qué esto no siempre se hace en la literatura. Un argumento podría ser que el cálculo de la media y la varianza no es tan sensible a pequeñas variaciones de datos (pero incluso esto solo es cierto si el tamaño básico de la muestra es lo suficientemente grande y los datos se distribuyen aproximadamente normalmente sin valores extremos).

steffen
fuente
Esto me parece un poco confuso. El OP dice que él está haciendo la normalización de funciones en los conjuntos de datos de validación y prueba. Su respuesta primero dice que su enfoque es correcto. Luego dice "uno necesita restringir el cálculo de los parámetros de normalización al conjunto de entrenamiento", que no es lo que está haciendo. Entonces su respuesta se contradice al decirle que lo que está haciendo es correcto y luego sugerir lo contrario. ¿Que me estoy perdiendo aqui?
mahonya
44
Lo que hace el OP se describe en su último párrafo y esto es exactamente lo que he dicho. Por supuesto, la normalización se aplica al conjunto de prueba / validación si se ha aplicado al conjunto de entrenamiento. El punto importante es que los parámetros de esta normalización se han calculado solo en los datos de entrenamiento y no en todo el conjunto. Espero que esto ayude.
steffen
Ah, muchas gracias No entendí tu respuesta. Pensé que estabas sugiriendo la 'aplicación' de la normalización solo al conjunto de entrenamiento, que claramente no era lo que sugeriste.
mahonya
2

La normalización de características consiste en hacer diferentes características en la misma escala. El escalado acelera el descenso del gradiente al evitar muchas iteraciones adicionales que se requieren cuando una o más características toman valores mucho más grandes que el resto (sin escalar, la función de costo que se visualiza mostrará una gran asimetría).

Creo que tiene sentido usar la media y var del conjunto de entrenamiento cuando llegan los datos de la prueba. Sin embargo, si el tamaño de los datos es enorme, tanto los conjuntos de entrenamiento como los de validación pueden verse aproximadamente como una distribución normal, por lo que comparten aproximadamente la media y la var.

lennon310
fuente
1
La razón por la cual la normalización de datos puede acelerar el descenso del gradiente, supongo, es que sin normalización el rss tiene contornos elípticos, por lo que dada la velocidad de aprendizaje fija, podría necesitar más iteraciones para que converja el descenso del gradiente. Mientras que con la escala, rss tiene contornos circulares (simétricos), por lo que el descenso del gradiente converge rápidamente. Estoy en lo cierto?
aguacate
1

La metodología que ha descrito es sólida como han dicho otros. Debe realizar exactamente la misma transformación en las características de su conjunto de prueba que en las características de su conjunto de entrenamiento.

Creo que vale la pena agregar que otra razón para la normalización de características es mejorar el rendimiento de ciertos procesos que son sensibles a las diferencias en la escala de ciertas variables. Por ejemplo, el análisis de componentes principales (PCA) tiene como objetivo capturar la mayor proporción de varianza, y como resultado dará más peso a las variables que exhiben la mayor varianza si la normalización de la característica no se realiza inicialmente.

bibzzzz
fuente
Muy buen punto! gracias por traerlo. Recuerdo que en mis estudios siempre normalicé la matriz de entrada antes de calcular la PCA.
SkyWalker