Jaringan syaraf tiruan (jst) sering juga dijadikan sarana untuk meramalan. Berbeda dengan fitting yang mengandalkan variabel-variabel input, peramalan hanya mengandalkan data berdasarkan deretan waktu (time series). Dan seperti time series lainnya, jumlah data sangat menentukan kualitas peramalannya, walaupun dua data bisa meramalkan data ketiga tetapi tentu saja kalah akurat dibanding meramalkan data ke 1001 dari 1000 data.
Misal saya memiliki data tiga tahun, kemudian saya susun menjadi bentuk seperti ini dimana matriks berisi dua baris dengan baris pertama tahun pertama dan baris kedua tahun kedua. Sementara tahun ketiga saya jadikan target pelatihan.
Dengan membuka toolbox JST (ketik nntool di command window) kita rakit JST untuk dilatih dengan target pelatihan tahun ketiga:
Masukan variabel-variabel masukan dan target di jendela nntool. Buat JST dengan jumlah neuron sesuai keinginan, lakukan training.
Begitu pula JST-nya, buat saja dengan mengklik tombol ‘new’ di jendela network designer. Atau bisa juga menggunakan fungsi di command window tanpa toolbox (fungsi newff).
Jika sudah, dobel klik pada network1 untuk melakukan proses training. Pilih lagi input dan target datanya, lakukan simulasi, dan tunggu sesaat hingga proses pelatihan selesai.
Hasilnya jangan lupa disimpan untuk memprediksi tahun keempat. Bagaimana memprediksi tahun keempat? Gunakan saja tahun kedua dan tahun ketiga sebagai input, maka JST akan memprediksi tahun keempat berdasar pelatihan sebelumnya.
Kemudian lakukan simulasi dengan fungsi sim dari Matlab. Gunakan network1 yang telah di ekspor dari proses pelatihan sebelumnya. Gunakan kode berikut di command window, maka prediksi tahun keempat selesai, akurasi tentu saja bisa diuji jika Anda punya data tahun keempat yang sesungguhnya.
Tentu saja dua data untuk meramalkan data ketiga kurang baik, seperti halnya anda memprediksi kurs dollar terhadap rupiah hanya dengan dua data, karena belum tentu rupiah terus melemah, bisa saja menguat jika data pelatihannya banyak. Tetapi yang namanya ramalan ya belum tentu benar kan?
Pak /Mas… gan mau tanya apakah hasil peramalan jst juga di pengaruhi bentuk data ??? kalau datanya jelek apakah nilai error juga tidak bagus??
kalo peramalan biasa (time series) hasilnya seperti interpolasi, tapi kalau datanya memiliki beberapa atribut yg menentukan, biasanya menggunakan jst regresion (nnr), yang saat ini sedang banyak diteliti support vector regression (svr). misal memprediksi kurs dollar kalau cuma data history berarti time series aja, tapi kalo ada variabel lain (saham, oil price, dll) ya pake nnr atau svr lebih akurat
begini mas/pak saya meramalkan suatu volume penjualan, dengan memperhatikan 4 variabel data seperti biaya distribus dsb, kemudian saat dibuat JSTnya di Matlab hasil regressionnya tidak mncapai 0,99 … sya sudah mencoba2 berbagai jumlah neuron, dan hiddennya , hasilnya rata2 pada nilai 0,95….. klo pake yg 0,95 bagaimana ???
Model peramalnnya hampir sama seperti ini http://skripsitip.staff.ub.ac.id/files/2014/08/Mahmud-Nasapi.pdf
waduh baru baca, 0,99 dan 0,95 itu apaan ya? kalo prediction time series banyak info di internet, misalnya ini: http://www.obitko.com/tutorials/neural-network-prediction/introduction.html
4 variabel data itu maksudnya intervention indicator? jangan terlalu banyak katanya sih variabel tersebut.
Selamat siang pak, saya mau nanya berarti apakah boleh data training tahun ke 2 untuk diulangi lagi jadi peramalan untuk tahun ke 4. Adakah buku yang membahas tentang forecasting menggunakan jst?
Pak saya adakah refrensi untuk peramalan menggunakan jst, bolehkah saya berkonsultasi dengan bapak untuk tugas akhir saya? Sent from Yahoo Mail on Android
ok, check dulu yang ini: https://rahmadya.com/2015/11/13/prediksi-dengan-jaringan-syaraf-tiruan-pada-matlab-latihan-awal/
yang jelas, bisa asal ada slot, maksudnya misalnya 2,3,4 meramal thn ke5 berarti 2 ga bisa lagi dipakai meramal tahun ke6, hanya bisa 3 dan 4 jadi 3,4,5 meramal tahun ke6. alasannya krn jst memprediksi berdasarkan saat training, yaitu jumlah variabel masukan. jst bisa memprediksi, tambahkan satu input tambahan yaitu intervention indicator, yaitu prediksi indicator itu di tahun yg akan diramal, misalnya proyeksi jlh penduduk hingga 30 thn ke depan dll. coba lihat: https://rahmadya.com/2015/11/13/prediksi-dengan-jaringan-syaraf-tiruan-pada-matlab-latihan-awal/ klo ga bisa juga kabarin
Berarti saya kan ada data penjualan 3 tahun terakhir dan ingin meramalkan tahun ke 4 jadi hanya times series. Kalo ikutin buku j.j. siang kan dibikin pola terus berjalan. 12 data pertama targetnya bulan 13. Terus2 sampai jadi matriks 12 x 12. Berarti target pelatihan tahun ke 3? Setelah di training lalu konsep testing nya itu bagaimana si pak? Terus fungsi aktivasi kalo saya pake logsig logsig ngefek ga ya pak?
Berarti target pelatihan tahun ke 3? betul sekali
Setelah di training lalu konsep testing nya itu bagaimana si pak? kalo cross k-fold validation dgn k=3, berarti 12/3=4 bulan. pertama jan-ags ditraining, test dengan sep-des, hitung akurasinya. gantian mei-des training, tes pake jan-april, terakhir ags-des dan jan-apr training, tes dengan mei-ags. kalo masih bingung: a,b,c. ab tes dgn c, bc tes dgn a, ca tes dgn b.
Terus fungsi aktivasi kalo saya pake logsig logsig ngefek ga ya pak? banyak laporan kalo pake sigmoid ga bisa menghasilkan > range waktu pelatihan, misal 1,2,3,4,5 kalo ditest yg ke 6 mentuk di 5 bahkan turun, kecuali ada variabel intervention sbg input juga. tetapi asal error hasil testing ga besar boleh aja.
jadi begini pak ini saya punya data penjualan 3 tahun, jadinya saya buat jadi bentuk begini
tahun 1=[0.443593626 0.1 0.243539076 0.9 0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822]
tahun 2=[0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847]
tahun ketiga=[0.203542569 0.272874841 0.270230539 0.258295174 0.307634594 0.172402169 0.380731684 0.119412431 0.485259385 0.39118431 0.473313218 0.1]
lalu saya membuat input data nya menjadi matrix 12 x 12 dengan makin maju terus
p=[0.443593626 0.1 0.243539076 0.9 0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822;
0.1 0.243539076 0.9 0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068;
0.243539076 0.9 0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658;
0.9 0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432;
0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956;
0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703;
0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584;
0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551;
0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505;
0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816;
0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506;
0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233]
setelah itu targetnya apakah tahun ke 2 atau tahun ke tiga?
tahun 2=[0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847]
lalu saya bentuk jaringannya
%membentuk jaringannya
net=newff(minmax(p),[9,1],{‘tansig’,’logsig’})
%menghitung bobot-bobot
bobotAkhir_bias_lapisan=net.b{2,1};
bobotAkhir_lapisan=net.LW{2,1};
bobotAkhir_input=net.IW{1,1};
bobotAkhir_bias_input=net.b{1,1};
%training parameter
net.trainParam.show=100;
net.trainParam.lr=1;
net.trainParam.epochs=5000;
net.trainParam.goal=1e-10;
%mentraining jst
net=train(net,p,t)
%simulasi
y=sim(net,p)
%testing dan forecasting
bn=sim(net,p2)
[m,bn,r]=postreg(bn,t)
saya masih agak kurang paham dengan konsep testing nya pak sebenernya.
kalo yang saya tangkap berarti saya tinggal membuat tahun ke dua dicampur tahun ke tiga yang saya buat di p saya?
iya, prinsipnya testing nggak dipake buat nguji. tapi klo yg buat nguji terlalu nyimpang, ya sebagus apapun hasil training ya tetap dianggap jelek, makanya diimbangi dengan mentraining yg buat testing, lalu diuji dengan yang tadi buat training. hasil errornya di rata2 tiap paket training-testing. 12×12 berarti kalo K=3, pecah jadi 3 matriks 4×12, dua buah matriks itu (8×12) di training dengan sisanya, trus gantian. adil kan?
Eh tunggu dulu, standardnya kan berbasis row. kebetulan 12×12 itu salah tetap jalan krn row dan col sama. targetnya udah bener, jangan lupa ditranspose. saya bagi dua kelompok p1 (baris 1-8) untuk train dan p2 (baris 9-12) untuk uji. krn sy msh belom jelas, tapi keliatannya sih 12×12 itu kolom 1 januari, kolom 2 feb, dst, iya kan? kalo iya, berarti harus diulang yg di atas. gunakan transpose, ini saya buat tiga kelompok, untuk set train-test pertama (kel1+kel2) diuji dengan kel3.
p1=transpose(p(1:8,:));
p2=transpose(p(9:12,:)); %data testing
t2=t(:,9:12); %target utk hitung error
net1=train(net,p1,t1) %training kelompok1
hasil=sim(net1,p2)
error=norm(t2-hasil) %error dgn jarak euclid
error2=[t2-hasil] %error dgn selisih
%atau perbandingkan sendiri
error3=[t2;hasil] %akurat sekali
coba set data berikutnya buat gabung kel2 dan kel 3 utk training, uji dengan kel1 (transpose(p(1:8,:))).
Ooh begitu pak terima kasih ya pak.
Tambahan lagi pak setelah begitu perlu di training lagi? Baik pak akan saya coba buat lagi berarti dia bacanya bukan per row ya pak?
Yang saya buat si kesamping jadi januari februari maret april mei juni juli agustus oktober november desember;
Februari maret april mei juni juli seterusnya ampe januari 2014
Pantes saja begitu saya mau ganti bentuk koq ga bisa di jalankan..
Set data tahun ke dua sama tahun ke tiga nya tetap buat bentuk seperti itu? 12 x 12 lalu saya tranpose lagi?
Januari 2014-desember2014:
Februari2014-januari 2015 begiti seterusnya?
Berarti Target nya yang di t tetep tahun ke dua pak?
t yang disini soalnya tahun 2..
%program Jaringan Syaraf Tiruan Pen B-1000 dibuat oleh Erickson 545120054
%input dan target
p=[0.443593626 0.1 0.243539076 0.9 0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822;
0.1 0.243539076 0.9 0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068;
0.243539076 0.9 0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658;
0.9 0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432;
0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432
0.311994956;
0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956
0.276433703;
0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703
0.871975584;
0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551;
0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505;
0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816;
0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816
0.213487506;
0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506
0.240775233]
p1=transpose(p(1:8,:));
p2=transpose(p(9:12,:)); %data testing
t=[0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233
0.256651847]
t2=t(:,9:12); %target utk hitung error
tahun23=
[0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847;
0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847 0.203542569;
0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847 0.203542569 0.272874841;
0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847 0.203542569 0.272874841 0.270230539;
0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847 0.203542569 0.272874841 0.270230539 0.258295174;
0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847 0.203542569 0.272874841 0.270230539 0.258295174 0.307634594;
0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847 0.203542569 0.272874841 0.270230539 0.258295174 0.307634594 0.172402169;
0.152115505 0.144050816 0.213487506 0.240775233 0.256651847 0.203542569 0.272874841 0.270230539 0.258295174 0.307634594 0.172402169 0.380731684;
0.144050816 0.213487506 0.240775233 0.256651847 0.203542569 0.272874841 0.270230539 0.258295174 0.307634594 0.172402169 0.380731684 0.119412431;
0.213487506 0.240775233 0.256651847 0.203542569 0.272874841 0.270230539 0.258295174 0.307634594 0.172402169 0.380731684 0.119412431 0.485259385;
0.240775233 0.256651847 0.203542569 0.272874841 0.270230539 0.258295174 0.307634594 0.172402169 0.380731684 0.119412431 0.485259385 0.39118431;
0.256651847 0.203542569 0.272874841 0.270230539 0.258295174 0.307634594 0.172402169 0.380731684 0.119412431 0.485259385 0.39118431 0.473313218;
q=[0.203542569 0.272874841 0.270230539 0.258295174 0.307634594 0.172402169 0.380731684 0.119412431 0.485259385 0.39118431 0.473313218 0.1]
%membentuk jaringannya
net=newff(minmax(p),[9,1],{‘tansig’,’logsig’})
%menghitung bobot-bobot
bobotAkhir_bias_lapisan=net.b{2,1};
bobotAkhir_lapisan=net.LW{2,1};
bobotAkhir_input=net.IW{1,1};
bobotAkhir_bias_input=net.b{1,1};
%training parameter
net.trainParam.show=100;
net.trainParam.lr=1;
net.trainParam.epochs=5000;
net.trainParam.goal=1e-10;
%mentraining jst
net1=train(net,p1,t1) %training kelompok1
%simulasi
y=sim(net1,p1)
%testing dan forecasting
hasil=sim(net1,p2)
error=norm(t2-hasil) %error dgn jarak euclid
error2=[t2-hasil] %error dgn selisih
%atau perbandingkan sendiri
error3=[t2;hasil] %akurat sekal
jadi seperti ini pak nanti di simulasi lagi pake tahun23?
ya, t udah bener kayaknya
Lalu pak saya mau nanya bukannya kalo di training lagi sama aja jadi berubah hasilnya kayak target ya pak? Jadi saya pikirnya langsung di testing masukin hasil tahun ke 2 dan 3 jadi hasil peramalan? Terima kasih banyak ya pak :))
testing kan untuk nguji akurasi model (komposisi JST beserta data), kalo udah ya training yg baru untuk prediksi tahun yg akan datang yg belum tau hasilnya tepat apa nggak
Hemm maap pak saya jadi agak ga konek Jadi kan saya udah bikin net1 nya tuh. Jadi nanti saya bakalan net=train(net1,tahun23,t3)Terus hasil peramalannya saya ambil yang mana pak? Maaf pak saya sulit paha. Sent from Yahoo Mail on Android
net=train(net1,tahun23,t3) sebaiknya net1 juga net1=train(net1,tahun23,t3). untuk peramalan berikutnya, geser satu=satu ke bulan yg mau diramal. tentu dengan input bulan yg telah diketahui (series) dengan jumlah sama dengan training (biasanya 12), kalau kurang atau lebih ya jst merespon error masukan.
Ooh begitu pak berarti nanti target t3 kan tahun ke 3. Lalu peramalan misal bulan januari tahun ke 4 berarti 12 data di tahun ke 3 januari-desember terus maju ya pak? Untuk bulan februari berarti dr februari-januari(hasil peramalan)
Pak saya mau minta nama lengkap dan gelar bapak boleh pak? Saya mau mau masukan ucapan terima kasih di tugas akhir saya. Hehe
best,
Rahmadya Trias Handayanto, ST, MKom
Computer Science & Inf. Management AIT Thailand
PhD Student
Satu lagi pak target ga perlu di transpose ya pak? Jadi 1 row banyak kolom?
ya, formatnya kan input variabel kolom 1 hasilnya target kolom ke 1, dst basis kolom (beda dengan ANFIS yg formatnya basis rows)
Selamat siang pak ini yang saya coba buat jadinya seperti ini:
%program Jaringan Syaraf Tiruan Pen B-1000 dibuat oleh Erickson 545120054
%input dan target
p=[0.443593626 0.1 0.243539076 0.9 0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822;
0.1 0.243539076 0.9 0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068;
0.243539076 0.9 0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658;
0.9 0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432;
0.480734834 0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956;
0.700588523 0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703;
0.178784644 0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584;
0.171136908 0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551;
0.335695736 0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505;
0.40613268 0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816;
0.849073423 0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506;
0.387248822 0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233] %data tahun 12
p1=transpose(p(1:8,:));
p2=transpose(p(9:12,:)); %data testing
t=[0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847] %tahun 2
t1=t(:,1:8); %target pertama
t2=t(:,9:12); %target utk hitung error
p3=[0.729809068 0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847;
0.117960658 0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847 0.203542569;
0.19891432 0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847 0.203542569 0.272874841;
0.311994956 0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847 0.203542569 0.272874841 0.270230539;
0.276433703 0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847 0.203542569 0.272874841 0.270230539 0.258295174;
0.871975584 0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847 0.203542569 0.272874841 0.270230539 0.258295174 0.307634594;
0.12833551 0.152115505 0.144050816 0.213487506 0.240775233 0.256651847 0.203542569 0.272874841 0.270230539 0.258295174 0.307634594 0.172402169;
0.152115505 0.144050816 0.213487506 0.240775233 0.256651847 0.203542569 0.272874841 0.270230539 0.258295174 0.307634594 0.172402169 0.380731684;
0.144050816 0.213487506 0.240775233 0.256651847 0.203542569 0.272874841 0.270230539 0.258295174 0.307634594 0.172402169 0.380731684 0.119412431;
0.213487506 0.240775233 0.256651847 0.203542569 0.272874841 0.270230539 0.258295174 0.307634594 0.172402169 0.380731684 0.119412431 0.485259385;
0.240775233 0.256651847 0.203542569 0.272874841 0.270230539 0.258295174 0.307634594 0.172402169 0.380731684 0.119412431 0.485259385 0.39118431;
0.256651847 0.203542569 0.272874841 0.270230539 0.258295174 0.307634594 0.172402169 0.380731684 0.119412431 0.485259385 0.39118431 0.473313218] %data tahun 2 dan tahun 3
p4=transpose(p3) %data tahun 2 dan 3
t3=[0.203542569 0.272874841 0.270230539 0.258295174 0.307634594 0.172402169 0.380731684 0.119412431 0.485259385 0.39118431 0.473313218 0.1] %target tahun 3
%membentuk jaringannya
net=newff(minmax(p),[9,1],{‘tansig’,’logsig’})
%menghitung bobot-bobot
bobotAkhir_bias_lapisan=net.b{2,1};
bobotAkhir_lapisan=net.LW{2,1};
bobotAkhir_input=net.IW{1,1};
bobotAkhir_bias_input=net.b{1,1};
%training parameter
net.trainParam.show=100;
net.trainParam.lr=1;
net.trainParam.epochs=5000;
net.trainParam.goal=1e-10;
%mentraining jst
net1=train(net,p1,t1) %training kelompok1
%simulasi
y=sim(net1,p1)
%testing dan forecasting
hasil=sim(net1,p2)
error=norm(t2-hasil) %error dgn jarak euclid
error2=[t2-hasil] %error dgn selisih
%atau perbandingkan sendiri
error3=[t2;hasil] %akurat sekal
%training untuk tahun 23
net1=train(net1,p4,t3)
c=sim(net1,p4)
%forecasting
d=sim(net1,t3)
tapi kalo begini hasil dari forecasting nya aneh pak 😦 masa bisa banyak yang sama..
maaf merepotkan ya pak..
kalo sempet, coba ganti fungsi transfernya dari tansig dan logsig menjadi purelin (net=newff(minmax(p),[9,1],{‘purelin’,’purelin’})), soalnya tansig dan logsig mentok di harga mendekati 1 sementara purelin bisa membesar berapa saja, terutama untuk peramalan yg membesar terus seperti populasi penduduk, dll
Terima kasih banyak ya pak. Ngmg2 untuk yang pelatihan kedua kali ga usah di testing lagi kan ya pak? Tetapi kebetulan ini permintaan produk memang make to order mau untuk intervalnya agak lebih jauh juga salah pak kayaknya. Hehe Jadinya setelah saya train test train forecast menurut bapak gmn?
Sent from Yahoo Mail on Android
ya, cross validation udah dicatat kan rata2 errornya. nah itu fungsinya meyakinkan kita bahwa network yg dibentuk cukup baik, kalo udah yakin latih lagi network itu dengan seluruh data (tidak dikelompokan) untuk proyeksi ke depan. saya barusan upload dengan variabel intervention. logsig – logsig cukup baik tapi agak kebingungan untuk yg decrease. https://rahmadya.com/2015/11/18/prediksi-dengan-jaringan-syaraf-tiruan-intervention-indicators/
Selamat malam pak.. saya mau tanya, kebetulan tugas akhir saya juga tentang peramalan hanya saya menggunakan data selama 2 tahun, mengikuti petunjuk dr buku J.J. Siang dengan pola data masukan 12 x 12 dan target masing-masing pola data masukan 1 data..
Dan saya hanya melakukan training dan melakukan beberapa train and error untuk menentukan jaringan terbaik dan melakukan peramalan dengan menggunakan output dari hasil training saja, tanpa melakukan uji atau testing dari jaringan terbaik tersebut. Apakah hal itu sudah cukup untuk membuat peramalan pak?
Jawaban sangat ditunggu pak, terima kasih banyak..
sisain beberapa data terakhir untuk testing, kalo nggak bagaimana tahu kalo jaringannya akurat apa nggak ..syukur2 bisa pake teknik cross validation.
oh begitu.. iya pak.. tapi untuk peramalan nya sehabis melakukan testing yang digunakan data output setelah testing bgitu pak?
salam.. saya sedang melakukan melakukan penelitian menggunakan anfis terkait peramalan. apakah fungsi sim yang ada diatas bisa juga digunakan pada peramalan anfis? lalu bagaimana cara mengimpor dan eksport nerwork yang terbentuk pada anfis? saya sudah membeli buku bapak tapi saya tidak menemukan jawabannya. mohon bantuannya secara lengkap. terima kasih. jawaban dari bapak bisa juga dikirim ke email saya ichwan_84@yahoo.com
permisi pak, saya pernah menulis tentang fungsi autocorrelation untuk penentuan pola data time series apakah musiman, tren, atau stationer, di artikel berikut: http://datacomlink.blogspot.com/2015/12/data-mining-identifikasi-pola-data-time.html yang ingin saya tanyakan, apakah ada teknik lain untuk mencari pola data time series selain fungsi autocorrelation ya pak? terima kasih
autocorrelation sepertinya masih dipakai, cuma implementasinya saja yg bergeser (neuron pada jst, rule pada anfis). dulunya statistik dan soft computing satu induk, tetapi soft computing fokus ke komputasi terhadap data yang kurang lengkap, ga jelas, dan sejenisnya yang dimotori oleh fuzzy karya zadeh. jst mulai ikut meramaikan pengolahan time series karena kemampuan mengelola data2 yg seperti itu. jika populasi meningkat, sementara jumlah perumahan cenderung tetap, jst bisa menggabungkan proyeksi populasi dengan perumahan yang jika tanpa populasi maka proyeksi perumahan tidak meningkat. bukan cuma jst, support vector machines sudah ikut nimbrung (SVR). Situs ini mungkin cukup jelas bagi saya, terutama penggunaan intervention indicator: http://www.obitko.com/tutorials/neural-network-prediction/introduction.html
selamat malam pak, saya mau tanya pak, saya membuat program peramalan, program tersebut jika dirunning melalui m-filenya berjalan dengan baik, namun jika dijalankannya melalui .fig dan dibuat .exe muncul command seperti ini :
??? Reference to non-existent field ‘edit4′.
Error in ==> forecasting>pushbutton1_Callback at 180
set(handles.edit4,’String’,’BAIK’);
Error in ==> gui_mainfcn at 96
feval(varargin{:});
Error in ==> forecasting at 42
gui_mainfcn(gui_State, varargin{:});
Error in ==>
guidemfile>@(hObject,eventdata)forecasting(‘pushbutton1_Callback’,hObject,eventdata,guidata(hObject))
??? Error while evaluating uicontrol Callback
kira2 saya salah dmnnya ya pak,
mohon bimbingannya pak
pak, saya mau tanya. apakah ada contoh source code dengan GUI matlab untuk peramalan tahun 2017,2018 data bulanan dengan menggunakan jaringan syaraf tiruan backpropagation?
Ya, kebetulan saya sedang mengerjakan itu.
Postingan tentang NARNET: https://rahmadya.com/2016/10/12/prediksi-time-series-dengan-ntstool-matlab/
Kalau yang ada data eksogen pake NARX: https://rahmadya.com/2016/10/15/nonlinear-aurotregressive-with-external-narx-dengan-gui-di-matlab/
Selamat siang pak, maaf pak saya mau tanya tentang source code untuk peramalan data. Jika saya punya data sebanyak 96, 72 data (2008-2013 data training) dan 24 data (2014-2015 testing). untuk source code data training dan testingnya , saya bikin seperti seperti ini pak.
% — Executes on button press in Learning.
function Learning_Callback(hObject, eventdata, handles)
% hObject handle to Learning (see GCBO)
% eventdata reserved – to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%input parameter
a1=str2num(get(handles.epoch,’string’));
a2=str2num(get(handles.alfa,’string’));
a3=str2num(get(handles.galat,’string’));
a4=str2num(get(handles.hidden,’string’));
%proses membaca data latih dari excel
filename = ‘tabel.xlsx’;
sheet = 2;
xlRange = ‘B3:N74′;
Data = xlsread(filename, sheet, xlRange);
P = Data(:,1:12)’;
T = Data(:,13)’;
[m,n] = size(P);
% Pembuatan JST
net = newff(minmax(P),[a4 1],{‘tansig’ ‘logsig’ ‘purelin’},’trainlm’);
% Memberikan nilai untuk mempengaruhi proses pelatihan
net=init(net);
net.performFcn = ‘mse’;
net.trainParam.epochs = a1;
net.trainParam.lr = a2;
net.trainParam.goal = a3;
net.trainParam.show = 50;
net.trainParam.mc = 0.95;
% Proses training
[net,tr,Y,E] = train(net,P,T);
% Hasil setelah pelatihan
bobot_input = net.IW{1,1};
bobot_layer = net.LW{2,1};
bias_input = net.b{1,1};
bias_layer = net.b{2,1};
jumlah_iterasi = tr.num_epochs;
nilai_keluaran = Y;
nilai_error = E;
error_MSE = (1/n)*sum(nilai_error.^2);
prediksi_normalisasi = (((max(T)-min(T))*(Y-0.1))/0.8)+min(T);
akurasi = (1-((abs(0.25506297-prediksi_normalisasi))/prediksi_normalisasi))*100;
save net net
% Hasil prediksi
hasil_latih = sim(net,P);
max_data = 239.4023;
min_data = -104.2;
hasil_latih = ((hasil_latih-0.1)*(max_data-min_data)/0.8)+min_data;
% Performansi hasil prediksi
filename = ‘tabel.xlsx’;
sheet = 1;
xlRange = ‘A107:BT107′;
T_asli = xlsread(filename, sheet, xlRange);
figure,
plotregression(T_asli,hasil_latih,’Regression’)
figure,
plotperform(tr)
figure,
plot(hasil_latih,’bo-‘)
hold on
plot(T_asli,’ro-‘)
hold off
grid on
title(strcat([‘Grafik Keluaran JST vs Target dengan nilai MSE = ‘,…
num2str(error_MSE)]))
xlabel(‘Pola ke-‘)
ylabel(‘Tingkat Pencemaran Udara’)
legend(‘Keluaran JST’,’Target’,’Location’,’Best’)
ar=(1/n)*sum(nilai_error.^2);
br =(((max(T)-min(T))*(Y-0.1))/0.8)+min(T);
cr =(1-((abs(0.25506297-prediksi_normalisasi))/prediksi_normalisasi))*100;
set(handles.edit8,’string’,[num2str(ar)])
set(handles.edit11,’string’,[num2str(cr),’ %’])
set(handles.uitable3,’Data’,br)
set(handles.uitable10,’Data’,hasil_latih)
% — Executes on button press in Testing.
function Testing_Callback(hObject, eventdata, handles)
% hObject handle to Testing (see GCBO)
% eventdata reserved – to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
data=getappdata(handles.figure1,’data’);
% load jaringan yang sudah dibuat pada proses pelatihan
load net.mat
% Proses membaca data uji dari excel
filename = ‘tabel.xlsx’;
sheet = 2;
xlRange = ‘B79:N90′;
Data = xlsread(filename, sheet, xlRange);
data_uji = Data(:,1:12)’;
target_uji = Data(:,13)’;
[m,n] = size(data_uji);
% Hasil prediksi
hasil_uji = sim(net,data_uji);
nilai_error_uji = hasil_uji-target_uji;
max_data = 239.4023;
min_data = -104.2;
hasil_uji = ((hasil_uji-0.1)*(max_data-min_data)/0.8)+min_data;
% Performansi hasil prediksi
error_MSE = (1/n)*sum(nilai_error_uji.^2);
filename = ‘tabel.xlsx’;
sheet = 1;
xlRange = ‘K65:V65′;
target_uji_asli = xlsread(filename, sheet, xlRange);
figure,
plotregression(target_uji_asli,hasil_uji,’Regression’)
figure,
plot(hasil_uji,’bo-‘)
hold on
plot(target_uji_asli,’ro-‘)
hold off
grid on
title(strcat([‘Grafik Keluaran JST vs Target dengan nilai MSE = ‘,…
num2str(error_MSE)]))
xlabel(‘Pola ke-‘)
ylabel(‘Tingkat Pencemaran’)
legend(‘Keluaran JST’,’Target’,’Location’,’Best’)
cr=(1/n)*sum(nilai_error_uji.^2);
set(handles.edit7,’string’,[num2str(cr)])
set(handles.uitable12,’Data’,hasil_uji)
Kemudian jika saya ingin meramalkan data untuk bulan januari dan februari 2016, gambaran source code peramalannya bagaimana nggih pak? terimakasih
jika saya mengacu pada postingan bapak, saya berfikir untuk peramalan bulan kedepan akan seperti ini
% — Executes on button press in Prediksi.
function Prediksi_Callback(hObject, eventdata, handles)
% hObject handle to Prediksi (see GCBO)
% eventdata reserved – to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Proses membaca data uji dari excel
load net.mat
filename = ‘tabel.xlsx’;
sheet = 1;
xlRange = ‘K65:V65’;
Data = xlsread(filename, sheet, xlRange);
Told=Data;
nets = removedelay(net);
result=[]
for i=1:10
[xs,xis,ais,ts] = preparets(nets,{},{},Data);
ys = nets(xs,xis,ais);
Data(1,end+1) = ys(1,end);
size(Data)
Data=Data(2:end)
result=[result;ys(1,end)]
end
result=cell2mat(result)
figure
t=cell2mat(Told)
plot([t transpose(result)])
tapi error seperti ini pak
Error in analisisdata>Prediksi_Callback (line 389)
nets = removedelay(net);
mohon koreksinya, yang salah dibagian mana 🙂
selamat siang pak, mau tanya perbedaan variasi jaringan traingd,traingda,traingdm,traingdx,trainlm apa ya pak? terimakasih 🙂
selamat pagi pak, jaringan syaraf tiruan ini bisa di android kan atau tidak pak, kalau bisa apa jenis pemograman nya pak? php, java atau c++??? mohon balasannya ya pak
semuanya bisa kayaknya kalo untuk simulate (sudah ditraining). kalo training java atau c++ yang butuh proses iterasi yang banyak.
Selamat siang Pak, saya mau tanay. kebetulan saya sedang menjalankan penelitian tentang ANN untuk permalan, namun saya masih terhitung sangat pemula. saya mempunyai data historis permintaan selama 40 periode. dari contoh-contoh yang saya pelajari, ada yang terbagi menjadi data input dan target. Kalo boleh bertanya, apa dasar penentuan data input dan target?
lalu untuk data saya yang berjumlah 40 periode dengan 1 variabel, bagaimana langkah-langkah awal dalam membentuk modelnya?
terima kasih
biasanya 20 input target 20. Atau dengan narnet, dikenal dengan window yaitu data prediksi baru digunakan untuk melatih NN untuk prediksi data berikutnya. Intinya: suatu data latih jadi target juga (kecuali data pertama).
Baik pak. lalu untuk data input yang harus dinormalisasi, bagaimana cara mengembalikan data seperti semula untuk melihat output dari peramalan?
Tinggal dibalik, yg kali jadi bagi dan seabliknya
Malam pak, untuk di matlab sendiri, jika set data saya ada 48 periode dan hanya 1 variabel, bagaimana saya bisa mencari peramalan untuk 12 periode kedepan? karena kalau saya jadikan matriks sepertinya tidak bisa pak
Terima Kasih
data sebelumnya dijadikan variabel, terus bergeser tiap kali prediksi satu periode
Malam pak boleh minta emailnya?
di menu “tentang saya” ada infonya
Mau tanya kalo untuk ann Bp prediksi harga komoditas tanaman pangan itu ada membutuhkan brp nilai hiden ya? Mengubah dari data harga ke bobot itu langsung apa d bikin matrik jika menggunakan c++?
saya menggunakan 10 neurons, 2 delay di: http://www.mdpi.com/2071-1050/9/2/221/htm tapi bebas aja sih, cari yg akurat ketika training. Yg penting kalo buat sendiri fungsi aktivasi output linear (membesar terus) jangan sigmoid
Maaf mau tanya pak,kalomengubah data berupa harga menjadi data normalisasi pake excel gmn ya pak? Ada rumusnya mungkin pak? Untuk Ann Bp. Terimakasih
Maaf mau tanya pak,kalomengubah data berupa harga menjadi data normalisasi pake excel gmn ya pak untuk Ann Bp ? Ada rumusnya mungkin pak?Terimakasih
alhamdulillah ada tutorial yang saya cari.. 🙂
saya dapat tugas nih pak.
pak misalnya saya punya data beban listrik selama 8 hari..
setiap satu hari ada 24 data (setiap jam).
kalo saya mau memprediksi data hari ke 8 itu klasifikasi datanya gimana ya pak?
data mana yang saya jadikan input dan mana yang jadi targetnya?
nantinya saya mau menilai akurasi peramalannya
training hari 1 – 6 utk prediksi 7 trus bandingkan dengan real yg 7. jika ok gunakan data 2 – 7 utk prediksi yg ke8
Langkah 1:
Berarti data 1-6 jadi input. Trus yang data 7 jadi target. Kemudian dibandingkan hasilnya dengan dengan data real 7 pak?
Terus
Langkah 2:
Kalo oke lanjut, data 2-7 jadi input. Trus data 8 jadi target. Kemudian dibandingkan akurasinya data real 8.
Begitu ya pak?.
Oh iya itu data 2-7 untuk prediksi 8.
data 7 nya hasil training langkah pertama, apa data real pak?
Terimakasih atas bimbingannya. Maaf pmula jadi banyak tanya hhaha
itu kan ibarat melatih hanya dengan satu data (1-6 utk 7). kalau punya data 1-9 bisa pake 3 data:
Langkah 1:
data 1-6 jadi input. Trus yang data 7 jadi target 1.
data 2-7 jadi input. Trus yang data 8 jadi target 2.
data 3-8 jadi input. Trus yang data 9 jadi target 3.
Langkah 2:
test dengan input 1-6, 2-7, 3-8, apakah hasilnya sama dgn target 1,2,3 ? Kalau akurat prediksi 10 dengan input data 4-9 ke 11 dgn 5-10 dst.
selamat sore pak,
kenapa data 1 dan 2 banyaknya tidak sama?
data 1 ada 7 dan data 2 ada 5?
dan data 3 juga berbeda, bisa tolong dijelaskan pak? saya masih mempelajari peralaman untuk kepentingan tugas akhir
terimakasih
data 1, 2, 3 yang mana ya? bisa disebutkan bedanya
mas mau nanya cara perhitungan manual nya pake metode support vector regression gimana ya?