Pengkodean Tanggal / Waktu (data cyclic) untuk Neural Networks

12

Bagaimana cara menyandikan tanggal dan waktu acara untuk jaringan saraf?

Saya tidak memiliki rangkaian waktu terus menerus, tetapi beberapa peristiwa dengan tanggal dan waktu, dan saya menganalisis beberapa jenis minat. Ketertarikan ini berbeda antara pagi dan malam, dan berbeda antara hari kerja, dan antara musim panas dan musim dingin, dan sebelum Natal dan Paskah dan seterusnya. Dan acara itu sendiri memiliki distribusi non-seragam yang kuat dari waktu ke waktu (lebih banyak di siang hari daripada di malam hari, beberapa jenis lebih banyak selama seminggu, beberapa lagi di akhir pekan).

Saya mencoba menyandikannya sebagai Number of Week in year, sebagai Weekday 1-7 dan Hour of day. Tetapi bermain-main dengan autencoder yang jarang memberi saya kesan bahwa data saya tidak masuk akal untuk jaringan saraf, bahkan tidak bisa mereproduksi apa pun di dekat input bahkan dengan lapisan tersembunyi yang besar. Baik sebagai kategori 0-1 maupun sebagai nilai normal.

Tetapi mencari pengkodean waktu untuk jaringan saraf sebagian besar memberikan informasi tentang deret waktu, jadi saya agak tertutup oleh hutan tetapi mencari pohon.

Tentu saja saya bisa melihat data dan secara kasar mengategorikannya kurang lebih despotik. Tetapi konsep Deep Learning tampaknya menyapu semua ekstraksi fitur manual kerajinan tangan. Dan kategorisasi akan memasukkan lompatan besar dalam variabel input kontinu alami.

"Pengkodean alami" saya di otak saya lebih seperti keanggotaan fuzzy untuk beberapa kategori seperti "malam", "pagi", "hari kerja" dan seterusnya.

Untuk membuat semuanya lebih menarik, variabel dependen juga berisi data tanggal / waktu tersebut, tetapi itu adalah pertanyaan yang berbeda.

EDIT: Entah bagaimana terkait dengan jenis data siklik adalah beberapa pertanyaan terakhir, seperti

Tes statistik manakah yang masuk akal dengan set data hari ini?

flaschenpost
sumber

Jawaban:

7

Saya sedang mencari jawaban untuk masalah yang sama dan tersandung pada utas ini. Ide pengkodean sinusoidal dieksplorasi dalam posting blog ini:

Pengkodean fitur kontinu siklus - waktu 24 jam

Jawaban Ian sepenuhnya menjawab kebutuhan saya, jadi saya berpikir untuk mempostingnya di sini untuk memori mendatang.

João Paulo Figueira
sumber
Saya bertanya-tanya bagaimana ini dapat digunakan stackoverflow.com/questions/59653862/… - khususnya ketika waktu adalah fitur.
user4581
1

Anda bisa mencoba menggambarkan waktu sebagai matriks besar, yaitu 365 x 24, untuk merepresentasikan hari dalam setahun dan jam dalam sehari, dan kemudian "membuka gulungannya" ke dalam vektor 1 x 8760. Waktu kemudian akan sesuai dengan posisi dalam vektor ini dan nilai pada posisi ini adalah nilai pada waktu itu.

babelproofreader
sumber
2
Sudahkah Anda mencoba dan berhasil dengan pengkodean seperti itu? Saya akan terkejut jika Neural Net akan "mempelajari" posisi yang tepat dari minggu pagi dalam pengkodean ini. Tetapi yang mengejutkan, naif adalah salah satu kekuatan jaring saraf, jadi saya tidak akan mempertaruhkan Scotch saya terhadapnya. ;-)
flaschenpost
Ini bisa berguna jika Anda ingin mendeteksi peristiwa siklus pada jam yang sama dalam berbagai tahun, tetapi tampaknya bagi saya korelasi akan sangat lemah. Saya dapat melihat kemungkinan korelasi yang lebih tinggi antara jam yang sama setiap minggu, atau jam yang sama setiap hari, untuk sebagian besar data deret waktu.
thekingoftruth
1

Saya menyarankan untuk membuat beberapa fitur input dari deret waktu menggunakan hubungan yang Anda tahu (atau yakini) sudah ada dalam data. Misalnya, Anda menyatakan bahwa output target akan bervariasi:

antara pagi dan malam, dan berbeda antara hari kerja, dan antara musim panas dan musim dingin, ...

Jadi mengapa tidak membuat satu set fitur yang menggambarkan masing-masing 'siklus' ini. Ini dapat membantu mengurangi variasi mikro dan makro daripada fitur tunggal yang menjelaskan semuanya.

Sebagai contoh...

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

CatsLoveJazz
sumber
Ya, ini juga ide pertamaku. Tetapi konsep melingkar waktu (23:59 diikuti oleh 00:00) kemudian disembunyikan, dan satu hal lain yang menggangguku adalah lompatan di antara seluruh bilangan yang tampaknya - suatu peristiwa pada 09:55 sangat mirip dengan 10:05, tetapi di pagi hari 06:10 sangat berbeda dari 06:55. Saya bisa membayangkan untuk mencari pusat waktu (optik atau sejenisnya?) Dan kemudian mengukur dan memberikan jarak ke pusat-pusat itu. Jadi 04:30 adalah malam terdalam, sedangkan 05:30 lebih "pagi", tetapi sama sekali tidak seperti malam.
flaschenpost
1
Nah dalam hal ini Anda bisa mencoba encoding sebagai sinusoid atau cosinus, atau bahkan keduanya.
CatsLoveJazz