Support Vector Machine – SVM

By | January 15, 2021
4,430 Views

Sinopsis

Kali ini kalian akan belajar mengenai Machine Learning dengan metode Support Vector Machine. Kalian akan pelajari secara mudah sekali mengenai vector machine secara langkah demi langkah. Pembahasan ini didasari atas pertanyaan masuk ke email mengenai 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

    \[y=mx+b\]

Dengan m disebut dengan gradient, persamaan berikut

    \[y=2x+1\]

Kamu harus paham mengenai teori aljabar linear yang merupakan dasar-dasar pelajaran matematika. Bila digambarkan dalam koordinat kartesius

ref: http://www.wikipedia/linear_programming

Model Umum SVM

Kembali ke SVM yang secara umum persamaan/model SVM sederhana yaitu

    \[w \bullet x+b=0\]

Merupakan bidang/hyperplane yang bersifat linear.  Operator w \bullet x  adalah dot product. Bila w=(w0,w1 ) dan x=(x,y), maka persamaan diatas, diubah menjadi

    \[w_0x+w_1y+b=0\]

maka

    \[w_1y=-w_0x-b\]

    \[y=-\frac{w_0}{w_1}x-\frac{b}{w_1}\]

Jika a dan c di definisikan sebagai berikut

    \[a=-\frac{w_0}{w_1}\]

dan

    \[c=-\frac{b}{w_1}\]

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

    \[w \bullet x+b=0\]

Maka

    \[w_0x+w_1y+b=0\]

Sehingga

    \[0.4x+1y-9=0\]

Atau

    \[y=-\frac{w_0}{w_1} x - \frac{b}{w_1}\]

Sehingga

    \[y=-\frac{0.4}{1}x-\frac{-9}{1}\]

    \[y=-0.4x+9\]

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.

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(target)*[ 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

    \[h=sign(w \bullet x +b)\]

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.

Support Vector Machine dengan Matlab

Untuk SVM dengan Matlab, kalian bisa menggunakan function fitsvm

clc;clear all;close all;
%SVM dengan Matlab
X = [   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
    ];
y = [-1 -1 -1 -1 -1 -1 -1  1 1 1 1 1 1 1];
 
 
model = fitcsvm(X,y,'KernelFunction','linear','ClassNames',[-1,1]);

Untuk mendapatkan nilai w dan b yaitu

%bobot dan bias
w = model.Beta
b = model.Bias

hasil

w =
    0.4443
    1.1108
b =
   -9.6637

Nilainya hampir sama kan antara menggunakan Quadratic Programming dengan SVM bawaan Matlab untuk nilai w dan b, untuk melakukan prediksi bisa dengan menggunakan persamaan SVM seperti y=wx+b ataupun menggunakan function predict

%menggunakan persamaan umum SVM
rumussvm = @(x) sign(dot(w,x)+b);
%contoh dataset yang akan digunakan 
no_dataset = 10
data_sample = X(no_dataset,:)
prediksi_svm_umum = rumussvm(data_sample)
prediksi_svm_matlab = predict(model,data_sample)

Hasil

no_dataset =
    10
data_sample =
     7    10
prediksi_svm_umum =
     1
prediksi_svm_matlab =
     1

Support Vector Machine non Linear Dataset

Perhatikan dataset_xy berikut yang tercluster ditengah dan dibagian pinggir,

    X             Y         Kelas
__________    __________    _____

  -0.29911       0.57233     -1  
  -0.83648       -0.1436     -1  
 0.0080639    -0.0070249     -1  
  -0.34317       0.42961     -1  
   0.32155      -0.20824     -1  
  -0.21707      -0.21265     -1  
   0.42945      0.042832     -1  
   0.53101      -0.25217     -1  
  -0.22858      -0.58696     -1  
   0.73394     -0.012347     -1  
   0.30354       0.57189     -1  
   0.53904       0.62822     -1  
   0.41222      -0.18582     -1  
  -0.30733      -0.88525     -1  
   0.15146      0.066678     -1  
  0.028101      -0.81834     -1  
  0.015731       -0.6458     -1  
   0.66172      -0.34758     -1  
 -0.089699      -0.36379     -1  
   0.31616       0.31328     -1  
   0.88787       0.11148     -1  
   0.97069       0.16132     -1  
   0.55101      0.099047     -1  
  0.019807       0.83182     -1  
   0.59686      -0.72122     -1  
  -0.91782      -0.22849     -1  
  -0.27571      -0.09502     -1  
   0.10801      -0.16549     -1  
   0.29291       0.28988     -1  
  -0.17087       0.92138     -1  
  -0.26917      -0.16092     -1  
   0.63712      -0.12322     -1  
  -0.90764      -0.36617     -1  
   0.72518      0.085356     -1  
   0.26018      -0.79005     -1  
  0.059975        0.5585     -1  
   0.29095      -0.77579     -1  
  -0.69603       0.59175     -1  
  0.088499      -0.10226     -1  
 -0.015663      -0.86597     -1  
  -0.93297      -0.34413     -1  
   0.56606       0.65402     -1  
   0.49248       0.19469     -1  
   0.64247       0.61361     -1  
   0.30878      0.088767     -1  
   0.52232       0.41842     -1  
   0.14492       0.94212     -1  
  -0.12488      -0.52728     -1  
  -0.49913      -0.19659     -1  
   0.35947      0.028418     -1  
   0.12518      0.060811     -1  
   0.80656      -0.16821     -1  
  -0.41856      -0.19089     -1  
   0.14907       0.49328     -1  
 -0.010245       0.70105     -1  
-0.0089591      -0.23083     -1  
   0.25474        0.7136     -1  
  -0.33408       -0.1874     -1  
   0.75408      -0.14375     -1  
   0.47811      -0.68642     -1  
  0.020392       0.31925     -1  
  -0.64298      0.025183     -1  
  -0.60761      -0.57027     -1  
   0.30642      -0.56594     -1  
   0.12354       0.18626     -1  
   0.72707      0.085249     -1  
   0.73715         0.347     -1  
  -0.71492      0.061488     -1  
  -0.76295      -0.60208     -1  
  -0.69531      -0.32108     -1  
  -0.39038        0.8666     -1  
   0.36983     -0.026498     -1  
  -0.32732      -0.17927     -1  
  -0.65556       0.61452     -1  
  -0.59858      -0.19844     -1  
 -0.011919      -0.40646     -1  
  -0.46803       -0.8417     -1  
 -0.055201       0.58713     -1  
   0.79231       0.35078     -1  
   -0.5836       0.62081     -1  
  -0.64458      -0.68397     -1  
   0.19556       0.76513     -1  
  0.015003      -0.86644     -1  
   0.53981       0.23981     -1  
 -0.033649       0.51846     -1  
   0.31925      -0.89105     -1  
   0.22768        0.6134     -1  
  -0.62868      -0.75472     -1  
  -0.80475      -0.12575     -1  
   0.70211      -0.35881     -1  
 -0.028268       0.33756     -1  
   0.89192       0.39238     -1  
 -0.062847       -0.6678     -1  
   0.10563      -0.75315     -1  
   0.53466      -0.34969     -1  
   0.44305      -0.20182     -1  
   0.94681      0.083211     -1  
  0.074301       0.75376     -1  
 -0.039789     -0.035877     -1  
   0.74562      -0.24737     -1  
   0.74362       -1.8159      1  
    1.1551       -1.1557      1  
  -0.73048       -1.7925      1  
   -1.5497      -0.72324      1  
   0.78172        1.2486      1  
    -1.534       0.32391      1  
  -0.94421        1.3861      1  
   0.25419        1.6075      1  
   -1.6246       -1.0673      1  
  -0.73909        1.7916      1  
    1.2783      -0.74193      1  
    1.6628       -1.0606      1  
 -0.055157        1.2324      1  
   0.90061       0.75358      1  
   0.41579        1.1101      1  
   -1.5865     0.0041451      1  
  -0.13841       -1.0225      1  
   0.50909        1.8933      1  
  0.023053        1.8657      1  
   0.60954      -0.82068      1  
   -1.0675       0.62368      1  
   -1.0499      -0.94551      1  
   0.12091         1.174      1  
    1.4844        1.1068      1  
   -1.4192      -0.14187      1  
   -1.9344       0.27976      1  
   0.95139        1.3568      1  
   -1.3752       -1.3211      1  
   -1.8085      -0.51325      1  
   -1.0922       -1.5885      1  
   0.94895        1.2162      1  
  0.015594       -1.6244      1  
   0.32197        1.8144      1  
   -1.3527      -0.16529      1  
   0.34574       -1.5334      1  
    1.6561        0.2339      1  
  -0.46079       0.91338      1  
    1.1636       -1.1944      1  
   0.85034       -1.2562      1  
   -1.7962      -0.44247      1  
   0.93299        -1.037      1  
    1.8234      -0.59491      1  
    0.7636       -1.4665      1  
   0.75808      -0.98861      1  
    1.4923        1.0663      1  
  -0.97867       -1.3705      1  
  -0.31034       -1.0322      1  
    -1.157      -0.96013      1  
   0.53453       -1.6588      1  
    1.8924       0.41766      1  
    0.1269      -0.99252      1  
   -0.2271       -1.9694      1  
 -0.088874        1.4567      1  
 -0.087929        1.9783      1  
   -1.1305       -1.2394      1  
   -1.0524        1.5424      1  
   0.47627       -1.5803      1  
    -1.602       0.56376      1  
   0.27841       -1.3339      1  
    1.6585     -0.099409      1  
  -0.55977        1.7137      1  
    1.1775        1.4793      1  
    1.4706       -1.0501      1  
   -1.6994      -0.45412      1  
    1.8718       -0.2996      1  
  -0.91708       -1.0616      1  
    1.7343     -0.066364      1  
     -1.47      -0.43782      1  
   -1.4449      -0.24214      1  
   0.98507        1.1234      1  
  -0.91519        1.1691      1  
    1.3783       0.22913      1  
   0.90353        1.4316      1  
 -0.041484        -1.513      1  
    1.9442       0.37595      1  
   -1.1644        1.2952      1  
   0.81946      -0.96135      1  
  -0.53217       -1.4131      1  
  -0.51665       -1.3278      1  
   0.69272        1.7068      1  
   -1.7822       0.68106      1  
    -1.679       -0.9448      1  
     1.725      -0.11123      1  
   0.38428        1.2896      1  
  0.018881        1.3254      1  
  -0.14427        1.8825      1  
 0.0017411       -1.6072      1  
   -1.7786       0.49289      1  
    1.5441       0.57716      1  
   -1.7861     -0.095666      1  
   0.37857        1.5536      1  
   0.54723       -1.7359      1  
  -0.48208         1.573      1  
     1.525       0.26721      1  
   -1.1857      -0.78882      1  
   0.61029      -0.91224      1  
   -1.0712       0.99313      1  
-0.0009909        -1.113      1  
   -1.9822      -0.13899      1  
    -1.202      -0.31629      1

Kalau kalian paksakan untuk dicari menggunakan Quadratic Programming, maka akan menghasilkan Non Feasible

%mengubah persamaan menjadi QP
n = size(dataset_xy,2); %jumlah fitur
ell = size(dataset_xy,1); %jumlah data
H = diag([ones(1,n) 0]);
f = zeros(1,n+1); 
A = -diag(target)*[dataset_xy ones(ell,1)];
c = -ones(ell,1);
z = quadprog(H,f,A,c);
w = z(1:n)
b = z(n+1)

hasil

No feasible solution found.

quadprog stopped because it was unable to find a point that satisfies
the constraints within the default value of the constraint tolerance.

<stopping criteria details>
w =

   -0.1165
   -0.0014


b =

   5.2960e-04

Karena tidak akan mungkin dipisahkan dataset diatas hanya menggunakan persamaan garis lurus sumbu x dan y saja, oleh karena hal tersebut harus kalian tambahkan sumbu z dengan melibatkan radial basis function

%anonimous function rbf
kernel = @(a) exp(-1*sum(a.^2,2)); %cara kedua
Z = kernel(dataset_xy);

Sehingga datasetnya menjadi berikut terdapat sumbu Z (menjadi 3 sumbu)

    X             Y            Z        KELAS
__________    __________    ________    _____

  -0.29911       0.57233     0.65901     -1  
  -0.83648       -0.1436     0.48659     -1  
 0.0080639    -0.0070249     0.99989     -1  
  -0.34317       0.42961     0.73909     -1  
   0.32155      -0.20824      0.8635     -1  
  -0.21707      -0.21265      0.9118     -1  
   0.42945      0.042832     0.83006     -1  
   0.53101      -0.25217     0.70782     -1  
  -0.22858      -0.58696     0.67249     -1  
   0.73394     -0.012347     0.58344     -1  
   0.30354       0.57189     0.65758     -1  
   0.53904       0.62822     0.50398     -1  
   0.41222      -0.18582     0.81509     -1  
  -0.30733      -0.88525     0.41556     -1  
   0.15146      0.066678     0.97298     -1  
  0.028101      -0.81834     0.51147     -1  
  0.015731       -0.6458     0.65882     -1  
   0.66172      -0.34758     0.57196     -1  
 -0.089699      -0.36379     0.86902     -1  
   0.31616       0.31328     0.82029     -1  
   0.88787       0.11148     0.44899     -1  
   0.97069       0.16132     0.37974     -1  
   0.55101      0.099047     0.73094     -1  
  0.019807       0.83182     0.50041     -1  
   0.59686      -0.72122     0.41628     -1  
  -0.91782      -0.22849     0.40877     -1  
  -0.27571      -0.09502     0.91847     -1  
   0.10801      -0.16549      0.9617     -1  
   0.29291       0.28988     0.84381     -1  
  -0.17087       0.92138     0.41555     -1  
  -0.26917      -0.16092     0.90633     -1  
   0.63712      -0.12322     0.65632     -1  
  -0.90764      -0.36617      0.3837     -1  
   0.72518      0.085356     0.58674     -1  
   0.26018      -0.79005     0.50064     -1  
  0.059975        0.5585     0.72941     -1  
   0.29095      -0.77579     0.50333     -1  
  -0.69603       0.59175     0.43404     -1  
  0.088499      -0.10226     0.98188     -1  
 -0.015663      -0.86597      0.4723     -1  
  -0.93297      -0.34413       0.372     -1  
   0.56606       0.65402     0.47323     -1  
   0.49248       0.19469     0.75545     -1  
   0.64247       0.61361     0.45417     -1  
   0.30878      0.088767     0.90192     -1  
   0.52232       0.41842     0.63897     -1  
   0.14492       0.94212     0.40309     -1  
  -0.12488      -0.52728     0.74556     -1  
  -0.49913      -0.19659     0.74993     -1  
   0.35947      0.028418     0.87807     -1  
   0.12518      0.060811     0.98082     -1  
   0.80656      -0.16821     0.50721     -1  
  -0.41856      -0.19089     0.80927     -1  
   0.14907       0.49328     0.76679     -1  
 -0.010245       0.70105     0.61166     -1  
-0.0089591      -0.23083     0.94804     -1  
   0.25474        0.7136      0.5632     -1  
  -0.33408       -0.1874     0.86353     -1  
   0.75408      -0.14375     0.55471     -1  
   0.47811      -0.68642     0.49671     -1  
  0.020392       0.31925     0.90273     -1  
  -0.64298      0.025183     0.66096     -1  
  -0.60761      -0.57027     0.49937     -1  
   0.30642      -0.56594     0.66088     -1  
   0.12354       0.18626     0.95127     -1  
   0.72707      0.085249     0.58514     -1  
   0.73715         0.347     0.51489     -1  
  -0.71492      0.061488     0.59757     -1  
  -0.76295      -0.60208     0.38884     -1  
  -0.69531      -0.32108     0.55624     -1  
  -0.39038        0.8666     0.40519     -1  
   0.36983     -0.026498     0.87156     -1  
  -0.32732      -0.17927     0.86999     -1  
  -0.65556       0.61452     0.44602     -1  
  -0.59858      -0.19844     0.67188     -1  
 -0.011919      -0.40646     0.84759     -1  
  -0.46803       -0.8417     0.39554     -1  
 -0.055201       0.58713     0.70626     -1  
   0.79231       0.35078     0.47198     -1  
   -0.5836       0.62081     0.48384     -1  
  -0.64458      -0.68397     0.41341     -1  
   0.19556       0.76513     0.53597     -1  
  0.015003      -0.86644     0.47192     -1  
   0.53981       0.23981     0.70546     -1  
 -0.033649       0.51846     0.76343     -1  
   0.31925      -0.89105     0.40825     -1  
   0.22768        0.6134     0.65175     -1  
  -0.62868      -0.75472     0.38104     -1  
  -0.80475      -0.12575     0.51508     -1  
   0.70211      -0.35881     0.53703     -1  
 -0.028268       0.33756     0.89159     -1  
   0.89192       0.39238     0.38694     -1  
 -0.062847       -0.6678     0.63768     -1  
   0.10563      -0.75315      0.5608     -1  
   0.53466      -0.34969     0.66489     -1  
   0.44305      -0.20182     0.78897     -1  
   0.94681      0.083211      0.4052     -1  
  0.074301       0.75376     0.56345     -1  
 -0.039789     -0.035877     0.99713     -1  
   0.74562      -0.24737     0.53948     -1  
   0.74362       -1.8159    0.021268      1  
    1.1551       -1.1557    0.069255      1  
  -0.73048       -1.7925    0.023593      1  
   -1.5497      -0.72324    0.053681      1  
   0.78172        1.2486     0.11417      1  
    -1.534       0.32391    0.085608      1  
  -0.94421        1.3861    0.060029      1  
   0.25419        1.6075    0.070747      1  
   -1.6246       -1.0673    0.022856      1  
  -0.73909        1.7916    0.023372      1  
    1.2783      -0.74193     0.11252      1  
    1.6628       -1.0606     0.02045      1  
 -0.055157        1.2324      0.2183      1  
   0.90061       0.75358     0.25183      1  
   0.41579        1.1101     0.24531      1  
   -1.5865     0.0041451    0.080702      1  
  -0.13841       -1.0225     0.34487      1  
   0.50909        1.8933     0.02141      1  
  0.023053        1.8657    0.030766      1  
   0.60954      -0.82068     0.35167      1  
   -1.0675       0.62368     0.21684      1  
   -1.0499      -0.94551     0.13585      1  
   0.12091         1.174     0.24833      1  
    1.4844        1.1068    0.032436      1  
   -1.4192      -0.14187     0.13078      1  
   -1.9344       0.27976    0.021921      1  
   0.95139        1.3568    0.064181      1  
   -1.3752       -1.3211    0.026344      1  
   -1.8085      -0.51325    0.029182      1  
   -1.0922       -1.5885    0.024327      1  
   0.94895        1.2162    0.092584      1  
  0.015594       -1.6244     0.07143      1  
   0.32197        1.8144    0.033513      1  
   -1.3527      -0.16529     0.15612      1  
   0.34574       -1.5334    0.084521      1  
    1.6561        0.2339    0.060973      1  
  -0.46079       0.91338     0.35113      1  
    1.1636       -1.1944    0.062011      1  
   0.85034       -1.2562     0.10016      1  
   -1.7962      -0.44247    0.032644      1  
   0.93299        -1.037     0.14288      1  
    1.8234      -0.59491    0.025257      1  
    0.7636       -1.4665    0.064987      1  
   0.75808      -0.98861     0.21182      1  
    1.4923        1.0663    0.034604      1  
  -0.97867       -1.3705    0.058654      1  
  -0.31034       -1.0322     0.31295      1  
    -1.157      -0.96013     0.10429      1  
   0.53453       -1.6588    0.047969      1  
    1.8924       0.41766    0.023382      1  
    0.1269      -0.99252     0.36744      1  
   -0.2271       -1.9694    0.019638      1  
 -0.088874        1.4567     0.11887      1  
 -0.087929        1.9783    0.019814      1  
   -1.1305       -1.2394    0.059956      1  
   -1.0524        1.5424    0.030607      1  
   0.47627       -1.5803    0.065603      1  
    -1.602       0.56376    0.055898      1  
   0.27841       -1.3339     0.15618      1  
    1.6585     -0.099409     0.06326      1  
  -0.55977        1.7137    0.038772      1  
    1.1775        1.4793    0.028017      1  
    1.4706       -1.0501    0.038188      1  
   -1.6994      -0.45412    0.045313      1  
    1.8718       -0.2996    0.027504      1  
  -0.91708       -1.0616     0.13973      1  
    1.7343     -0.066364    0.049175      1  
     -1.47      -0.43782    0.095119      1  
   -1.4449      -0.24214     0.11691      1  
   0.98507        1.1234     0.10727      1  
  -0.91519        1.1691     0.11031      1  
    1.3783       0.22913     0.14197      1  
   0.90353        1.4316     0.05694      1  
 -0.041484        -1.513     0.10119      1  
    1.9442       0.37595    0.019813      1  
   -1.1644        1.2952    0.048152      1  
   0.81946      -0.96135     0.20276      1  
  -0.53217       -1.4131     0.10227      1  
  -0.51665       -1.3278     0.13133      1  
   0.69272        1.7068    0.033611      1  
   -1.7822       0.68106    0.026252      1  
    -1.679       -0.9448     0.02444      1  
     1.725      -0.11123     0.05038      1  
   0.38428        1.2896     0.16355      1  
  0.018881        1.3254     0.17254      1  
  -0.14427        1.8825    0.028306      1  
 0.0017411       -1.6072    0.075536      1  
   -1.7786       0.49289    0.033158      1  
    1.5441       0.57716    0.066042      1  
   -1.7861     -0.095666    0.040786      1  
   0.37857        1.5536    0.077534      1  
   0.54723       -1.7359    0.036419      1  
  -0.48208         1.573    0.066765      1  
     1.525       0.26721    0.090979      1  
   -1.1857      -0.78882     0.13159      1  
   0.61029      -0.91224      0.2998      1  
   -1.0712       0.99313     0.11839      1  
-0.0009909        -1.113     0.28971      1  
   -1.9822      -0.13899    0.019285      1  
    -1.202      -0.31629     0.21335      1

Kalian bisa plotkan menggunakan scatter3

Biar saya putar agar lebih jelas

Kalian bisa melihat, dengan menarik garis lurus pada sumbu Z maka dataset tersebut akan terpisah dengan baik yang menghasilkan nilai sebagai berikut menggunakan Quadratic Programming

%mengubah persamaan menjadi QP
XYZ = [dataset_xy,Z];
n = size(XYZ,2); %jumlah fitur
ell = size(XYZ,1); %jumlah data
H = diag([ones(1,n) 0]);
f = zeros(1,n+1); 
A = -diag(target)*[XYZ ones(ell,1)];
c = -ones(ell,1);
z = quadprog(H,f,A,c);
w = z(1:n)
b = z(n+1)

hasil

w =

    0.7735
   -0.8910
 -132.0126

>> b

b =

   48.5237

Sehingga w mempunyai panjang 3 sesuai dengan jumlah parameter input yaitu (dataset_xyz) X, Y, dan Z. Kalian bisa coba dengan persamaan rumus SVM

    X             Y            Z        KELAS
__________    __________    ________    _____

  -0.29911       0.57233     0.65901     -1

Dengan rumus

rumussvm=@(x,w,b) sign(dot(x,w)+b);
 
data_sample = dataset_xyz(1,:)
 
prediksi = rumussvm(data_sample,w,b)

hasil

data_sample =
   -0.2991    0.5723    0.6590
prediksi =
    -1

Hasilnya telah sesuai, tapi untuk menggambarkan persamaan garis lurus diatas (hyperplane), akan sulit sekali dalam versi 3 dimensi.

Support Vector Machine dengan RBF di Matlab

Nah  untuk versi di Matlab, kalian harus menyertakan jenis kernel menggunakan rbf yaitu

https://www.mathworks.com/help/stats/support-vector-machines-for-binary-classification.html

https://www.mathworks.com/matlabcentral/answers/96276-how-does-svmtrain-determine-polynomial-and-rbf-kernel-parameters-gamma-c-in-the-bioinformatics-too

Kalian hanya perlu memasukan dataset_xy bukan dataset_xyz

model = fitcsvm(dataset_xy,target,'KernelFunction','rbf','ClassNames',[-1,1]);

Sedangkan untuk prediksi

%untuk memporediksi yaitu
no_dataset = 10
data_sample = dataset_xy(no_dataset,:)
prediksi_svm_matlab = predict(model,data_sample)

Sedangkan untuk bias dan bobotnya gimana? Ini yang agak susah, saya pun belum begitu paham, tapi yang pasti kalian akan mendapatkan dataset support vector dari sebuah model diatas yaitu

>> model
model = 
  ClassificationSVM
             ResponseName: 'Y'
    CategoricalPredictors: []
               ClassNames: [-1 1]
           ScoreTransform: 'none'
          NumObservations: 200
                    Alpha: [46×1 double]
                     Bias: 0.7245
         KernelParameters: [1×1 struct]
           BoxConstraints: [200×1 double]
          ConvergenceInfo: [1×1 struct]
          IsSupportVector: [200×1 logical]
                   Solver: 'SMO'

  Properties, Methods

Kalian bisa plot dataset support vector yaitu

model.SupportVectors
ans =
   -0.3073   -0.8852
    0.9707    0.1613
    0.0198    0.8318
    0.5969   -0.7212
   -0.9178   -0.2285
   -0.1709    0.9214
   -0.9076   -0.3662
    0.2602   -0.7901
    0.2909   -0.7758
   -0.6960    0.5917
   -0.9330   -0.3441
    0.6425    0.6136
    0.1449    0.9421
    0.4781   -0.6864
   -0.7630   -0.6021
   -0.3904    0.8666
   -0.6556    0.6145
   -0.4680   -0.8417
    0.0150   -0.8664
    0.3192   -0.8910
   -0.6287   -0.7547
    0.8919    0.3924
    0.9468    0.0832
   -0.0552    1.2324
    0.9006    0.7536
    0.4158    1.1101
   -0.1384   -1.0225
    0.6095   -0.8207
   -1.0675    0.6237
   -1.0499   -0.9455
    0.1209    1.1740
   -1.3527   -0.1653
   -0.4608    0.9134
    0.7581   -0.9886
   -0.3103   -1.0322
    0.1269   -0.9925
   -0.9171   -1.0616
    1.3783    0.2291
    0.8195   -0.9613
   -0.5167   -1.3278
    0.0189    1.3254
    1.5250    0.2672
   -1.1857   -0.7888
    0.6103   -0.9122
   -1.0712    0.9931
   -0.0010   -1.1130
   -1.2020   -0.3163

Yang bila diplotkan bersama-sama menghasilkan berikut (bulatan hijau merupakan support vector-nya)