Thursday, October 3, 2019

Buku Belajar Machine Learning dengan Matlab-Support Vector Machine


Seiring dengan meningkatnya traffic dan kemudahan dalam mengelola content, kami mengucapkan banyak terima kasih kepada para pembaca setia pada blog www.softscients.web.id

Per 19 Maret 2020, kami sedang melakukan migrasi ke domain dan hosting yang lebih baik yaitu
Semoga dengan alamat domain dan hosting terbaru akan semakin memudahkan para pembaca dalam mencari materi/content. Migrasi dilakukan secara bertahap yang membutuhkan waktu yang cukup lama jadi jangan kuatir selama migrasi akan dilakukan secara hati-hati untuk memimalkan broken link


Kalian bisa lanjut baca di  http://softscients.com/2020/03/26/buku-belajar-machine-learning-dengan-matlab-support-vector-machine/


Buku Belajar Machine Learning dengan Matlab-Support Vector Machine

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

Buku Belajar Machine Learning dengan Matlab-Support Vector Machine


ref: 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

Buku Belajar Machine Learning dengan Matlab-Support Vector Machine

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

Buku Belajar Machine Learning dengan Matlab-Support Vector Machine

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(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)

Hasilnya

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
Ref: https://www.mathworks.com/help/stats/support-vector-machines-for-binary-classification.html
Ref: 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)









Belajar jaringan syaraf tiruan dengan matlab

No comments:

Post a Comment