Salah satu cabang dari Articfiial Intelligence (AI) adalah Artificial Neural Network (ANN) atau Jaringan Syaraf Tiruan (JST). Kemudian salah satu metode dari ANN adalah Back Propagation. Metode ini merupakan multilayer inputan data dengan ukuran matrik m x n. Di Matlab sudah disediakan NNTools untuk ANN sebagai media prediksi data (training dan testing). Berikut adalah scribs atau sintaksis yang digunakan untuk prediksi data time series menggunakan Back Propagation.
Catatan:
- Arsitektur ini menggunakan 4 layer: layer input, layar hidden 1, layar hidden 2, dan layar output.
- Fungsi aktivasi: logsig, logsig, logsig, logsig
a1=str2double(get(handles.edit1,'String'));
a2=str2double(get(handles.edit2,'String'));
a3=str2double(get(handles.edit3,'String'));
a4=str2double(get(handles.edit4,'String'));
a5=str2double(get(handles.edit6,'String'));
a6=str2double(get(handles.edit7,'String'));
a7=str2double(get(handles.edit8,'String'));
a8=str2double(get(handles.edit9,'String'));
a9=get(handles.edit5,'String');
a=get(handles.uitable1,'Data');
[m,n]=size(a)
b=a(1,:);
for i=2:m
b=[b a(i,:)];
end
[r,s]=size(b)
set(handles.listbox1,'UserData',b);
set(handles.listbox1,'string',num2str(b));
%Menyusun Data
pola=b(1:n+1);
for i=2:(m-1).*n
pola=[pola;b(i:i+n)];
end
%Normalisasi Data
c=((0.8.*(pola-min(b)))./(max(b)-min(b)))+0.1;
%Data Pembelajaran
x=c(1:(m-1).*n,1:n);
%Target Data
t=c(:,n+1);
%Membangun jaringan syaraf feedforwd
net=newff(minmax(x'),[a1 a2 a3 a4],{'logsig' 'logsig' 'logsig' 'logsig'},a9)
%Set max epoch, goal, learning rate, show step
net.trainParam.epochs=a5;
net.trainParam.goal=a6;
%net.trainParam.max_perf_inc=1.04;
net.trainParam.lr=a7;
net.trainParam.lr_inc=1.05;
net.trainParam.lr_dec=0.7;
net.trainParam.mc=0.9;
net.trainParam.show=a8;
%melakukan peembelajaran
net=train(net,x',t')
%melihat bobot-bobot awal input,lapisan, dan bias
[k,l]=size(x);
W1=[net.IW{1,1} net.b{1,1}];
Z1=1./(1+exp(-([x ones(k,1)]*W1')));
W2=[net.LW{2,1} net.b{2,1}];
Z2=1./(1+exp(-([Z1 ones(k,1)]*W2')));
W3=[net.LW{3,2} net.b{3,1}];
Z3=1./(1+exp(-([Z2 ones(k,1)]*W3')));
W4=[net.LW{4,3} net.b{4,1}];
Z4=1./(1+exp(-([Z3 ones(k,1)]*W4'))) %Z4 merupakan data pembelajaran terhadap data aktual
%prediksi
for i=1:n
[p,q]=size(c)
y0=c(p,2:q);
y1=logsig([y0 1]*W1');
y2=logsig([y1 1]*W2');
y3=logsig([y2 1]*W3');
y4=logsig([y3 1]*W4');
Z4=[Z4;y4]; % data pembelajaran dan prediksi
c=[c;[y0 y4]];
end
Z4
%Normalisasi data Prediksi
H=((Z4-0.1).*(max(b)-min(b))./0.8)+min(b)
[u,v]=size(H)
b1=b';
[a4,b4]=size(b1)
%Data prediksi
P=H((((m-1).*n)+1):u,1)
%Evaluasi Jaringan
ME=sum((b1(n+1:(m.*n))-H(1:((m-1).*n)))./((m-1).*n));
MSE=sum(((b1(n+1:(m.*n))-H(1:((m-1).*n))).^2)./((m-1).*n));
MDA=sum((abs(b1(n+1:(m.*n))-H(1:((m-1).*n))))./((m-1).*n));
RMSE=sqrt(MSE);
PE=((b1(n+1:(m.*n))-H(1:((m-1).*n)))./b1(n+1:(m.*n)))*100
MPE=sum(PE./(m-1).*n);
MAPE=sum(abs(PE./((m-1).*n)));
set(handles.uitable2,'Data',P)
set(handles.edit10,'string',ME)
set(handles.edit11,'string',MSE)
set(handles.edit12,'string',MDA)
set(handles.edit13,'string',RMSE)
set(handles.edit14,'string',MPE)
set(handles.edit15,'string',MAPE)
figure(1)
title('Grafik Prediksi Curah Hujan')
plot([1:((m.*n))],b(1,1:(r.*s)),'-o')
hold on
plot([n+1:((m.*n)+n)],H(1:(u.*v),1),'-*r')
title('Forecasting Charts, Actual Data (o), Approach Data and Prediction (*)');
grid on;
Adapun desain yang bisa digunakan seperti gambar berikut:
Semoga bermanfaat.
No comments:
Write komentar