Как закодировать дату и время события для нейронной сети?
У меня нет непрерывных временных рядов, но есть некоторые события с датой и временем, и я анализирую какой-то интерес. Этот интерес различается по утрам и вечерам, а также по будням, летом и зимой, перед Рождеством, Пасхой и т. Д. И сами события имеют сильное неравномерное распределение во времени (больше днем, чем ночью, некоторые виды чаще в течение недели, некоторые больше в выходные дни).
Я пытался закодировать его как число недели в году, день недели 1-7 и час дня. Но игра с разреженным автоэнкодером создала у меня впечатление, что мои данные не имеют никакого смысла для нейронной сети, они не могут даже воспроизвести что-либо рядом со входом, даже с большим скрытым слоем. Ни в качестве категориальных 0-1, ни в качестве нормированных значений.
Но поиск кодирования времени для нейронной сети в основном дает информацию о временных рядах, поэтому я немного с завязанными глазами в лесу, но ищу дерево.
Конечно, я мог бы посмотреть на данные и грубо классифицировать их более или менее деспотично. Но концепция глубокого обучения, кажется, сметает все ручное извлечение функций вручную. И категоризация вставит большие скачки в естественно непрерывную входную переменную.
Мое "естественное кодирование" в моем мозгу больше похоже на нечеткое членство в некоторых категориях, таких как "ночь", "утро", "день недели" и так далее.
Чтобы сделать все это более интересным, переменная зависимость также содержит эти данные даты / времени, но это другой вопрос.
РЕДАКТИРОВАТЬ: Как-то связаны с циклическим видом данных, некоторые недавние вопросы, такие как
Какие статистические тесты являются обоснованными с этим набором данных времени суток?
источник
Вы можете попытаться представить время в виде большой матрицы, то есть 365 на 24, чтобы представить дни года и часы дня, а затем «развернуть» это в вектор 1 на 8760. Тогда время будет соответствовать позиции в этом векторе, а значение в этой позиции будет значением в это время.
источник
Я бы предложил создать несколько входных объектов из временного ряда, используя отношения, о которых вы знаете (или считаете), которые уже существуют в данных. Например, вы заявляете, что целевой результат будет отличаться:
Так почему бы не создать набор функций, который описывает каждый из этих «циклов». Это может помочь выявить как микро, так и макро вариации, а не одну особенность, которая описывает все.
Например...
Если у вас есть тенденция, при которой что-то интересное происходит около полудня каждый день, то создайте функцию из которая описывает часы в дне. Теперь сеть научится запускать около 12. Сравните это с тем случаем, когда эти же данные кодируются в виде часов в неделю . Теперь сеть должна попытаться научиться срабатывать на что значительно сложнее.1..168 12 , 36 , 60 ...1..24 1..168 12 , 36 , 60 ...
источник