Saya memiliki sedikit pengetahuan otodidak yang bekerja dengan algoritma Machine Learning (jenis dasar Random Forest dan Linear Regression). Saya memutuskan untuk bercabang dan mulai belajar RNN dengan Keras. Ketika melihat sebagian besar contoh, yang biasanya melibatkan prediksi stok, saya belum dapat menemukan contoh dasar beberapa fitur yang diterapkan selain 1 kolom sebagai tanggal fitur dan yang lainnya sebagai output. Apakah ada hal mendasar utama yang saya lewatkan atau sesuatu?
Jika ada yang punya contoh, saya akan sangat menghargainya.
Terima kasih!
machine-learning
neural-network
keras
Rjay155
sumber
sumber
multiple features
sini , pertanyaan yang lebih spesifik tentang cara menggunakan RNN untuk prediksi deret waktu dengan fitur yang berisi data numerik dan data non-numerik?Jawaban:
Jaringan saraf berulang (RNN) dirancang untuk mempelajari data sekuens. Seperti yang Anda duga, mereka pasti dapat mengambil banyak fitur sebagai input! Keras 'RNNs mengambil input 2D ( T , F ) dari timesteps T dan fitur F (Saya mengabaikan dimensi batch di sini).
Namun, Anda tidak selalu membutuhkan atau menginginkan catatan waktu menengah, t = 1, 2 ... ( T - 1). Karena itu, Keras secara fleksibel mendukung kedua mode. Untuk mengeluarkan semua timesteps T , kirimkan
return_sequences=True
ke RNN Anda (misalnya,LSTM
atauGRU
) pada konstruksi. Jika Anda hanya ingin catatan waktu terakhir t = T , maka gunakanreturn_sequences=False
(ini adalah default jika Anda tidak meneruskanreturn_sequences
ke konstruktor).Di bawah ini adalah contoh dari kedua mode ini.
Contoh 1: Mempelajari urutannya
Berikut ini adalah contoh cepat melatih LSTM (tipe RNN) yang menjaga seluruh urutan. Dalam contoh ini, setiap titik data input memiliki 2 timesteps, masing-masing dengan 3 fitur; data output memiliki 2 timesteps (karena
return_sequences=True
), masing-masing dengan 4 titik data (karena itu adalah ukuran yang saya lewatkanLSTM
).Contoh 2: Mempelajari tanda waktu terakhir
Jika, di sisi lain, Anda ingin melatih LSTM yang hanya mengeluarkan stempel waktu terakhir dalam urutan, maka Anda perlu mengatur
return_sequences=False
(atau hanya menghapusnya dari konstruktor sepenuhnya, karenaFalse
ini adalah default). Dan kemudian data output Anda (data_y
dalam contoh di atas) perlu disusun ulang, karena Anda hanya perlu menyediakan catatan waktu terakhir. Jadi, dalam contoh kedua ini, setiap titik input data masih memiliki 2 waktu, masing-masing dengan 3 fitur. Data keluaran, bagaimanapun, hanyalah sebuah vektor tunggal untuk setiap titik data, karena kami telah meratakan semuanya menjadi satu timestep tunggal. Masing-masing vektor keluaran ini masih memiliki 4 fitur (karena itu adalah ukuran yang saya berikanLSTM
).sumber
data_x
hanya akan berisi titik data tunggal, dan titik data tersebut akan memiliki empat cap waktu, masing-masing dari 3 dimensi (dan juga, Anda harus menggabungkandata_y
dengan cara yang sama). Jumlah cap waktu yang Anda gunakan hanya tergantung pada apa yang Anda coba modelkan (dan berapa banyak cap waktu yang relevan untuk proses itu).