Кодування дата / час (циклічні дані) для нейронних мереж


12

Як кодувати дату та час події для нейронної мережі?

У мене немає безперервного часового ряду, але деякі події з датою та часом, і я аналізую якусь цікавість. Цей інтерес відрізняється між ранком та вечором, і відрізняється між буднями, літом і зимою, перед Різдвом та Великоднем тощо. А самі події мають сильний нерівномірний розподіл у часі (більше вдень, ніж вночі, деякі види більше протягом тижня, деякі більше у вихідні).

Я спробував кодувати це як Кількість тижнів у році, як тиждень 1-7 та як година дня. Але граючи з розрідженим автокодером створило мені враження, що мої дані не мають сенсу для нейронної мережі, вона навіть не може відтворити нічого біля входу, навіть з великим прихованим шаром. Ні як категоріальні 0-1, ні як нормовані значення.

Але пошук кодування часу для нейронної мережі здебільшого дає інформацію про часові ряди, тому я трохи зав'язаний лісом, але шукаючи дерево.

Звичайно, я міг би переглянути дані і приблизно класифікувати їх більш-менш деспотично. Але концепція глибокого навчання, здається, змітає все ручне вилучення ручної функції. І категоризація вставила б великі стрибки в природно безперервну змінну вводу.

Моє "природне кодування" в моєму мозку більше схоже на нечітке членство до деяких категорій, таких як "ніч", "ранок", "будній день" тощо.

Щоб зробити цю справу цікавішою, також змінна залежна інформація містить дані про дату / час, але це вже інше питання.

EDIT: Якимсь чином пов'язаний з циклічним видом даних є деякі останні запитання, наприклад

Які статистичні тести обґрунтовані для набору даних цього часу доби?

Відповіді:


7

Я шукав відповідь на подібну проблему і натрапив на цю нитку. Ідея синусоїдальної кодування досліджена в цій публікації в блозі:

Кодування циклічних безперервних особливостей - 24 години

Відповідь Яна повністю відповідала моїм потребам, тому я подумав над тим, як розмістити його тут для подальшої пам’яті.


Цікаво, як це можна використовувати stackoverflow.com/questions/59653862/… - особливо коли час є функціями.
user4581

1

Ви можете спробувати представити час як велику матрицю, тобто 365 на 24, щоб представити дні року та години дня, а потім "розгорнути" це у вектор 1 на 8760. Тоді час відповідав би позиції в цьому векторі, а значення в цій позиції - це значення на той час.


2
Ви пробували та досягли успіху з таким кодуванням? Я був би здивований, якби Нейронна мережа "дізналася" точні положення недільного ранку в цьому кодуванні. Але здивувати наївного - це одна з сильних сторін нейронних сіток, тому я не став би проти свого скотча. ;-)
flaschenpost

Це може бути корисно, якщо ви хочете виявити події циклічно за одну і ту ж годину в різні роки, але мені здається, кореляція буде дуже слабкою. Я бачу більшу ймовірність кореляції між однією і тією ж годиною щотижня або однією і тією ж годиною щодня для більшості даних часових рядів.
thekingoftruth

1

Я б запропонував створити декілька вхідних функцій із часового ряду, використовуючи відносини, які ви знаєте (або вважаєте), що існують уже в даних. Наприклад, ви заявляєте, що цільовий вихід буде змінюватися:

між ранком і вечором, і відрізняється між буднями, літом і зимою, ...

То чому б не створити набір функцій, який описує кожен із цих «циклів». Це може допомогти дражнити як мікро-, так і макро варіації, а не окрему функцію, яка описує все.

Наприклад...

1..241..16812,36,60 ...


Так, це була моя перша ідея. Але кругова концепція часу (23:59 супроводжується 00:00) потім приховується, і інша річ, яка мене турбує, - це стрибок між, здавалося б, цілими числами - подія о 09:55 дуже схожа на 10:05, але вранці 06:10 дуже відрізняється від 06:55. Я міг уявити собі пошук центрів того часу (оптику чи подібне?), А потім виміряти та дати відстань до цих центрів. Тож 04:30 ранку найглибша ніч, тоді як 05:30 - більш “ранкова”, але зовсім не така, як вечірня.
flaschenpost

1
Ну і в такому випадку ви можете спробувати кодування як синусоїда або косинус, або насправді і те, і інше.
CatsLoveJazz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.