
Sinopsis
Contents
Melanjutkan pembahasan Support Vector Machine menggunakan function built in di Matlab yaitu fitsvm, tentu kalian tahu apakah kernel function nya bisa diubah? Modifikasi Kernel Function di SVM sangat memungkinkan walaupun function fitsvm di matlab secara default sudah mempunyai 3 jenis kernel yang bisa kalian gunakan yaitu linear, radial basis / gaussian, dan yang terakhir polynomial dengan rumus umum sebagai berikut
Bila kalian gunakan fitsvm tanpa menyebutkan kernel function maka secara default akan menggunakan kernel linear. Sebelumnya kalian harus tahu apa itu function bsxfun dan handle function. Kalian perhatikan variabel A berikut
A = 1 2 4 3 4 4 1 1 1
Handle function @minus untuk kegiatan operasi minus(A,mean(A)) akan menghasilkan berikut
>> minus(A,mean(A)) ans = -0.6667 -0.3333 1.0000 1.3333 1.6667 1.0000 -0.6667 -1.3333 -2.0000
Nah function untuk kegiatan operasi diatas di matlab menggunakan bsxfun(x) seperti kode berikut
A = [1 2 4; 3 4 4; 1 1 1]; C = bsxfun(@minus, A, mean(A))
hasilnya
C = -0.6667 -0.3333 1.0000 1.3333 1.6667 1.0000 -0.6667 -1.3333 -2.0000
Kalau kalian gunakan perintah C = bsxfun(@plus,A,B) artinya adalah A+B, misalkan untuk sesama variable A yaitu bsxfun(@plus,A,A) artinya A+A
ans = 2 4 8 6 8 8 2 2 2
Kalian bisa menggunakan beragam operasi aritmatika sesuai dengan tabel dibawah ini
Membuat Kernel Radial Basis Function dengan bsxfun
Nah untuk menulis persamaan RBF dengan bsxfun dengan rumus umum RBF yaitu
K = bsxfun(@plus, sum(x1.^2,2), sum(x2.^2,2).')- 2*(x1*x2') K = exp(-K ./ (2*sigma^2));
Anggap saja nilai Sigma = 1, mari kita coba dengan data berikut
x1 = [1;0;1;0] x2 = [1;1;0;0] sigma = 1 K = bsxfun(@plus, sum(x1.^2,2), sum(x2.^2,2).')- 2*(x1*x2'); K = exp(-K ./ (2*sigma^2))
hasil
x1 = 1 0 1 0 x2 = 1 1 0 0 sigma = 1 K = 1.0000 1.0000 0.6065 0.6065 0.6065 0.6065 1.0000 1.0000 1.0000 1.0000 0.6065 0.6065 0.6065 0.6065 1.0000 1.0000
Kernel Function Radial Basis Function /Gaussian
Sekarang kalian buat saja kode diatas menjadi sebuah function, misalkan kita beri nama myrbf.m
function K = myrbf(U, V) sigma = 1; K = bsxfun(@plus, sum(U.^2,2), sum(V.^2,2).') - 2*(U*V'); K = exp(-K ./ (2*sigma^2)); end
Dataset XOR
Dataset non linear yang akan kita gunakan XOR agar kalian lebih mudah pelajari, ok langsung saja kita coba SVM dengan modifikasi kernel function
clc;clear all;close all; x2=[1,0,1,0]; x1=[1,1,0,0]; y=[1,-1,-1,1]; disp('dataset') data = array2table(transpose([x1;x2;y]),'variablenames',{'x1','x2','y'}); disp(data); X = [data.x1,data.x2]; model2 = fitcsvm(X,transpose(y),'KernelFunction','myrbf'); hasil = predict(model2,X); hasil_akhir = array2table([data.y,hasil],'variablenames',{'target','prediksi'}); disp('Target dan Prediksi') disp(hasil_akhir);
hasil
dataset x1 x2 y __ __ __ 1 1 1 1 0 -1 0 1 -1 0 0 1 Target dan Prediksi target prediksi ______ ________ 1 1 -1 -1 -1 -1 1 1
Sip sesuai dengan hasil tepat sekali
Model Umum Kernel Function
Bagaimana dengan kernel function yang lainnya? Hal yang harus kalian ketahuai bahwa untuk modifikasi kernel function harus mengikuti model umum berikut ini
function [K] = myfunction(U,V) %your statement end
Kernel Function Linear
Misalkan untuk kernel function bersifat linear dengan persamaan umum
kita bisa ubah menjadi
Ubah menjadi kode function di matlab disimpan dengan mylinear.m
function [K] = mylinear(x1,x2) K = x1*x2'; end
Kernel Function Polynomial
Sedangkan untuk kernel function bersifat polynomial dengan persamaan umum
kita bisa ubah menjadi
Ubah menjadi kode function di matlab disimpan dengan mypolynomial.m
function [K]=mypolynomial(x1,x2) p = 1.5; K = (x1*x2'+1).^p end
Kernel function Sigmoid / Tangen
Sedangkan untuk kernel function bersifat sigmoid dengan persamaan umum
kita bisa ubah menjadi
Ubah menjadi kode function di matlab disimpan dengan mysigmoid.m
function K = mysigmoid(x1,x2) beta_0 = 1; beta_1 = -1; K = tanh(beta_0*x1*x2' + beta_1); end
Ada banyak sekali jenis kernel function kalian bisa ref: https://www.softscients.web.id/2019/05/kernel-function-to-machine-learning.html tapi kalian harus hati-hati penggunaanya karena kalau salah akan menampilkan error di pada saat memanggil perintah fitsvm() seperti berikut
Error using solve Kernel function returns kernel product of incorrect size.
Demikian pembahasan mengenai Modifikasi Kernel Function di SVM-Support Vector Machine yang bisa kalian pelajari dan gunakan untuk riset.