Algoritma SVR Support Vector Regression

Algoritma SVR (Support Vector Regression) adalah salah satu algoritma yang digunakan untuk pengambilan keputusan. Contoh yang dibahas kali ini adalah menentukan hasil jual tipe sepeda motor baru berdasarkan kelompok data yang sudah ada.
Algoritma ini dapat dikatakan sebagai perbaikan dari Regresi Linier / Analisis Regresi. Jika regresi linier menghasilkan sebuah fungsi dengan hasil linier / garis lurus, maka algoritma ini dapat menghasilkan sebuah fungsi dengan hasil yang bergelombang mengikuti jalur data yang terbentuk, sehingga prediksi yang didapatkan menjadi lebih akurat dibandingkan dengan regresi linier.

Diasumsikan ada 4 tipe motor yang sudah diketahui datanya, yaitu Motor A,B,C,D
Masing-masing tipe motor memiliki kriteria, yaitu harga, jarak tempuh per liter, cc, dan memiliki hasil jual dalam unit
Diasumsikan data dari 4 tipe motor tersebut adalah sebagai berikut:

MotorHargaJarak tempuh per literccUnit TerjualMotor A10.000. Motor B12.000. Motor C11.000. Motor D14.000.00037.512512Contoh data awal adalah sebagai berikut:

contohData = [ ; … ; … ; … .5 125];
hasilContohData = [20; … ; … ; … ];
Selanjutnya ada 4 buah motor lagi, yaitu E,F,G,H, yang baru akan diluncurkan, sehingga tidak diketahui hasil jualnya
Maka tentukan data-data ini nantinya diperkirakan memiliki hasil jual berapa unit
Diasumsikan data awalnya adalah sebagai berikut:

MotorHargaJarak tempuh per literccMotor E13.000. Motor F12.000. Motor G10.500. Motor H13.500. Contoh data yang baru adalah sebagai berikut:

dataBaru = [ ; … ; … ; … ];
Sebelum masuk kedalam langkah-langkah pembahasan algoritma, ada beberapa konstanta atau parameter yang harus diketahui, yaitu:
* Tentukan parameter c yang digunakan dalam perhitungan
c adalah parameter untuk menentukan seberapa besar deviasi dari parameter epsilon yang masih dapat ditoleransi
Semakin besar nilai parameter ini, maka semakin besar nilai tolerasi yang diperbolehkan
Diasumsikan dalam kasus ini, nilai c adalah c = 100;
* Tentukan parameter epsilon yang digunakan dalam perhitungan
Parameter epsilon mengontrol lebar dari zona regresi yang digunakan dalam mempelajari data
Semakin besar nilai epsilon, maka estimasi regresi akan semakin datar (mendekati regresi linier)
Diasumsikan dalam kasus ini, nilai epsilon adalah 0. epsilon = 1e-06;
Langkah-langkah penggunaan algoritma ini adalah
* Lakukan proses pembelajaran data menggunakan metode SVR (Support Vector Regression)
Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini (poin 1 – 7)

objSVR = SVR(contohData,hasilContohData,c, epsilon);
Memasuki perhitungan pada fungsi SVR

1. Tentukan fungsi kernel yang digunakan
Diasumsikan dalam kasus ini akan digunakan fungsi kernel Spline, dengan rumus perhitungan seperti pada skrip dibawah ini

fungsiKernel = @(a,b) prod(arrayfun(@(x,y) 1 + x*y+x*y*min(x,y)-(x+y)/2*min(x,y)^2+1/3*min(x,y)^3,a.feature,b.feature)); . Lakukan perulangan pada setiap contoh data
Ambil semua kemungkinan pasangan data yang ada, termasuk pasangan dengan dirinya sendiri

for i=1:jumlahData
for j=1:jumlahData
xi(i,j).feature = contohData(i,:);
xj(i,j).feature = contohData(j,:);
end
end
3. Buat matriks Gram untuk digunakan sebagai contoh data yang akan dipelajari

M = arrayfun(fungsiKernel,xi,xj);
M = M + 1/c*eye(jumlahData);
4. Lakukan pembelajaran data menggunakan metode Quadratic Programming
Sebelum melakukan pembelajaran data, maka harus ditentukan dulu parameter yang digunakan dalam metode tersebut,
yaitu H, f, lb, ub, dan options

H = 0.5*[M zeros(jumlahData,3*jumlahData); zeros(3*jumlahData,4*jumlahData)];
f = [ -hasilContohData; epsilon*ones(jumlahData,1);zeros(jumlahData,1);zeros(jumlahData,1)];
lb = [-c*ones(jumlahData,1); zeros(jumlahData,1); zeros(2*jumlahData,1)];
ub = [ c*ones(jumlahData,1); 2*c*ones(jumlahData,1); c*ones(2*jumlahData,1)];
options = optimoptions(‘quadprog’,’Algorithm’,’interior-point-convex’,’Display’,’off’);
z = quadprog(H,f,[],[],[],[],lb,ub,[],options);
5. Hitung nilai alpha, yaitu beberapa data pertama yang diperoleh dari hasil pembelajaran sebelumnya

alpha = z(1:jumlahData);
6. Hitung nilai bias yang dilambangkan dengan b

for m=1:jumlahData
bias(m) = hasilContohData(m);
for n = 1:jumlahData
bias(m) = bias(m) – alpha(n) * M(m,n);
end
bias(m) = bias(m) – epsilon – alpha(m)/c;
end
b = mean(bias);
7. Simpan nilai alpha, bias, fungsi kernel, contoh data, dan fungsi untuk menghitung prediksi

svrobj.alpha = alpha;
svrobj.b = b;
svrobj.kernel = fungsiKernel;
svrobj.contohData = contohData;
svrobj.hitungPrediksi = @(x) cellfun(@(u) hitungNilaiOutput(u),num2cell(x,2));
* Gunakan fungsi ini untuk menghitung nilai output menggunakan data pembelajaran yang sudah ada

function f = hitungNilaiOutput(x)
f = 0; jumlahPrediksi = size(x,1);
for i=1:jumlahPrediksi sx(i).feature = x(i,:);
end jumlahData = size(contohData,1);
for i=1:jumlahData sy(i).feature = contohData(i,:);
end for i=1:jumlahData f = f + svrobj.alpha(i)*fungsiKernel(sx(1),sy(i));
end f = (f + b)/2;
end
8. Lakukan perhitungan hasil contoh data menggunakan hasil pembelajaran yang sudah ada

hasilPerhitunganContohData = objSVR.hitungPrediksi(contohData);
9. Hitung rata-rata selisih dari hasil contoh data yang asli dengan hasil contoh data menggunakan perhitungan tersebut

rata2delta = sum((hasilContohData – hasilPerhitunganContohData)) / size(hasilContohData,1);
10. Lakukan perhitungan prediksi pada data yang baru
Kemudian tambahkan nilai delta untuk mendapatkan jawaban akhir

hasilPerhitunganDataBaru = objSVR.hitungPrediksi(dataBaru) + rata2delta;
Hasil akhir adalah:
Algoritma SVR (Support Vector Regression)
Contoh: menentukan kelompok hasil jual tipe sepeda motor baru berdasarkan kelompok data yang sudah ada
Diasumsikan ada 4 tipe motor yang sudah diketahui datanya, yaitu Motor A,B,C,D
Masing-masing tipe motor memiliki kriteria, yaitu harga, jarak tempuh per liter, cc, dan memiliki hasil jual dalam unit
Diasumsikan data dari 4 tipe motor tersebut adalah sebagai berikut:
Motor , Harga , Jarak tempuh per liter, cc , hasil jual
Motor A, 10.000.000, , 110, 20
Motor B, 12.000.000, , 125, 9
Motor C, 11.000.000, , 150, 17
Motor D, 14.000.000, 37. , 125, 12
Selanjutnya ada 4 buah motor lagi, yaitu E,F,G,H, yang baru akan diluncurkan, sehingga tidak diketahui hasil jualnya
Maka tentukan data-data ini nantinya diperkirakan memiliki hasil jual berapa unit
Diasumsikan data awalnya adalah sebagai berikut:
Motor , Harga , Jarak tempuh per liter, cc
Motor E, 13.000.000, , 125
Motor G, 12.000.000, , 110
Motor F, 10.500.000, , 110
Motor H, 13.500.000, , Hasil Perhitungan dengan metode SVR (Support Vector Regression)
Motor , Harga , Jarak tempuh per liter, cc , prediksi hasil jual
Motor E, , , 125, 4
Motor F, , , 110, 10
Motor G, , , 110, 17
Motor H, , , 125, 16
Contoh modul / source code menggunakan Matlab dapat didownload disini:

Jika membutuhkan jasa kami dalam pembuatan program, keterangan selanjutnya dapat dilihat di Fasilitas dan Harga
Jika ada yang kurang paham dengan langkah-langkah algoritma diatas, silahkan berikan komentar Anda.
Selamat mencoba.