Kamis, 03 Oktober 2019

Matlab - Belajar Tentang Support Vector Machine

Ada pertanyaan bagus yang ditujukan ke www.softscients.web.id yaitu pada link berikut
http://www.softscients.web.id/2018/01/classification-with-support-vector.html#more

Bagaimana cara mudah memahami Support Vector Machine?

Yup, sebelum membahas mengenai SVM, ada baiknya kamu baca link berikut
http://www.softscients.web.id/2019/05/matlab-simple-quadratic-programing.html
kita akan kembali ke pelajaran SMA mengenai persamaan garis lurus dengan model matematika seperti berikut



Dengan m disebut dengan gradient, persamaan berikut


Kamu harus paham mengenai teori aljabar linear yang merupakan dasar-dasar pelajaran matematika. 

Bila digambarkan dalam koordinat kartesius





Model Umum SVM

Kembali ke SVM yang secara umum persamaan/model SVM sederhana yaitu
Merupakan bidang/hyperplane yang bersifat linear.  Operator (w∙x) adalah dot product. Bila w=(w0,w1 ) dan x=(x,y), maka persamaan diatas, diubah menjadi

 

Maka



Jika a dan c di definisikan sebagai berikut



Maka  y = ax+c
Misalkan sebuah data ditampilkan sebagai berikut



Jika suatu hyperplane mempunyai nilai  w=(0.4,1.0)  dan  b= -9. Sehingga didapatkan w0=0.4 dan w1=1.0 yang akan kita masukan kedalam persamaan SVM berikut


Maka


Sehingga


Atau


Sehingga


Bila di overlay dengan gambar diatas, akan menghasilkan



Sehingga persamaan SVM umum yaitu untuk mencari nilai w dan b. Kita akan kembali membahas mengenai link berikut
http://www.softscients.web.id/2019/05/matlab-simple-quadratic-programing.html
merupakan Quadratic Programming untuk menyelesaikan persamaan dari model matematika




Mending anda pelajari link diatas, bagaimana mengubah persamaan berikut

 


Agar memenuhi QP (Quadratic Programming), saya akan berikan contoh menggunakan Matlab sesuai dengan contoh data sebelumnya, kamu belajar sendiri saja cara mengubah ke QP.



 kode:
dataset = [   1,3;2,5;2,7;4,4;4,6;7,5;8,3
        4,8;4,10;,7,10;8,7;9,6;,9,7;10,10
    ];
target = [-1 -1 -1 -1 -1 -1 -1  1 1 1 1 1 1 1];
%mengubah persamaan menjadi QP
n = size(dataset,2); %jumlah fitur
ell = size(dataset,1); %jumlah data
H = diag([ones(1,n) 0]);
f = zeros(1,n+1); 
A = -diag(y)*[ dataset ones(ell,1)];
c = -ones(ell,1);
 
z = quadprog(H,f,A,c);
w = z(1:n)
b = z(n+1)


hasil:
w =

    0.4444
    1.1111


b =

   -9.6667


Hasilnya sama, hanya sedikit perbedaan saja, Sedangkan untuk prediksi, menggunakan rumus


Kode:
prediksi = sign(dataset*w+b*ones(ell,1))

hasil:

    -1
    -1
    -1
    -1
    -1
    -1
    -1
     1
     1
     1
     1
     1
     1
     1


Perhatikan bahwa variabel target dan prediksi akan menghasilkan nilai yang sama. Baca link berikut tentang penerapan kernel, pada kasus non linear
http://www.softscients.web.id/2019/05/kernel-function-to-machine-learning.html
Jangan lupa kalau mau beli buku terbitan penulis ya, biar makin semangat menulis postingan di blog ini.


http://www.softscients.web.id/p/portofolio_2.html



Tidak ada komentar: