Como codificar a data e hora de um evento para uma rede neural?
Não tenho uma série temporal contínua, mas alguns eventos com data e hora, e analiso algum tipo de interesse. Esse interesse difere entre manhãs e tardes, e entre dias úteis, e entre verão e inverno, e antes do Natal e da Páscoa, e assim por diante. E os eventos em si têm uma forte distribuição não uniforme ao longo do tempo (mais durante o dia do que à noite, alguns tipos mais durante a semana, outros mais no fim de semana).
Tentei codificá-lo como Número de semana no ano, Dia da semana 1-7 e Hora do dia. Mas brincar com um codificador automático esparso me deu a impressão de que meus dados não fazem sentido para uma rede neural; eles nem sequer podiam reproduzir nada perto da entrada, mesmo com uma grande camada oculta. Nem como categoria 0-1 nem como valores normalizados.
Mas procurar a codificação do tempo para uma rede neural fornece principalmente informações sobre séries temporais, por isso estou um pouco vendado pela floresta, mas procurando pela árvore.
É claro que eu poderia examinar os dados e categorizá-los mais ou menos despóticos. Mas o conceito de Deep Learning parece varrer toda a extração manual de recursos artesanal. E a categorização iria inserir grandes saltos em uma variável de entrada naturalmente contínua.
Minha "codificação natural" no meu cérebro é mais como uma associação confusa a algumas categorias como "noite", "manhã", "dia da semana" e assim por diante.
Para tornar tudo mais interessante, também a variável dependente contém esses dados de data / hora, mas essa é uma pergunta diferente.
EDIT: De alguma forma relacionados ao tipo cíclico de dados, há algumas perguntas recentes, como
Quais testes estatísticos são razoáveis com esse conjunto de dados da hora do dia?
fonte
Você pode tentar representar o tempo como uma grande matriz, ou seja, 365 por 24, para representar os dias do ano e as horas do dia e, em seguida, "desenrolar" isso em um vetor de 1 por 8760. O tempo corresponderia à posição dentro desse vetor e o valor nessa posição é o valor naquele momento.
fonte
Eu sugeriria a criação de vários recursos de entrada da série temporal usando relacionamentos que você conhece (ou acredita) que já existem nos dados. Por exemplo, você declara que a saída de destino variará:
Então, por que não criar um conjunto de recursos que descreva cada um desses 'ciclos'? Isso pode ajudar a provocar variações micro e macro, em vez de um único recurso que descreve tudo.
Por exemplo...
Se você tem uma tendência pela qual algo de interesse ocorre por volta do meio-dia todos os dias, crie um recurso de 1 a que descreva as horas do dia. Agora a rede aprenderá a disparar por volta das 12. Compare com o caso em que você tem esses mesmos dados codificados como horas em uma semana . Agora a rede precisa tentar aprender a acionar que é significativamente mais complexo.1..168 12 , 36 , 60 ...1..24 1..168 12,36,60...
fonte