Estoy construyendo modelos de regresión. Como paso de preprocesamiento, escalo los valores de mis características para que tengan una media 0 y una desviación estándar 1. ¿Es necesario normalizar también los valores objetivo?
Estoy construyendo modelos de regresión. Como paso de preprocesamiento, escalo los valores de mis características para que tengan una media 0 y una desviación estándar 1. ¿Es necesario normalizar también los valores objetivo?
Respuestas:
Primero analicemos por qué se realiza el escalado de características. El escalado de características mejora la convergencia de los algoritmos de descenso más pronunciados, que no poseen la propiedad de invariancia de escala.
En los ejemplos de entrenamiento de descenso de gradiente estocástico, informe las actualizaciones de peso de forma iterativa de esta manera,
Donde son los pesos, es un tamaño de pasos, es el gradiente de los pesos wrt, es una función de pérdida, es la función parametrizada por , es un ejemplo de entrenamiento e es la respuesta / etiqueta.γ ∇ w ℓ f w w x y
Compare las siguientes funciones convexas, que representan la escala adecuada y la escala incorrecta.
Un paso a través de una actualización de peso de tamaño producirá una reducción mucho mejor en el error en el caso correctamente escalado que el caso incorrectamente escalado. A continuación se muestra la dirección de de longitud .∇ w ℓ ( f w ( x ) , y ) γ
La normalización de la salida no afectará la forma de , por lo que generalmente no es necesario.
La única situación que puedo imaginar es que el escalado de las salidas tiene un impacto, es si su variable de respuesta es muy grande y / o está usando variables f32 (que es común con el álgebra lineal de GPU). En este caso, es posible obtener un desbordamiento de coma flotante de un elemento de los pesos. El síntoma es un valor Inf o se ajustará a la otra representación extrema.
En general, no es necesario. El escalado de entradas ayuda a evitar la situación, cuando una o varias características dominan otras en magnitud, como resultado, el modelo apenas capta la contribución de las variables de menor escala, incluso si son fuertes. Pero si escala el objetivo, su error cuadrático medio se escala automáticamente. MSE> 1 automáticamente significa que lo estás haciendo peor que una predicción constante (ingenua).
No, las transformaciones lineales de la respuesta nunca son necesarias. Sin embargo, pueden ser útiles para ayudar en la interpretación de su modelo. Por ejemplo, si su respuesta se da en metros, pero generalmente es muy pequeña, puede ser útil cambiar la escala a, por ejemplo, milímetros. Tenga en cuenta también que centrar y / o escalar las entradas puede ser útil por la misma razón. Por ejemplo, puede interpretar aproximadamente un coeficiente como el efecto sobre el cambio de respuesta por unidad en el predictor cuando todos los demás predictores se establecen en 0 . Pero 0 a menudo no será un valor válido o interesante para esas variables. Centrar las entradas le permite interpretar el coeficiente como el efecto por unidad de cambio cuando los otros predictores asumen sus valores promedio.
Otras transformaciones (es decir, log o raíz cuadrada) pueden ser útiles si la respuesta no es lineal en los predictores en la escala original. Si este es el caso, puede leer sobre modelos lineales generalizados para ver si son adecuados para usted.
Que no afecta descenso de gradiente en una mala manera. verifique la fórmula para el descenso de gradiente:
Digamos que es una característica que es 1000 veces mayor que
para tenemos . La forma óptima de alcanzar (0,0), que es el óptimo global, es moverse a través de la diagonal, pero si una de las características domina a la otra en términos de escala, eso no sucederá.
Para ilustrar: Si realiza la transformación , suponga una tasa de aprendizaje uniforme para ambas coordenadas y calcule el gradiente y luegoLa forma funcional es la misma, pero la tasa de aprendizaje para la segunda coordenada debe ajustarse a 1/1000 de la de la primera coordenada para que coincida. Si no, las coordenadas dos dominarán y el vector apuntará más hacia esa dirección.
Como resultado, sesga el delta para que apunte solo en esa dirección y hace que la convergencia sea más lenta.
Sí , necesita escalar la variable objetivo. Citaré esta referencia :
Una variable objetivo con una gran extensión de valores, a su vez, puede dar lugar a grandes valores de gradiente de error que provoquen cambios drásticos en los valores de peso, haciendo que el proceso de aprendizaje sea inestable.
En la referencia, también hay una demostración del código donde los pesos del modelo explotaron durante el entrenamiento debido a los errores muy grandes y, a su vez, los gradientes de error calculados para las actualizaciones de peso también explotaron. En resumen, si no escala los datos y tiene valores muy grandes, asegúrese de usar valores de tasa de aprendizaje muy pequeños. Esto también fue mencionado por @drSpacy.