Cómo normalizar datos para la red neuronal y el bosque de decisión

10

Tengo un conjunto de datos con 20000 muestras, cada una tiene 12 características diferentes. Cada muestra está en la categoría 0 o 1. Quiero entrenar una red neuronal y un bosque de decisión para clasificar las muestras de modo que pueda comparar los resultados y ambas técnicas.

Lo primero con lo que me topé es la normalización adecuada de los datos. Una característica está en el rango [0 0,106 6] , otra en [30,40] y hay una característica que toma principalmente el valor 8 y, a veces, 7. Entonces, mientras leo en diferentes fuentes, la normalización adecuada de los datos de entrada Es crucial para las redes neuronales. Como descubrí, hay muchas formas posibles de normalizar los datos, por ejemplo:

  1. Normalización mínima-máxima : el rango de entrada se transforma linealmente al intervalo [0 0,1] (o alternativamente [-1,1] , ¿eso importa?)
  2. Normalización de la puntuación Z : los datos se transforman para tener media cero y varianza unitaria:
    ynortemiw=yolre-mediaVar

¿Qué normalización debería elegir? ¿Se necesita también la normalización para los bosques de decisión? Con la normalización de Z-Score, las diferentes características de mis datos de prueba no se encuentran en el mismo rango. ¿Podría ser esto un problema? ¿Debería normalizarse cada función con el mismo algoritmo, de modo que decida usar Min-Max para todas las funciones o Z-Score para todas las funciones?

¿Existen combinaciones donde los datos se asignan a y también tienen una media cero (lo que implicaría una transformación no lineal de los datos y, por lo tanto, un cambio en la varianza y otras características de los datos de entrada).[-1,1]

Me siento un poco perdido porque no puedo encontrar referencias que respondan estas preguntas.

Merlin1896
fuente

Respuestas:

21

No estoy de acuerdo con los otros comentarios.

En primer lugar, no veo la necesidad de normalizar los datos para los árboles de decisión . Los árboles de decisión funcionan calculando un puntaje (generalmente entropía) para cada división diferente de los datos . Aplicar una transformación a los datos que no cambie el orden de los datos no hace ninguna diferencia.(XXyo,X>Xyo)

Los bosques aleatorios son solo un montón de árboles de decisión, por lo que no cambia esta lógica.

Las redes neuronales son una historia diferente. En primer lugar, en términos de predicción, no hay diferencia. La red neuronal puede contrarrestar fácilmente su normalización, ya que simplemente escala los pesos y cambia el sesgo. El gran problema está en el entrenamiento.

Si utiliza un algoritmo como la propagación hacia atrás resistente para estimar los pesos de la red neuronal, entonces no diferencia. La razón es porque usa el signo del gradiente, no su magnitud, al cambiar los pesos en la dirección de lo que minimiza su error. Este es el algoritmo predeterminado para el neuralnetpaquete en R, por cierto.

¿Cuándo hace la diferencia? Cuando utiliza la propagación hacia atrás tradicional con funciones de activación sigmoidea, puede saturar la derivada sigmoidea.

Considere la función sigmoidea (verde) y su derivada (azul):

sigmoideo

s(9999)=0 0

X-minXmaxX-minX-0.5 0.5

La normalización real no es muy crucial porque solo influye en las iteraciones iniciales del proceso de optimización. Siempre que esté centrado y la mayoría de sus datos estén por debajo de 1, puede significar que tiene que usar un poco menos o más iteraciones para obtener el mismo resultado. Pero el resultado será el mismo, siempre que evite el problema de saturación que mencioné.

Hay algo que no se discute aquí que es la regularización . Si utiliza la regularización de su función objetivo, la forma de normalizar sus datos se afectará el modelo resultante. Supongo que ya estás familiarizado con esto. Si sabe que una variable es más propensa a causar un sobreajuste, su normalización de los datos debería tener esto en cuenta. Por supuesto, esto es completamente independiente de las redes neuronales que se utilizan.

Ricardo Cruz
fuente
2
  1. No hay una respuesta clara . Lo que recomendaría sería escalar sus datos utilizando diferentes enfoques y luego usar el mismo modelo para predecir los resultados en su conjunto de reserva (los RF funcionarían bien aquí). Al menos eso debería mostrar qué enfoque de escala es el mejor en su problema de predicción.
  2. No necesita escalar sus datos para bosques aleatorios
  3. Los rangos individuales no deberían ser un problema, siempre y cuando estén escalados consistentemente para empezar. Esto solo ilustra que hay diferencias entre las variables, solo en una escala más compacta que antes.
  4. , todos sus datos deben escalarse con el mismo enfoque. De lo contrario, los valores en su conjunto de datos transformado podrían relacionarse no con los datos en sí, sino con el algo utilizado para escalar.

Espero que esto ayude.

plumbus_bouquet
fuente
1
Gran respuesta, solo agregaría que depende un poco de la distribución particular de datos con la que está tratando y de si está eliminando los valores atípicos. Los datos normales se verán muy bien si los estandariza. Sin embargo, una distribución uniforme podría verse mucho mejor con la normalización mínima / máxima. Además, una distribución normal de log con sigma = 10 podría ocultar gran parte del comportamiento interesante cercano a cero si lo normaliza min / max.
AN6U5
@ AN6U5 - Muy buen punto. Honestamente, no pensé demasiado en los impactos de la escala en diferentes distribuciones / valores atípicos subyacentes. ¡Podría leerlo esta mañana!
plumbus_bouquet