Adakah yang punya contoh pendidikan singkat yang cepat bagaimana menggunakan jaringan saraf ( nnet
dalam R misalnya) untuk tujuan prediksi?
Berikut adalah contoh, dalam R, dari deret waktu
T <- seq(0,20,length=200)
Y <- 1 + 3*cos(4*T+2) +.2*T^2 + rnorm(200)
plot(T,Y,type="l")
Ini hanya sebuah contoh tetapi yang saya miliki adalah data musiman yang gelisah.
Sedang mencari hal yang sama dan menemukan pertanyaan ini. Karena saya belum menemukan contoh, saya memutuskan untuk membuatnya sendiri. Sadarilah, saya bukan ahli dalam jaring saraf atau peramalan :)
Untuk memodelkan time-series secara efektif dengan neural nets (nnets), saya percaya nnet properti yang penting harus dimiliki adalah semacam memori (melacak apa yang terjadi di masa lalu). Oleh karena itu, jaring umpan maju mungkin merupakan ide yang buruk. Salah satu keluarga dalam jaring yang secara efektif dapat mensimulasikan memori adalah keluarga dari jaringan saraf berulang dan salah satu jenis jaringan saraf berulang yang paling dikenal mungkin jaringan Elman (bersama-sama dengan jaring memori jangka pendek (LSTM) panjang saya akan katakan). Untuk menemukan lebih banyak tentang jaringan Elman, Anda dapat membaca makalah asli yang memperkenalkan konsep atau melalui Wikipedia . Singkatnya, mereka memiliki lapisan tambahan yang disebut konteks yang digunakan sebagai jenis memori. Gambar ( sumber ) berikut menggambarkan ide tersebut
Beruntung bagi kami, ada paket RSNNS di R yang mampu menyesuaikan jaring Elman. Paket ini dijelaskan secara rinci di sini .
Sekarang kita telah mempelajari dasar-dasarnya, mari kita lihat bagaimana kita dapat mengimplementasikan contoh dalam R dengan paket RSNNS.
Kode ini harus menghasilkan gambar berikut
Jadi yang kami lakukan dengan kode adalah sebagai berikut. Pertama, kami telah membuat contoh deret waktu (dari model ARIMA). Setelah itu kita memisahkan / mengiris contoh deret waktu menjadi input formulir (sw poin sebelumnya, titik berikutnya) untuk semua pasangan kecuali yang terakhir (dengan titik berikutnya sebagai titik terakhir dari contoh deret waktu). Parameter sw digunakan untuk mendefinisikan "jendela geser". Saya tidak akan berdebat di sini apa ukuran yang tepat untuk jendela geser tetapi hanya perhatikan bahwa karena jaringan Elman memiliki memori, jendela geser ukuran satu lebih dari pendekatan yang masuk akal (juga, lihat posting ini ).
Setelah persiapan selesai kita cukup membangun jaringan Elman dengan fungsi elman. Ada dua parameter yang harus Anda perhatikan; ukuran dan learningFuncParams. Parameter ukuran memberi Anda cara untuk menentukan ukuran jaringan (lapisan tersembunyi) dan cara Anda memilih parameter ini lebih merupakan seni daripada sains. Aturan praktis untuk learnFuncParams adalah tetap kecil jika layak (kekuatan pemrosesan Anda memungkinkan Anda tetap kecil / Anda punya cukup waktu untuk menunggu: D).
Dan voila, Anda memiliki jaringan saraf yang mampu memprediksi titik / nilai masa depan. Kekuatan prediktif dari pendekatan ini untuk contoh kita diilustrasikan pada gambar sebelumnya. Kurva merah menyajikan rangkaian waktu simulasi kami (tanpa titik terakhir) dan kurva hijau apa yang diperoleh dengan jaringan Elman yang sesuai. Titik merah menunjukkan titik terakhir (titik yang tidak digunakan selama proses pemasangan) dan titik hijau apa yang diprediksi oleh jaringan pas. Tidak buruk sama sekali :)
Ini adalah contoh tentang cara menggunakan RNN (jaringan Elman) dengan R untuk membuat prediksi / perkiraan. Beberapa mungkin berpendapat bahwa RNN bukan yang terbaik untuk masalah dan bahwa ada model nnet yang lebih baik untuk peramalan. Karena saya bukan ahli dalam mengajukan, saya akan menghindari membahas masalah ini.
Bacaan yang menarik jika Anda ingin menemukan lebih banyak tentang RNN adalah tinjauan kritis RNN dalam makalah pembelajaran urutan .
sumber