Jaringan Syaraf Tiruan untuk Prediksi menggunakan Matlab


Jaringan syaraf tiruan merupakan algoritma klasifikasi yang meniru prinsip kerja dari jaringan syaraf manusia. Algoritma ini memetakan data masukan pada layer masukan menuju target pada layer keluaran melalui neuron-neuron pada layer tersembunyi.

Data masukan dirambatkan maju, dihubungkan oleh bobot-bobot masukan yang sebelumnya telah diinisialisasi secara acak menuju neuron pada layer tersembunyi

Pada layer tersembunyi, data masukan yang telah dihubungkan dengan bobot tersebut kemudian diproses menggunakan fungsi aktivasi. Selanjutnya data hasil olahan dari layer tersembunyi dihubungkan oleh bobot-bobot tersembunyi menuju neuron pada layer keluaran.

Hasil yang diperoleh kemudian dibandingkan dengan data target sehingga diperoleh tingkat kesalahan (error). Apabila tingkat kesalahan yang diperoleh lebih kecil daripada tingkat kesalahan yang sebelumnya telah ditetapkan (target error), maka proses perambatan akan berhenti. Namun apabila tingkat kesalahan masih lebih besar daripada tingkat kesalahan tetapan maka dilakukan proses perambatan balik dengan melakukan pembaharuan bobot.

Salah satu aplikasi dari algoritma jaringan syaraf tiruan adalah untuk kasus prediksi.

Berikut ini merupakan contoh aplikasi pemrograman matlab untuk memprediksi curah hujan menggunakan algoritma jaringan syaraf tiruan propagasi balik (backpropagation neural network).

Langkah-langkahnya yaitu:

1. Mempersiapkan data curah hujan time series untuk prediksi. Pada contoh ini digunakan data rata-rata curah hujan tiap bulan di kota Semarang pada tahun 2005 s.d 2007. Pada algoritma jaringan syaraf tiruan propagasi balik ini digunakan fungsi aktivasi sigmoid biner di mana fungsi ini bernilai antara 0 s.d 1. Namun fungsi sigmoid biner tersebut sejatinya tidak pernah mencapai angka 0 maupun 1. Oleh sebab itu, data curah hujan perlu dinormalisasi terlebih dahulu salah satu contohnya ke dalam range 0,1 s.d 0,9 menggunakan persamaan berikut ini:


di mana:
X’ = data hasil normalisasi
X = data asli/data awal
a = nilai maksimum data asli
b = nilai minimum data asli

Data curah hujan asli dan setelah dinormalisasi tampak pada gambar di bawah ini:

2. Pada contoh ini, penggunaan data masukan JST untuk prediksi adalah sebagai berikut:

Data latih menggunakan data curah hujan pada bulan ke-1 s.d bulan ke-24 (tahun 2005-2006) sedangkan data uji menggunakan data curah hujan pada bulan ke-13 s.d bulan ke-36 (tahun 2006-2007). Pola data masukan untuk proses pelatihan dan pengujian jaringan ditunjukkan pada gambar di bawah ini:

3. Setelah data latih dan data uji disiapkan dalam format xlsx (excel), dilakukan pemrograman untuk melakukan pelatihan jaringan. Arsitektur jaringan syaraf tiruan yang digunakan pada contoh ini adalah 12-10-1 yang artinya terdiri dari 12 nilai masukan (data curah hujan 12 bulan), 10 neuron pada hidden layer, dan satu nilai keluaran yaitu data curah hujan pada bulan berikutnya. Source code pelatihan jaringan untuk prediksi adalah:

clc;clear;close all;warning off;

% Proses membaca data latih dari excel
filename = 'Book1.xlsx';
sheet = 2;
xlRange = 'D6:P17';

Data = xlsread(filename, sheet, xlRange);
data_latih = Data(:,1:12);
target_latih = Data(:,13);
[m,n] = size(data_latih);

% Pembuatan JST
net = newff(data_latih,10,{'logsig','purelin'},'traingdx');

% Memberikan nilai untuk mempengaruhi proses pelatihan
net.performFcn = 'mse';
net.trainParam.goal = 0.001;
net.trainParam.show = 20;
net.trainParam.epochs = 1000;
net.trainParam.mc = 0.95;
net.trainParam.lr = 0.1;

% Proses training
[net_keluaran,tr,Y,E] = train(net,data_latih,target_latih);

% Hasil setelah pelatihan
bobot_hidden = net_keluaran.IW{1,1};
bobot_keluaran = net_keluaran.LW{2,1};
bias_hidden = net_keluaran.b{1,1};
bias_keluaran = net_keluaran.b{2,1};
jumlah_iterasi = tr.num_epochs;
nilai_keluaran = Y;
nilai_error = E;
error_MSE = (1/n)*sum(nilai_error.^2);

save net.mat net_keluaran

% Hasil prediksi
hasil_latih = sim(net_keluaran,data_latih);
max_data = 2590;
min_data = 0;
hasil_latih = ((hasil_latih-0.1)*(max_data-min_data)/0.8)+min_data;

% Performansi hasil prediksi
filename = 'Book1.xlsx';
sheet = 1;
xlRange = 'E7:P7';

target_latih_asli = xlsread(filename, sheet, xlRange);

figure,
plotregression(target_latih_asli,hasil_latih,'Regression')

figure,
plotperform(tr)

figure,
plot(hasil_latih,'bo-')
hold on
plot(target_latih_asli,'ro-')
hold off
grid on
title(strcat(['Grafik Keluaran JST vs Target dengan nilai MSE = ',...
num2str(error_MSE)]))
xlabel('Pola ke-')
ylabel('Curah Hujan')
legend('Keluaran JST','Target','Location','Best')

4. Sehingga menghasilkan tampilan proses pelatihan jaringan seperti pada gambar berikut:

Pada pelatihan ini error goal (MSE) sebesar 0,00099941 dicapai pada epoch yang ke-461 seperti ditunjukkan pada gambar di bawah ini:

Sedangkan koefisien korelasi R yang dihasilkan adalah sebesar 0,98886 seperti yang ditunjukkan pada gambar berikut:

Grafik perbandingan antara keluaran JST (prediksi curah hujan) dengan target (data curah hujan sebenarnya) adalah sebagai berikut:

Berdasarkan pada nilai koefisien korelasi dan nilai MSE (Mean Square Error) yang diperoleh pada proses pelatihan tersebut, dapat disimpulkan bahwa JST dapat memprediksi curah hujan dengan sangat baik.

5. Proses selanjutnya adalah pengujian jaringan. Source code untuk melakukan pengujian jaringan adalah sebagai berikut:

clc;clear;close all;

% load jaringan yang sudah dibuat pada proses pelatihan
load net.mat

% Proses membaca data uji dari excel
filename = 'Book1.xlsx';
sheet = 2;
xlRange = 'D24:P35';

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_keluaran,data_uji);
nilai_error = hasil_uji-target_uji;

max_data = 2590;
min_data = 0;
hasil_uji = ((hasil_uji-0.1)*(max_data-min_data)/0.8)+min_data;

% Performansi hasil prediksi
error_MSE = (1/n)*sum(nilai_error.^2);

filename = 'Book1.xlsx';
sheet = 1;
xlRange = 'E8:P8';

target_uji_asli = xlsread(filename, sheet, xlRange);

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('Curah Hujan')
legend('Keluaran JST','Target','Location','Best')

6. Sehingga pada proses pengujian jaringan tersebut dihasilkan koefisien korelasi sebesar 0,57017

Sedangkan nilai MSE yang diperoleh adalahย  0,062891

Nilai koefisien korelasi dan nilai MSE yang dihasilkan pada proses pengujian menunjukkan bahwa jaringan syaraf tiruan propagasi balik cukup baik untuk memprediksi curah hujan. Kedua nilai tersebut dapat ditingkatkan performansinya dengan cara memperbanyak data latih serta mengubah-ubah parameter yang mempengaruhi performansi jaringan seperti error goal, jumlah epoch, arsitektur jaringan, jenis fungsi aktivasi, dll.

File source code lengkap beserta data pada pemrograman di atas dapat diperoleh melalui halaman berikut ini: Source Code

Berikut ini merupakan materi mengenai jaringan syaraf tiruan dan aplikasinya untuk:
1. Prediksi jumlah penduduk
2. Klasifikasi pola bentuk suatu objek dalam citra digital
3. Definisi, konsep, dan aplikasi jaringan syaraf tiruan
4. Pengenalan pola logika AND
5. Identifikasi wajah manusia

Penjelasan detail mengenai prediksi menggunakan jaringan syaraf tiruan bisa dilihat pada video tutorial berikut ini:Save

Save

Save

Save

Posted on July 8, 2016, in Data mining, Pengenalan Matlab and tagged , , , , , , , , , , , , , , , , , , , . Bookmark the permalink. 228 Comments.

  1. net = newff(minmax(data_latih),[10 1],{‘logsig’,’purelin’},’traingdx’);

    mas, punya saya error dipembuatan JST, saya pakai matlab 2019b, kenapa ya mas ?

  2. Mas mau tanya mas, apakah ada source code matlab nya tntg klasifikasi menggunakan backpropagation yang output neuron nya ada 4 dgn kelas klasifikasi nya ada 10?

  3. maaf, saya mau tanya kalau saya mau buat jaringan arsitektur dengan lebih dari 1 lapisan tersembunyi bagaimana ya?

  4. Maaf, saya mau tanya itu untuk yg perintah “load bobot_awal”, itu gak bisa (error) karna belum ada file bobot awalnya.. kalau mau bikin file bobot awalnya bagaimana ya?

  5. Mas, ada daftar pustaka nya ngga ya? atau referensi nya, buat tugas mas hehehe

  6. Maaf PAk, saya baru belajar JST dan makai Matlab. Di Matlab saya error pada bagian

    data_latih = Data(:,1:12)’;
    target_latih = Data(:,13)’;

    Apa penyebabnya Pak?
    terima kasih sebelumnya Pak.

    • Source code lengkap bisa dibeli di tokopedia sehingga bisa langsung dirunning dan tidak terjadi error
      Source code bisa dikembangkan dan diimplementasikan pada kasus penelitian yang sedang dikerjakan

  7. Mutia Ayu Sabrina

    mohon maaf bertanya, ini menggunakan tools apa ya pak dalam implementasi source code nya? terimakasih

  8. Maaf Pak, saya ingin bertanya apakah ada hubungan atau keterikatan antara nilai MAPE dengan nilai R? Karena dalam percobaan saya, dimana saya mendapatkan nilai MAPE besar (kurang baik) maka nilai R nya saya mendapat nilai R = 0,98XXX dan juga nilai R = 1 .. Sedangkan pada plot garis lurus (fit) berjauhan dengan garis putus – putus (Y=T) ..

    Bagaimana cara menganalisis nya ya Pak? Terimakasih

    • Semakin kecil nilai MAPE (mendekati nol) maka hasil prediksi semakin baik (semakin banyak hasil prediksi yang benar)
      Sedangkan nilai R (koefisien korelasi) menunjukkan korelasi, semakin tinggi nilai (mendekati satu) maka hasil prediksi akan semakin berbanding lurus dengan data actual (bukan menyatakan kebenaran hasil prediksi)

  9. assalamu โ€˜alaikum mas. u running data latih ada yg error untuk save net_keluaran.mat net_keluaran dengan keterangan :
    Error using save
    Unable to write file net.mat: permission denied.

    Error in Pelatihan (line 38)
    save net.mat net_keluaran

    akhirnya berdampak running data uji juga ikut error dengan keterangan :
    Error using load
    Unable to read file โ€˜net.matโ€™. No such file or directory.

    Error in Pengujian (line 4)
    load net.mat

    Mohon petunjuknya mas, terima kasih.

  10. Veronica Maulin Astika

    Kak permisi mau tanya, untuk nilai MSE nya sendiri apakah ada kriteria atau standar nilai sebagai acuan? Mohon dibalas

  11. hasil training kayak mse sama nilai r gitu emang beda-beda ya kalo di run berkali-kali?
    misal run pertama msenya 0.123, run kedua bisa jadi 0.345 gitu, padahal inputan sama kode ga diubah

  12. kenapa ya saat di run, target keluaran JST dan target pada nilai MSE nya tidak muncul?

  13. maaf mas kira – kira ini kenapa ya erornya?
    Error in TaOptimasi (line 9)
    data_latih = Data(1,18);

  14. Yuli Nur Anisa

    izin bertanya mas, untuk prediksi menggunakan BPNN apakah data yang digunakan harus di klasifikasi atau tidak ya mas?
    untuk hidden layer itu cara menentukannya bagaimana ya mas? terimakasih

  15. Maaf mas mau bertanya, kalau saya punya data curah hujan selama 5 tahun. Bagaimana cara membagi menjadi data latih, data uji dan data prediksi ya mas? terimakasih

  16. code program yang menunjukkan backpropagation yang mana ya kak?

  1. Pingback: Pengertian Jaringan Syaraf Tiruan, Fuzzy Logic dan Algoritma Genetika – andre

  2. Pingback: Kecerdasan Komputasional – Judul Situs

Leave a reply to Snoopy Cancel reply