Prediksi Time Series dengan ntstool Matlab

Matlab memiliki fasilitas berbasis Graphic User Interface (GUI) untuk memprediksi data time series. Fasilitas Help yang tersedia di Matlab sepertinya terlalu rumit, terutama bagi pengguna baru. Seperti penerapan Matlab di bidang lainnya, anda harus memahami konsep dasar bidang yang akan diterapkan di Matlab karena seperti alat bantu (tools) lain pada umumnya, Matlab hanya berfungsi mempermudah proses pengolahan dan komputasi. Postingan sebelumnya sedikit banyak memberi gambaran bagaimana mengelola data time series.

a. Mempersiapkan Jaringan Syaraf Tiruan untuk Proyeksi

Buka jendela ntstool dengan mengetik ntstool di command window matlab.

Untuk mudahnya kita buat dengan data sederhana agar terlihat akurasinya dengan jelas. Misalnya data sebanyak sepuluh buah yang runtun membesar dari satu hingga sepuluh (jika diteruskan kira-kira 11, 12, 13, dst). Di sini data yang kita gunakan berstruktur cell sehingga menggunakan kurung kurawal di antaranya.

  • data={1 2 3 4 5 6 7 8 9 10};

Karena tidak ada intervention variable atau di Matlab disebut dengan istilah external (exogenous) maka kita memilih yang tengah.

Di sini variabel d berfungsi sebagai masukan terhadap nntool yang sudah dilatih untuk memprediksi keluaran. D sering disebut juga dengan jendela. Jika kita memberikan nilai 3 pada jendela (defaultnya 2) maka nntool akan memprediksi data ke-4 dan seterusnya. Untuk mudahnya kita ambil harga d=2 saja. Ambil data yang akan dilatih:

Defaultnya adalah data berbentuk sequence yang menggunakan fungsi con2seq terhadap data yang akan diliatih jika ingin menggunakan format Cell column. Klik next terus hingga bagian arsitektur nntool. Isi d dengan angka 3 yang artinya dua data akan digunakan sebagai masukan.

Lanjutkan dengan tekan tombol train yang bersimbol petir . Tunggu beberapa saat hingga Matlab berhasil melakukan proses pembelajaran (training). Selamat, Anda telah berhasil membuat jaringan syaraf tiruan (JST) untuk memprediksi. Tetapi sampai di sini kita baru sampai memprediksi data ke-3,4, …, 10 saja, dengan hasil akurasi dapat dilihat dengan cara menguji JST itu. Isi kolom target dengan data yang digunakan untuk learning.

Setelah menekan tombol Test Network, lanjutkan dengan menekan tombol Plot Response untuk mengetahui akurasi learning.

Grafik di atas bermaksud menguji kemampuan data ke-1 dan ke-2 dalam memprediksi data ke-3 hingga ke-10 (total ada delapan data yang diprediksi). Hasil pembelajaran lumayan bagus dimana prediksi dengan data sebenarnya tidak jauh berbeda. Jika kurang puas dapat anda ulangi proses pelatihannya dengan menekan tombol retrain. Jika sudah dirasa cukup akurat, lanjutkan dengan menekan next hingga dijumpai jendela Save Result. Jangan lupa menekan tombol ini supaya hasil training tersimpan di workspace.

Tekan tombol FINISH untuk mengakhiri proses learning. Berikutnya kita masuk ke bagian yang lebih rumit yakni memprediksi data di masa yang akan datang.

b. Proyeksi Data

Untuk memproyeksi satu data tambahan, yaitu data ke-11, Matlab menyediakan fungsi removedelay. Pada command window ketik fungsi itu untuk membuat satu network baru, misal beri nama “nets”.

  • nets=removedelay(net);
  • [xs,xis,ais,ts] = preparets(nets,{},{},data);
  • ys = nets(xs,xis,ais)

Perhatikan ada satu fungsi tambahan yang berfungsi mempersiapkan data untuk mensimulasikan JST baru yaitu preparets. Hal ini perlu karena JST untuk time series berbeda dengan JST untuk data biasa. Variabel yc akan memberikan hasil time series dengan satu data tambahan yang merupakan ramalan ke depan.

Perhatikan data baru hasil prediksi yaitu, 11.4630. Jika kita lihat deret di atas (secara logika sederhana), seharusnya hasil peramalan adalah 11.0000 tetapi walaupun demikian, dirasa sudah cukup akurat. Ys merupakan data prediksi date ke-3 hingga ke-11. Jika ingin diperoleh data totalnya dapat dengan menyipsikan data pertama dan kedua yang dijadikan sebagai variabel d (dua data pertama sebagai dasar prediksi, 1:2). Lanjut ke NARX dengan variabel exogenous.

  • ytotal=[data(:,1:2) ys];
  • plot(cell2mat(ytotal))

Iklan

9 thoughts on “Prediksi Time Series dengan ntstool Matlab

  1. Salam Pak Rahmadya.
    Saya pemula yang ingin belajar NN untuk time series prediction menggunakan Matlab. Saya mencoba mengikuti blog Anda dari awal post terkait time series prediction serta membeli buku Anda “Penerapan soft computing dengan Matlab”.
    Post ini sangat membantu krena berbasis ntsool, cocok untuk pemula seperti saya. Terima kasih sebelumnya.
    Saya ingin bertanya, menggapi kasus sederhana yang diangkat di artikel ini dimana menggunakan (data={1 2 3 4 5 6 7 8 9 10} ).
    Untuk mempermudah pertanyaan saya. Contoh kasus .
    Misal saya seorang penjual buah apel. Saya mempunyai data penjualan jumlah apel yaitu Minggu 1 sampai Minggu 10. Tiap minggu terdiri dari 6 hari, Senin sampai Sabtu (tidak ada hari minggu). contoh data
    Minggu 1 –> Senin = 34 buah, Selasa= 10, Rabu = 15 dst
    Minggu 2 –> Senin = 12 buah, Selasa = 54, Rabu = 9 dst
    .
    .
    Minggu 10–> Senin =21 buah, selesa = 21, Rabu, dst

    Saya ingin memprediksi di Minggu 11 ( jumlah penjualan apel hari Senin-Sabtu) berdasarkan data sebelumnya. Yang ingin saya tanyakan bagaimana pengolahan training data yg saya lakukan, Apakah Minggu 1-3 menjadi training data sedangkan Minggu 4 menjadi target, dilanjutkan Minggu 2- 4 training data, targetnya Minggu 5, dst sampai Minggu 7-9 training data dan minggu 10 menjadi target.

    Yang saya ingin tanyakan bagaimana saya mengatur pola pelatihan perminggu tersebut di matlab? apakah jumlah neuron yg digunakan imput = 6 (krn 6 hari), output 6 (krn 6 hari juga), sedangkan untuk hidden neuron perlu trial and error agar dapat akurasi yang baik? Apakah Pak Rahmadya bisa memberi penjelasan/gambaran/ artikel tambahan dengan contoh seperti kasus Apel tersebut ?

    saya juga telah membaca artikel Anda di bawah :
    https://rahmadya.com/2015/11/18/prediksi-dengan-jaringan-syaraf-tiruan-intervention-indicators/
    Berdasarkan link tersebut menggunakan Intervention Indicators,
    Saya rasa untuk kasus Apel apakah intervention indicators diperlukan? Sepertinya kasus penjualan apel lebih mirip dengan artikel kali ini? bagaimana menurut Pak Rahmadya?
    Terima kasih.

    • Kebetulan saya baru niat posting Nonliear Auto-Regression with eXogenous (NARX) dengan ntstool Matlab. Coba dengan data ini: sn1,sl1,rb1,km1,jm1,sb1,m1 dan interventionnya total mingguan: mg1,mg1,mg1,mg1,mg1,mg1,mg1 berikutnya tinggal ganti 1 dengan 2. Saya belum mencoba jika exogenous-nya seminggu sama semua (total). Dasar logikanya hasil senin yang akan datang dipengaruhi oleh prediksi total mingguan.

  2. […] Untuk mengujinya, pada command window, jika anda ketik sim(network1,A), anda harus menemukan jawaban= 1. sim(network1,B), jawabannya harus 5, begitu juga yang C, jawaban harus 10. Coba misalkan ada data baru D=[1; 1; 0], cenderung masuk kelas baik, cukup atau kurang? Ketik saja sim(network1,D). Jawabannya adalah 10, berarti dia masuk kelas “Baik”. Mudah bukan? Tinggal tugas Anda adalah membuat tampilan visualnya (GUI) agar pengguna mudah memakai program JST yang baru saja Anda hasilkan lewat console. (Note: untuk yang ingin mengetahui competitive network, lihat posting berikutnya). Siapa tahu ada yang ingin melihat penerapan JST di identifikasi pola, lihat di sini. Atau jika ada yang tertarik untuk menerapkan JST untuk peramalan, bisa lihat di sini. […]

  3. selamat siang pak, maaf mau tanya, apakah ada contoh source code peramalan data time series dengan menggunakan Jaringan Syaraf Tiruan dengan inisialisasi bobot Nguyen Widrow? Terimakasih

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s