Bagaimana cara menyandikan tanggal sebagai input dalam jaringan saraf?

12

Saya menggunakan jaringan saraf untuk memprediksi deret waktu. Pertanyaan yang saya hadapi sekarang adalah bagaimana saya menyandikan tanggal / waktu / nomor seri. dari setiap input ditetapkan sebagai input ke jaringan saraf?

Haruskah saya menggunakan 1 dari pengkodean C (digunakan untuk kategori pengkodean) seperti dijelaskan di sini ?

Atau haruskah saya memberi makan waktu saja (dalam milidetik sejak 1-1-1970)?

Atau memberi makan waktu yang tidak perlu selama saya memberi makan sisa data secara kronologis?

Shayan RC
sumber
Saya tidak yakin mengapa Anda berpikir memberi makan waktu yang tidak perlu jika Anda menggunakan jaringan saraf untuk memprediksi deret waktu .
scaaahu
ada banyak cara untuk menyandikan tanggal / waktu. itu akan membantu untuk mengetahui sifat dari deret waktu. itu bukan sesuatu yang apriori untuk dikesampingkan, atau dikuasai.
vzn
@ vzn Saya mencoba memprediksi deret waktu keuangan secara umum. Jika itu bermanfaat.
Shayan RC

Jawaban:

17

Neural Networks bukanlah sihir. Jika Anda memperlakukan mereka seperti mereka dan hanya melemparkan data ke mereka tanpa berpikir Anda akan memiliki waktu yang sangat buruk.

Anda perlu berhenti dan bertanya pada diri sendiri, "Apakah milidetik sejak tahun 1970 benar-benar akan menjadi prediksi peristiwa yang saya minati?" Jawaban yang harus Anda jawab segera adalah tidak. Mengapa? Untuk setiap contoh yang benar-benar Anda pedulikan (peristiwa di masa depan, masa lalu sudah terjadi) variabel waktu akan mengambil nilai yang lebih besar dari nilai apa pun yang variabel waktu akan ambil dalam data pelatihan Anda. Variabel seperti itu sangat tidak mungkin membantu. Lebih buruk lagi kemungkinan besar menyebabkan overfitting (masalah serius untuk model non-linear yang kuat seperti jaringan saraf) jika Anda tidak hati-hati.

Sekarang yang mungkin masuk akal adalah variabel seperti minggu dalam setahun atau bulan yang dapat membantu Anda memodelkan efek musiman atau tahunan. Saya telah melakukan beberapa pekerjaan dalam prediksi penyakit pertanian di mana hari Julian akhirnya menjadi variabel yang sangat penting. Berdasarkan pengalaman ini, saya menduga Anda akan lebih baik menyandikan tipe variabel ini sebagai variabel kategori daripada ordinal, pengalaman Anda mungkin sangat. Perhatikan bahwa bulan atau minggu dalam setahun adalah peristiwa berulang yang cenderung dilihat berulang kali dalam data pelatihan Anda dan dimungkinkan untuk menjelaskan mengapa variabel semacam itu dapat memengaruhi hasil keuangan. Bandingkan ini dengan milidetik sejak tahun 1970 yang hanya merupakan nilai yang meningkat secara monoton.

Terakhir, dari pernyataan Anda, "Atau memberi makan waktu yang tidak perlu selama saya memberi makan sisa data secara kronologis?" sepertinya Anda mungkin tidak memiliki pemahaman yang baik tentang cara kerja jaringan saraf. Dengan jaringan neural feedforward standar urutan Anda memberi makan jaringan data Anda tidak akan berdampak pada prediksi. Pesanan dapat memengaruhi pelatihan jika Anda menggunakan penurunan gradien stokastik atau mini-batch, tetapi ini hanya sebuah artefak dari metode pelatihan iteratif (sebagai lawan batch). Jika Anda ingin memodelkan ketergantungan temporal dengan jaringan saraf Anda harus menggunakan sesuatu seperti jendela geser atau jaringan saraf berulang.

alto
sumber
2

Anda menyatakan dalam komentar Anda sedang mengerjakan prediksi deret waktu keuangan. apakah memasukkan waktu atau tidak dalam input agak tergantung pada domain. secara umum itu relevan jika Anda memiliki semacam komponen waktu "siklik" dalam data Anda. misalnya, mungkin ada beberapa efek mingguan di data Anda jika berjalan selama beberapa minggu, atau beberapa efek intraday jika rentangnya satu hari. maka jika Anda memiliki banyak siklus, sertakan input yang mencerminkan posisi dalam siklus, misalnya dari atau atau katakan .[ 0 , 1 ] s i n ( t )[1,1][0,1]sin(t)

jika Anda menemukan bahwa ada tren yang konsisten, misalnya meningkat atau menurun dari waktu ke waktu, katakanlah lebih tepat untuk mengekstraknya dari input sebelum mengumpankan input melalui apa yang disebut "detrending". dengan kata lain Anda mengurangi rumus untuk tren yang mendasarinya dan memprediksi tren plus perbedaan tetapi NN hanya berfokus pada perbedaan , bukan tren .f ( t ) d t = f t + g t g t f tf(t)f(t)dt=ft+gtgtft

vzn
sumber