DAFTAR ISI
Contoh Aplikasi JST:
Jaringan Syaraf Tiruan untuk Prediksi menggunakan Matlab
1. Tujuan [kembali]
Memahami contoh penerapan Jaringan Syaraf Tiruan dalam kehidupan sehari-hari.
2. Landasan Teori [kembali]
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).
3. Langkah-Langkah [kembali]
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
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 =
'JST_CurahHujan.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:
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.
Pada simulasi, saat program di-running terjadi error pada bagian
data_latih = Data(:,1:12)';
target_latih = Data(:,13)';
karenanya tidak dapat disimulasikan. Hasil dan grafik di atas didapat dari sumber referensi.
5. Link Download [kembali]
Klik untuk menuju link download
6. Referensi [kembali]
Pamungkas, Adi. 2016. "Jaringan Syaraf Tiruan untuk Prediksi Menggunakan Matlab", diakses melalui https://pemrogramanmatlab.com/2016/07/08/jaringan-syaraf-tiruan-untuk-prediksi-menggunakan-matlab/ pada Minggu, 2 Februari 2020 pukul 23.09 WIB
No comments:
Post a Comment