Normalización y estandarización de datos en redes neuronales.

40

Estoy tratando de predecir el resultado de un sistema complejo utilizando redes neuronales (ANN). Los valores de resultado (dependientes) oscilan entre 0 y 10,000. Las diferentes variables de entrada tienen diferentes rangos. Todas las variables tienen distribuciones más o menos normales.

Considero diferentes opciones para escalar los datos antes del entrenamiento. Una opción es escalar las variables de entrada (independiente) y de salida (dependiente) a [0, 1] calculando la función de distribución acumulativa usando los valores de desviación estándar y media de cada variable, independientemente. El problema con este método es que si uso la función de activación sigmoidea en la salida, muy probablemente perderé datos extremos, especialmente aquellos que no se ven en el conjunto de entrenamiento

Otra opción es usar un puntaje z. En ese caso no tengo el problema de datos extremos; Sin embargo, estoy limitado a una función de activación lineal en la salida.

¿Cuáles son otras técnicas de normalización aceptadas que se usan con los ANN? Traté de buscar comentarios sobre este tema, pero no pude encontrar nada útil.

Boris Gorelik
fuente
La normalización de los puntajes Z a veces se usa, pero tengo la extraña sensación de que puede ser el otro nombre para la respuesta de Bayer.
osknows
Es lo mismo excepto por la parte blanqueadora.
bayerj
1
Si está prediciendo un valor (tal como es) en lugar de una probabilidad (es decir, regresión en lugar de clasificación), siempre debe usar una función de salida lineal.
seanv507
Rank-Gauss por Michael Jahrer . Es rango, entonces hazlo gaussiano.
user3226167

Respuestas:

32

Un enfoque estándar es escalar las entradas para que tengan una media de 0 y una varianza de 1. También la decorelación lineal / blanqueamiento / pca ayuda mucho.

Si está interesado en los trucos del oficio, puedo recomendar el eficiente papel backprop de LeCun.

bayerj
fuente
1
Por supuesto, uno nunca debe tratar de normalizar ciegamente los datos si los datos no siguen una distribución normal (única). stats.stackexchange.com/a/816/4581
user4581
24
Con las redes neuronales tienes que hacerlo. De lo contrario, saturará inmediatamente las unidades ocultas, luego sus gradientes estarán cerca de cero y no será posible aprender. No se trata de modelar (las redes neuronales no asumen ninguna distribución en los datos de entrada), sino de cuestiones numéricas.
bayerj
Estoy bastante confundido Este enlace ( machinelearningmastery.com/… ) dice que la estandarización es útil cuando el algoritmo que está utilizando asume que sus datos tienen una distribución gaussiana (no es el caso del NN). De lo contrario, dice que debe usar Normalización. ¿Alguien puede iluminarme?
ihebiheb
21

1- La normalización Min-max retiene la distribución original de los puntajes, excepto por un factor de escala y transforma todos los puntajes en un rango común [0, 1]. Sin embargo, este método no es robusto (es decir, el método es muy sensible a los valores atípicos).

2- Estandarización (normalización del puntaje Z) La técnica más utilizada, que se calcula utilizando la media aritmética y la desviación estándar de los datos dados. Sin embargo, tanto la desviación estándar como la media son sensibles a los valores atípicos, y esta técnica no garantiza un rango numérico común para los puntajes normalizados. Además, si las puntuaciones de entrada no están distribuidas en Gauss, esta técnica no retiene la distribución de entrada en la salida.

3- Mediana y MAD: La mediana y la desviación absoluta mediana (MAD) son insensibles a los valores atípicos y los puntos en las colas extremas de la distribución. Por lo tanto, es robusto. Sin embargo, esta técnica no retiene la distribución de entrada y no transforma los puntajes en un rango numérico común.

4- estimadores de tanh: Los estimadores de tanh introducidos por Hampel et al. Son robustos y altamente eficientes. La normalización está dada por

estimadores de tanh donde μGH y σGH son las estimaciones de desviación estándar y media, respectivamente, de la distribución de puntaje genuina dada por los estimadores de Hampel.

Por lo tanto, recomiendo estimadores de tanh.

referencia https://www.cs.ccu.edu.tw/~wylin/BA/Fusion_of_Biometrics_II.ppt

Ahmad Hassanat
fuente
Me está costando encontrar información sobre este estimador de tanh. ¿Alguien puede arrojar algo de luz sobre esto?
Ben Ogorek
Finalmente encontré un artículo que hace un buen trabajo describiendo los estimadores de tanh para la normalización: wjscheirer.com/papers/wjs_eccv2010_fusion.pdf . No parecen viables como una opción de normalización de propósito general. "[Los estimadores de Tanh] son ​​mucho más complicados de calcular, en comparación con los puntajes z adaptativos ... Los puntos de cola para tres intervalos diferentes del puntaje promedio de la distribución deben definirse de manera ad hoc. Estos parámetros pueden ser difíciles para determinar experimentalmente, y si se elige incorrectamente, limitar la efectividad de los estimadores de tanh. "
Ben Ogorek
8

Di una respuesta similar aquí Al realizar una regresión múltiple, ¿cuándo debería centrar sus variables predictoras y cuándo debería estandarizarlas? pero pensó que era un contexto lo suficientemente diferente que una respuesta podría ir aquí.

Hay un gran recurso de Usenet http://www.faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html

Da en términos simples algunos de los problemas y consideraciones cuando uno quiere normalizar / estandarizar / reescalar los datos. Como trata el tema desde una perspectiva de aprendizaje automático, y como su pregunta es ML, podría tener cierta relevancia.

Paul
fuente
Debe escribir los puntos principales de cada enlace aquí, para que no se necesite "navegación" adicional
Leoschet
2

Podrías hacerlo

  • normalización min-max (Normalizar entradas / objetivos para caer en el rango [−1,1]), o
  • normalización de la desviación estándar media (Normalizar entradas / objetivos para tener media cero y varianza unitaria / desviación estándar)
prashanth
fuente
1

Si está trabajando python, sklearntiene un método para hacerlo utilizando diferentes técnicas en su preprocessingmódulo (más una característica ingeniosa de canalización, con un ejemplo en sus documentos):

import sklearn

# Normalize X, shape (n_samples, n_features)
X_norm = sklearn.preprocessing.normalize(X)
ryanjdillon
fuente
0

Bueno, [0,1] es el enfoque estándar. Para redes neuronales, funciona mejor en el rango 0-1. La escala Min-Max (o Normalización) es el enfoque a seguir.

Ahora en los valores atípicos, en la mayoría de los escenarios tenemos que recortarlos, ya que los valores atípicos no son comunes, no desea que los valores atípicos afecten a su modelo (a menos que la detección de anomalías sea el problema que está resolviendo). Puede recortarlo según la regla empírica de 68-95-99.7 o hacer un diagrama de caja, observarlo y recortarlo en consecuencia.

Fórmula MinMax, (xi - min(x)) / (max(x) - min(x)) o puede usarsklearn.preprocessing.MinMaxScaler

D intocable
fuente
-1

"Aceptado" es lo que funcione mejor para usted, entonces lo acepta.

En mi experiencia, ajustar una distribución de la familia de distribuciones Johnson a cada una de las características continuas funciona bien porque las distribuciones son muy flexibles y pueden transformar la mayoría de las características unimodales en distribuciones normales estándar. También ayudará con las funciones multimodales, pero el punto es que generalmente las pone en la forma más deseable posible (los datos distribuidos en Gauss estándar son ideales para trabajar: son compatibles y, a veces, óptimos para la mayoría de los casos). método estadístico / ML disponible).

http://qualityamerica.com/LSS-Knowledge-Center/statisticalinference/johnson_distributions.php

JPJ
fuente