¿Cómo codificar la fecha y hora de un evento para una red neuronal?
No tengo una serie temporal continua, sino algunos eventos con fecha y hora, y analizo algún tipo de interés. Este interés difiere entre las mañanas y las tardes, y difiere entre los días de la semana, y entre el verano y el invierno, y antes de Navidad y Pascua, y así sucesivamente. Y los eventos en sí mismos tienen una fuerte distribución no uniforme a lo largo del tiempo (más de día que de noche, algunos tipos más durante la semana, algunos más durante el fin de semana).
Intenté codificarlo como Número de semana en el año, como Día de la semana 1-7 y como Hora del día. Pero jugar con un autoencoder escaso me dio la impresión de que mis datos no tienen ningún sentido para una red neuronal, ni siquiera podría reproducir nada cerca de la entrada, incluso con una gran capa oculta. Ni como 0-1 categorial ni como valores normalizados.
Pero la búsqueda de la codificación del tiempo para una red neuronal proporciona principalmente información sobre series de tiempo, por lo que estoy un poco con los ojos vendados por el bosque pero en busca del árbol.
Por supuesto, podría mirar los datos y clasificarlos más o menos despóticos. Pero el concepto de Deep Learning parece eliminar toda la extracción manual de funciones hecha a mano. Y la categorización insertaría grandes saltos en una variable de entrada naturalmente continua.
Mi "codificación natural" en mi cerebro es más como una membresía difusa en algunas categorías como "noche", "mañana", "día de la semana", etc.
Para hacer todo más interesante, también la variable dependiente contiene esos datos de fecha / hora, pero esa es una pregunta diferente.
EDITAR: De alguna manera relacionada con el tipo de datos cíclicos hay algunas preguntas recientes, como
¿Qué pruebas estadísticas son razonables con este conjunto de datos de hora del día?
fuente
Podría intentar representar el tiempo como una matriz grande, es decir, un 365 por 24, para representar los días del año y las horas del día, y luego "desenrollar" esto en un vector de 1 por 8760. El tiempo correspondería a la posición dentro de este vector y el valor en esta posición es el valor en ese momento.
fuente
Sugeriría crear múltiples características de entrada de la serie de tiempo utilizando relaciones que usted sabe (o cree) que ya existen en los datos. Por ejemplo, usted indica que la salida objetivo variará:
Entonces, ¿por qué no crear un conjunto de características que describa cada uno de estos 'ciclos'? Esto puede ayudar a descifrar las variaciones micro y macro en lugar de una sola característica que describe todo.
Por ejemplo...
Si tiene una tendencia por la cual ocurre algo interesante alrededor del mediodía cada día, cree una función del 1 al que describa las horas del día. Ahora la red aprenderá a disparar alrededor de las 12. Compare esto con el caso en que tiene estos mismos datos codificados como horas en una semana . Ahora la red tiene que intentar aprender a disparar en que es significativamente más complejo.1..24 1..168 12,36,60...
fuente