Alternativas a la generalización L1, L2 y Dropout

8

Tengo la siguiente configuración para un proyecto de investigación de Finanzas / Aprendizaje automático en mi universidad: estoy aplicando una Red neuronal (profunda) (MLP) con la siguiente estructura en Keras / Theano para distinguir las existencias con mejor rendimiento (etiqueta 1) de las existencias con bajo rendimiento ( etiqueta 0). En primer lugar, solo uso múltiplos de valoración reales e históricos. Debido a que se trata de datos de existencias, uno puede esperar tener datos muy ruidosos. Además, una precisión estable fuera de la muestra de más del 52% ya podría considerarse como buena en este dominio.

La estructura de la red:

  • Capa densa con 30 características como entrada
  • Relu-Activation
  • Capa de normalización por lotes (sin eso, la red no está convergiendo en absoluto)
  • Capa de abandono opcional
  • Denso
  • Relu
  • Lote
  • Abandonar
  • .... Más capas, con la misma estructura.
  • Capa densa con activación sigmoidea

Optimizador: RMSprop

Función de pérdida: entropía cruzada binaria

Lo único que hago para el preprocesamiento es reescalar las características al rango [0,1].

Ahora me encuentro con un problema típico de sobreajuste / subajuste, que normalmente abordaría con Dropout o / y la regularización de kernel L1 y L2. Pero en este caso, tanto la deserción como la regularización L1 y L2 tienen un impacto negativo en el rendimiento, como puede ver en los siguientes gráficos.

Mi configuración básica es: 5 capas NN (incluida la capa de entrada y salida), 60 neuronas por capa, tasa de aprendizaje de 0.02, sin L1 / L2 y sin abandono, 100 épocas, normalización de lotes, tamaño de lote 1000. Todo está entrenado en 76000 muestras de entrada (clases casi equilibradas 45% / 55%) y aplicadas a aproximadamente la misma cantidad de muestras de prueba. Para los gráficos solo he cambiado un parámetro a la vez. "Perf-Diff" significa la diferencia de rendimiento promedio de las acciones clasificadas como 1 y las acciones clasificadas como 0, que es básicamente la métrica central al final. (Más alto es mejor)

Regularización En el caso l1, la red básicamente clasifica cada muestra en una clase. El aumento está ocurriendo porque la red está haciendo esto nuevamente pero clasifica 25 muestras al azar. Por lo tanto, este pico no debe interpretarse como un buen resultado, sino un valor atípico.

Los otros parámetros tienen el siguiente impacto: ingrese la descripción de la imagen aquí

¿Tienes alguna idea de cómo podría mejorar mis resultados? ¿Hay un error obvio que estoy haciendo o hay una respuesta fácil a los resultados de la regularización? ¿Sugeriría hacer algún tipo de selección de características antes del entrenamiento (por ejemplo, PCA)?

Editar : Parámetros adicionales: ingrese la descripción de la imagen aquí

SebastianB
fuente
2
Solo algunos pensamientos desorganizados: el tamaño de su lote es bastante grande. Otra estrategia de regularización es la norma máxima: limitar la norma L2 total de los pesos en una capa particular a algún valor. Los datos de stock naturalmente tienen una naturaleza de serie temporal, por lo que tal vez una capa RNN podría ayudar. Pero configurar un ANN es más arte que ciencia, incluso cuando un problema es simple, se necesita la combinación correcta de parámetros para que la red aprenda.
Sycorax dice Reinstate Monica
@Sycorax: acabo de editar mi pregunta e incluí la norma máxima y el tamaño del lote: comportamiento interesante, pero sin gran efecto en los resultados de la prueba, más en los resultados del tren. Desafortunadamente, en realidad no tengo datos de series de tiempo, sino más datos de instantáneas de punto en el tiempo, por lo que creo que un RNN no es aplicable en mi caso.
SebastianB

Respuestas:

2

Dado que se trata de datos financieros, es probable que las distribuciones de características en su tren y conjuntos de validación sean diferentes, un fenómeno conocido como cambio covariable, y las redes neuronales no tienden a funcionar bien con esto. Tener diferentes distribuciones de características puede causar un sobreajuste incluso si la red es relativamente pequeña.

Dado que l1 y l2 no ayudan, sospecho que otras medidas de regularización estándar, como agregar ruido a las entradas / pesos / gradientes, probablemente no ayuden, pero puede valer la pena intentarlo.

Me sentiría tentado a probar un algoritmo de clasificación que se vea menos afectado por las magnitudes absolutas de las características, como un árbol impulsado por gradiente.

housecat64
fuente