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 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:

Untitled
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:

data curah hujan

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

pola data masukan

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:
data latih dan data uji

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(minmax(data_latih),[10 1],{'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:

jst

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

mse

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

regressi

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

mse2

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

regressi2

Sedangkan nilai MSE yang diperoleh adalah  0,062891

mse3

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.

Source code algoritma jaringan syaraf tiruan propagasi balik untuk kasus prediksi dapat diunduh pada laman berikut: Source Code

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

Save

Save

Save

Save

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

  1. Mas Adi, dari koding JST di atas,yang menunjukkan bahwa proses di atas itu merupakan backpropagation dimana ya? taunya itu backprop dari mana ya mas?

  2. ok terima kasih mas atas pencerahnnya. Untuk fungsi lain dalam JST selain newff lihat pustakanya dimana ya mas?

  3. terimakasih buat penjelasannya,,, kalo boleh tanya untuk normalisasi data di excel rumusnya pa ya?

  4. terimakasih mas, saya mau coba download source codenya ko ga bisa ya? mohon bantuannya

    • sama sama mas kanjeng joe
      source code yang tdk bisa didownload yang nomor berapa mas?
      karena sdh saya coba dan bisa semua, kalau nanti tetap tdk bisa, nanti saya coba upload kembali

  5. mas adi, mau tanya lagi nih. itu prediksi hujan yang dijelaskan cuma punya 1 variabel dan itu curah hujan juga. kalau saya pake 4 variabel seperti suhu, kecepatan angin, kelembapan udara nanti data inputnya dimasukkin ke excel modelnya kaya apa ya mas? masih buram banget nih mas. makasih

  6. berarti olah data pengenalan sama prediksi sama ya mas? saya prediksi hujan tapi variabel yang saya pake ada lembaban, suhu sama kecepatan angin gitu mas. gimana ya?

    • artikel di atas adalah pengenalan pola data curah hujan time series untuk prediksi
      sedangkan pengenalan pola data curah hujan berdasarkan variabel-variabel yg mempengaruhinya termasuk juga dalam kategori prediksi namun bukan time series

  7. mas numpang tanya, terima kasih sebelumnya artikel nya sangat membantu.
    itu kan yang dijelaskan untuk pelatihan dan pengujian jst. untuk mendapatkan hasil prediksinya sendiri bagaimana mas ya ? tolong dibantu, masih baru soalnya

  8. mas kalau kode net.trainParam.mc = 0.95; itu menunjukkan apa ya?

  9. klo boleh tau, hasil prediksi nya yg mana?

  10. hasil prediksi untuk bulan berikut ?

    • misal bulan ini adalah bulan ke-n dan bulan depan adalah bulan ke n+1
      maka untuk memprediksi bulan ke n+1 digunakan data bulan n-11 s.d n

      data bulan ke-n+1 yg dihasilkan kemudian digunakan utk ikut memprediksi data bulan ke-n+2

      utk memprediksi data bulan ke-n+2 digunakan data bulan n-10 s.d n+1
      utk memprediksi data bulan ke-n+3 digunakan data bulan n-9 s.d n+2
      utk memprediksi data bulan ke-n+4 digunakan data bulan n-8 s.d n+3

      dst

    • Aprilly hontong

      Mas, boleh tolong share penambahan codingan untuk prediksi bulan selanjutnya?
      Soalnya saya lagi belajar matlab untuk tugas akhir..
      Terima kasih sblumnya.

  11. mas adi, kalau mau menentukan akurasi dari hasil prediksi itu pakai rumus apa ya?

    • akurasi hasil prediksi di antaranya dapat dihitung menggunakan parameter MSE (mean square error), R (koefisien korelasi), SSE (sum square error), dan MAPE (mean absolute percentage error)

  12. bro, itu coding untuk simulasi nya mana ya ?
    cuma ada untuk pelatihan sama pengujiannya pas saya download

  13. mas, kalau mau hitung mape di matlab rumusnya gimana ya? makasih sebelumnya

  14. mas mau tanya nih, untuk baris 8-10 nilai 1,12,13 itu maksudnya apa yaa ? terus untuk baris 27 Hasil setelah pelatihan angka 1,2 disetiap parameter backpropagationnya maksudnya apa ya mas ?? tolong pencerahanya..soalny saya coba dimatlab masi error..

  15. Mas adi, untuk memprediksi telur yang baik dan tidak itu, metode apa yang cocok ?
    Mohon pencerahan nya mas..
    Masih buta tentang Matlab..

  16. bisa menggunakan analisis warna dan tekstur

  17. apakah analisis warna dan tekstur, cocok untuk mendeteksi daging segar dan daging sudah tidak segar ?
    Maaf mas adi, bila banyak bertanya, masih awam sekali dan juga masih bingung data TA yang akan saya analisis, antara daging atau telur..
    Mohon pencerahan ny mas..
    Terima Kasih.

  18. identifikasi kualitas daging bisa dilakukan dengan analisis tekstur dan warna. Sebaiknya daging yang digunakan difokuskan pada satu jenis daging saja

  19. Mas adi, kalau analisis tekstur dan warna.
    Berarti Referensi yang cocok untuk menganalisa tekstur dan warna tersebut digunakan
    ‘Pengolahan Citra Digital untuk Mendeteksi Warna dan Bentuk Obyek ‘
    atau ada Pencerahan dari mas untuk menganalisis tekstur dan warna tersebut.
    Mohon bantuaannya mas.

  20. Terima kasih artikelnya mas. Kalo ada data missing di dalam pelatihan maupun pengujian, misalnya ada 10 sample untuk 10 tahun, ada tiga sample yang datanya dibawah 10 tahun. Apa prediksi masih bisa dilakukan? atau ada perlakuan khusus lain? makasih sebelumnya

  21. Assalamualaykum mas
    Sesuai jawaban mas di atas,
    misal bulan ini adalah bulan ke-n dan bulan depan adalah bulan ke n+1
    maka untuk memprediksi bulan ke n+1 digunakan data bulan n-11 s.d n

    data bulan ke-n+1 yg dihasilkan kemudian digunakan utk ikut memprediksi data bulan ke-n+2

    utk memprediksi data bulan ke-n+2 digunakan data bulan n-10 s.d n+1
    utk memprediksi data bulan ke-n+3 digunakan data bulan n-9 s.d n+2
    utk memprediksi data bulan ke-n+4 digunakan data bulan n-8 s.d n+3

    dst

    yang ingin saya tanyakan adalah, misal, kita ingin memprediksi bulan ke n+1, maka target apakah yang akan kita gunakan? sementara nilai bulan ke n+1 belum kita ketahui?
    atau algoritma ini bisa tetap digunakan walaupun tidak memiliki target?
    terima kasih sebelumnya mas

    • Waalaikumsalam Sauri
      Pemahaman & pertanyaan yg bagus
      Dalam sistem prediksi tersebut, terdiri dari 3 proses, yaitu pelatihan, pengujian, dan prediksi
      Dalam proses pelatihan, dilakukan prediksi thd data yg dilatihkan, pada umumnya akurasinya tinggi
      Dalam proses pengujian, dilakukan prediksi thd data yg tidak dilatihkan/data uji, meskipun data uji adalah data di luar data latih namun data uji adalah data yg diketahui targetnya sehingga dapat dilakukan validasi dan diperoleh nilai akurasi
      Sedangkan pada proses prediksi, prediksi dilakukan thd data yg tidak diketahui targetnya (masa yg akan datang). Karena tidak memiliki target, maka dalam proses ini tidak bisa divalidasi dan tidak memiliki nilai akurasi. Tetapi proses prediksi dapat dilakukan dg mengacu pada nilai akurasi proses pelatihan & pengujian yg sebelumnya telah dilakukan. Jika kedua nilai akurasi pada masing2 proses tsb tinggi, maka hasil pada proses prediksi dapat dipercaya

  22. Assalamualaikum, mas adi,

    itu kan sepenangkap saya, hanya ada source code, langkah, dan hasil untuk proses pelatihan dan proses pengujian, lalu yang proses prediksinya ada dimana mas? mohon pencerahannya mas

  23. mas adi, yang ini nggk ada GUI nya? Kalau ada mohon link nya mas.
    Terima kasih

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: