Wednesday, 10 July 2019

Part5# Scribs / Sintaksis Matlab Metode Back Propagation: Fungsi Aktivasi 'tansig', 'tansig', 'tansig', 'purelin'

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: 'tansig', 'tansig', 'tansig', 'tansig'
        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],{'tansig' 'tansig' 'tansig' 'purelin'},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(4)
        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;

No comments:
Write komentar

Syaharuddin. Theme images by MichaelJay. Powered by Blogger.

KOMENTAR ANDA