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

16 respons untuk ‘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.

    1. 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.

      1. Terima kasih masukannya Pak. Saya tunggu jg posting selanjutnya.
        Pak, apakah kira2 ada referensi buku/ebook/tutorial/pedoman yg mengulas dalam tentang ANN untuk time series prediction baik pakai tools matlab atau lainnya tidak ya pak?
        Terima kasih

  2. 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

  3. Salaam. Pak, saya mau tanya. Saya memiliki data dengan 3 input dan 1 target. Data ke-3 input tsb hanya berisi nilai 1,2, atau 3. Sdgkn 1 target tsb hanya berisi nilai 0 atau 1. Saya sudah mencoba dgn nntool, tapi output yang saya dapatkan sama semua yakni 0,5 dgn MSE 0,25. Apakah hasil tsb memungkinkan pak? Atau apakah kira2 saya melakukan kesalahan? Terima kasih pak.

  4. Assalamualaikum, permisi Pak Saya ingin bertanya seputar JST khususnya backpropagation, saya lg mengerjakan skripsi tentang prediksi pendapatan asli daerah menggunakan backpropagation. Untuk proses prediksi tersebut inputan yg digunakan dalam bentuk time series dan data yg digunakan jg berupa angka miliaran sehingga apabila hasil ouput dari proses pelatihan beda sedikit dengan target maka perbedaan tersebut akan terlihat lumayan jauh karena datanya angka miliaran. Jadi yang ingin saya tanyakan
    1. Prediksi yang menggunakan time series apakah cocok dengan backpropagation?
    2. Apakah harus ada tambahan metode lain yg bisa kombinasi dengan backprogation
    3. Apa yg harus diperhatikan dalam membuat program time series dengan backpropagation?
    4.rumus normalisasi dan denormalisasi yg cocok apa?
    Mohon bantuannya pak dan terimakasih.

    1. Salam.
      1. Prediksi yang menggunakan time series apakah cocok dengan backpropagation? YA
      2. Apakah harus ada tambahan metode lain yg bisa kombinasi dengan backprogation? YA, External Input/Exogenous Variable
      3. Apa yg harus diperhatikan dalam membuat program time series dengan backpropagation? Kalau di Matlab NARXNET (search aja google infonya). Jika ingin buat manual, perhatikan fungsi aktivasi output (harus linear, bukan sigmoid)
      4.rumus normalisasi dan denormalisasi yg cocok apa? JST rata-rata cocok dengan Normal Euclidean.

      Milyaran, asalkan normalisasinya tepat biasanya ga jauh errornya.

      1. Owh ya pak maksudnya external input itu apa?
        Apa memang harus atau pengecualian jika hasil tidak memuaskan.
        Untuk fungsi aktivasi di output kalau sigmoid tidak masalah kan pak?
        Untuk normalisasi misal ada 2 data berisi 3 input
        data1 {2 3 4}
        data2 {3 4 5}
        Dari 2 data tersebut pada saat mencari nilai max min-nya itu baris X kolom atau perkolom ya pak?

      2. permisi pak normalisasi data dengan normal euclidean itu maksudnya normalisasi max min ya pak?
        klw bukan rumusnya apa ya pak?

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 )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.