Anda di halaman 1dari 12

Jaringan Syaraf Tiruan untuk Prediksi

menggunakan Matlab
Jul 8

Posted by adi pamungkas

2 Votes

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:

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:
1 clc;clear;close all;warning off;
2
3 % Proses membaca data latih dari excel
filename = 'Book1.xlsx';
4 sheet = 2;
5 xlRange = 'D6:P17';
6
7 Data = xlsread(filename, sheet, xlRange);
8 data_latih = Data(:,1:12)';
target_latih = Data(:,13)';
9 [m,n] = size(data_latih);
10
11 % Pembuatan JST
12 net = newff(minmax(data_latih),[10 1],{'logsig','purelin'},'traingdx');
13
14 % Memberikan nilai untuk mempengaruhi proses pelatihan
15 net.performFcn = 'mse';
net.trainParam.goal = 0.001;
16 net.trainParam.show = 20;
17 net.trainParam.epochs = 1000;
18 net.trainParam.mc = 0.95;
19 net.trainParam.lr = 0.1;
20
21 %[net_keluaran,tr,Y,E]
Proses training
= train(net,data_latih,target_latih);
22
23 % Hasil setelah pelatihan
24 bobot_hidden = net_keluaran.IW{1,1};
25 bobot_keluaran = net_keluaran.LW{2,1};
26 bias_hidden = net_keluaran.b{1,1};
bias_keluaran = net_keluaran.b{2,1};
27 jumlah_iterasi = tr.num_epochs;
28 nilai_keluaran = Y;
29 nilai_error = E;
30 error_MSE = (1/n)*sum(nilai_error.^2);
31
32 save net.mat net_keluaran
33
% Hasil prediksi
34 hasil_latih = sim(net_keluaran,data_latih);
35 max_data = 2590;
36 min_data = 0;
37 hasil_latih = ((hasil_latih-0.1)*(max_data-min_data)/0.8)+min_data;
38
39 %filename
Performansi hasil prediksi
= 'Book1.xlsx';
40 sheet = 1;
41 xlRange = 'E7:P7';
42
43 target_latih_asli = xlsread(filename, sheet, xlRange);
44
45 figure,
plotregression(target_latih_asli,hasil_latih,'Regression')
46
47
48
49
50
51
52 figure,
53 plotperform(tr)
54
55 figure,
plot(hasil_latih,'bo-')
56 hold on
57 plot(target_latih_asli,'ro-')
58 hold off
59 grid on
title(strcat(['Grafik Keluaran JST vs Target dengan nilai MSE = ',...
60 num2str(error_MSE)]))
61 xlabel('Pola ke-')
62 ylabel('Curah Hujan')
63 legend('Keluaran JST','Target','Location','Best')
64
65
66
67
68

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:

1 clc;clear;close all;
2
3 %load
load jaringan yang sudah dibuat pada proses pelatihan
net.mat
4
5 % Proses membaca data uji dari excel
6 filename = 'Book1.xlsx';
7 sheet = 2;
8 xlRange = 'D24:P35';
9
Data = xlsread(filename, sheet, xlRange);
10 data_uji = Data(:,1:12)';
11 target_uji = Data(:,13)';
12
13
14
15 [m,n] = size(data_uji);
16
17 % Hasil prediksi
18 hasil_uji = sim(net_keluaran,data_uji);
nilai_error = hasil_uji-target_uji;
19
20 max_data = 2590;
21 min_data = 0;
22 hasil_uji = ((hasil_uji-0.1)*(max_data-min_data)/0.8)+min_data;
23
24 % Performansi hasil prediksi
error_MSE = (1/n)*sum(nilai_error.^2);
25
26 filename = 'Book1.xlsx';
27 sheet = 1;
28 xlRange = 'E8:P8';
29
30 target_uji_asli = xlsread(filename, sheet, xlRange);
31
32 figure,
plot(hasil_uji,'bo-')
33 hold on
34 plot(target_uji_asli,'ro-')
35 hold off
36 grid on
title(strcat(['Grafik Keluaran JST vs Target dengan nilai MSE = ',...
37 num2str(error_MSE)]))
38 xlabel('Pola ke-')
39 ylabel('Curah Hujan')
40 legend('Keluaran JST','Target','Location','Best')
41
42
43

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.

Anda mungkin juga menyukai