Tutorial : Analisis Regresi menggunakan Algoritma Backpropagation NN


Backpropagation merupakan salah satu algoritma dalam Artificial Neural Network. Untuk pendahuluan tentang apa itu Artificial Neural Network, dapat mengunjungi link berikut :
Tutorial : Pendahuluan tentang Jaringan Syaraf Tiruan (Artificial Neural Network / ANN)
Dalam artikel ini akan dibahas secara langsung tahapan melakukan Analisis Regresi menggunakan Algoritma Backpropagation Neural Network. Teknik ini merupakan teknik Non-Parameterik, jadi asusmi-asumsi parametrik tidak digunakan dalam analisis ini. Untuk definisi algoritma Backprogation dapat diperoleh dari buku-buku maupun sumber lain yang lebih mendetail membahas Artificial Neural Network.
Dalam artikel ini, ukuran kesalahan yang akan digunakan adalah Mean Absolute Percentage Error (MAPE)  dengan rumus sebagai berikut :
Sumber data yang digunakan dalam tutorial ini diperoleh dari klik disini atau link berikut :
Contoh Data Backpropagation Neural Network
atau dapat mengunjungi menu contoh data dalam website ini.

Data yang telah didownload adalah sebagai berikut:
dengan keterangan :
X1 : Harga penjualan lokal (dalam $1000)
X2 : Banyaknya kamar mandi
X3 : Luas tanah (per square feet)
X4 : Luas rumah (per square feet)
X5 : Banyaknya garasi
X6 : Banyaknya ruangan
X7 : Banyaknya kamar tidur
X8 : Usia Bangunan
X9 : Jenis konstruksi (1 = brick, 2 = brick/wood, 3 = aluminum/wood, 4 = wood)
X10 : Jenis Arsitektur (1 = two story, 2 = split level, 3 = ranch)
X11 : Banyaknya perapian
Y : Harga Jual Rumah

Berdasarkan keterangan di atas, tujuan dari analisis ini adalah untuk melihat apakah terdapat pengaruh dari ke-11 variabel independen terhadap variabel Y yaitu Harga Jual sebuah Rumah dengan model regresi sebagai beirkut :
Tutorial ini menggunakan MATLAB sebagai alat bantunya. Syntax code yang digunakan dapat dicopy dari kode berikut lalu dipaste kedalam M-File baru atau download dengan cara klik disini.

function backproregresi
clc;
data = dlmread('datareg.txt');
[n,p] = size(data);

y = data(:,1);
x1 = data(:,2);
x2 = data(:,3);
x3 = data(:,4);
x4 = data(:,5);
x5 = data(:,6);
x6 = data(:,7);
x7 = data(:,8);
x8 = data(:,9);
x9 = data(:,10);
x10 = data(:,11);
x11 = data(:,12);


p = transpose([x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11]);
t = transpose(y/100);

net = newff(p,t,1,{},'traingd');
net.divideFcn = '';
net.trainParam.show = 50;
net.trainParam.lr = 0.5;
net.trainParam.epochs = 150000;
net.trainParam.goal = 0.000001;
[net,tr] = train(net,p,t);
yhat = sim(net,p);

for i = 1:n
    mpe(i) = abs((((y(i)-(yhat(i)*100))/y(i))*100)/n);
end
mape = sum(mpe);

tampil = [transpose(y); (yhat*100); mpe];
fprintf('Hasil Analisis\n')
fprintf('--------------------\n');
fprintf('  Y     Yhat    APE\n');
fprintf('--------------------\n');
fprintf('%.2f | %.2f | %.2f\n', tampil );
fprintf('--------------------\n');
fprintf('\n');
fprintf('\n');
fprintf('MAPE\n')
fprintf('----\n');
fprintf('%.2f\n', mape );
fprintf('----\n');
end

Penjelasan:
Berikut hal-hal yang perlu dijelaskan dalam syntax code yang akan disiapkan:

1. Membaca Dataset
data = dlmread('datareg.txt');
[n,p] = size(data);
2. Mendefinisikan Variabel
y = data(:,1);
x1 = data(:,2);
x2 = data(:,3);
x3 = data(:,4);
x4 = data(:,5);
x5 = data(:,6);
x6 = data(:,7);
x7 = data(:,8);
x8 = data(:,9);
x9 = data(:,10);
x10 = data(:,11);
x11 = data(:,12);
3. Memodifikasi Dataset
p = transpose([x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11]);
t = transpose(y/100);
4. Perintah Backpropagation Neural Network
net = newff(p,t,1,{},'traingd');
net.divideFcn = '';
net.trainParam.show = 50;
net.trainParam.lr = 0.5;
net.trainParam.epochs = 150000;
net.trainParam.goal = 0.000001;
[net,tr] = train(net,p,t);
yhat = sim(net,p);
Pada perintah Backpropagation Neural Network, kode dengan warna merah hijau biru dapat diatur dan dirubah nilainya untuk menentukan kriteria yang paling meminimumkan error (trial error). Dalam artikel ini digunakan nilai Learning Rate (lr) = 0.5, Epoch atau iterasi = 150000 ulangan dan Goal atau toleransi kekonvergenan = 0.000001.

5. Menghitung Nilai MAPE
for i = 1:n
    mpe(i) = abs((((y(i)-(yhat(i)*100))/y(i))*100)/n);
end
mape = sum(mpe);
6. Menampilkan Output
tampil = [transpose(y); (yhat*100); mpe];
fprintf('Hasil Analisis\n')
fprintf('--------------------\n');
fprintf('  Y     Yhat    APE\n');
fprintf('--------------------\n');
fprintf('%.2f | %.2f | %.2f\n', tampil );
fprintf('--------------------\n');
fprintf('\n');
fprintf('\n');
fprintf('MAPE\n')
fprintf('----\n');
fprintf('%.2f\n', mape );
fprintf('----\n');
Jika masih terdapat penjabaran yang kurang jelas, dapat langsung menanyakan pada kolom komentar.

Dalam Tutorial Analisis Pengaruh menggunakan Algoritma Backpropagation Neural Network terdapat beberapa tahapan yang harus dipenuhi, berikut tahapan-tahapannya:

Download data yang sudah disiapkan dalam website ini atau klik disini

Download syntax code yang telah disediakan sebelumnya atau klik disini. Atau dapat dengan copy-paste ke dalam M-File baru syntax code yang telah dijabarkan sebelumnya.

Pindahkan data yang telah didownlaod ke dalam sebuah folder. Simpan atau pindahkan syntax code yang telah disiapkan ke dalam folder yang sama dengan data.

Kembali ke MATLAB, silahkan Run Syntax Code yang telah disiapkan.

Pada tahap akhir akan muncul hasil sebagai berikut:


Berdasarkan hasil yang diperoleh, dapat terlihat hasil Yhat atau nilai dugaan untuk Variabel Y (Harga Jual Rumah) dan juga nilai Absolute Percentage Error atau nilai kesalahan antara dugaan dengan nilai nyata dalam persentase. Pada bagian akhir terdapat nilai Mean Absolute Percentage Error sebesar 4.65%. Nilai yang cukup kecil.


Untuk memperoleh informasi regresi lainnya dapat dengan cara klik kotak Regression pada kotak dialog proses Neural Network berikut:

Kemudian akan muncul informasi sebagai berikut:
Berdasarkan output tersebut diperoleh nilai R = 0.98948 atau 98,948%. Nilai ini merupakan nilai R-Square yang bermakna bahwa kesebelas variabel X mempengaruhi variabel Y sebesar 98,948%. Sisanya sebesar 1,052% dipengaruhi oleh variabel lain yang tidak dijelaskan.

Nilai R-Square tersebut sangatlah besar dan baik. Untuk membuat analisis ini menjadi valid, silahkan bandingkan dengan cara Analisis Regresi pada Statistika Parametrik.

Demikian Tutorial : Analisis Regresi menggunakan Algoritma Backpropagation Neural Network. Jika ada pertanyaan dapat langsung mengunjungi kolom komentar.

5 Responses to "Tutorial : Analisis Regresi menggunakan Algoritma Backpropagation NN"

  1. mau tanya kak. saya juga lagi ngerjain backpropagation. tapi di command windownya muncul "Warning: Matrix is singular to working precision" apakah mempengaruhi perhitungan bpnn nya kak? soalnya kurva regressi saya jadi kacau n sangat tidak bagus. mohon pencerahannya

    ReplyDelete
  2. Selamat Siang Bapak, saya ingin bertanya terkait plot regresi pada artikel ''Tutorial : Analisis Regresi menggunakan Algoritma Backpropagation NN'' ..
    Pada artikel tersebut terdapat output plot figure yang menghasilkan nilai R.

    Saya ingin bertanya apakah ada hubungan atau keterikatan antara nilai MAPE dengan nilai R? Karena dalam percobaan saya, dimana saya mendapatkan nilai MAPE besar (kurang baik) maka nilai R nya saya mendapat nilai R = 0,98XXX dan juga nilai R = 1 yang artinya 98,xxx% dan 100% .. Sedangkan pada plot garis lurus (fit) berjauhan dengan garis putus - putus (Y=T) ..

    Bagaimana cara menganalisis hasil tersebut ya Bapak? Mohon penjelasannya .. Terimakasih

    ReplyDelete
    Replies
    1. jika garis fit menjauhi garis actual, seharusnya nilai R kecil, kira2 bisa dikirim screenshotnya

      Delete