news

Senin, 15 Juni 2020

Belajar Support Vector Machine Classifier



Untuk memahami bagaimana algoritma support vector machine atau SVM bekerja, bayangkan kita memiliki sebuah kebun binatang mini.

Di kebun binatang tersebut terdapat dua jenis binatang yaitu, ayam hias dan ular. Sebagai seorang ML engineer, kita ingin mengembangkan sebuah model yang mampu membedakan antara ayam dan ular piton agar bisa menempatkan kedua hewan tersebut di kandang yang berbeda.

Kita tentunya tak mau menyatukan ayam dan ular dalam satu kandang yang sama ya.

20200430211407abf877502e0606f62edde8f3e9bdcb14.png
Kita bisa membuat sebuah model klasifikasi yang memisahkan antara kedua kelas tersebut menggunakan Support Vector Machine. Menurut Aurelien Geron dalam buku Hands on Machine Learning, SVM bekerja dengan membuat decision boundary atau sebuah bidang yang mampu memisahkan dua buah kelas. Pada masalah ini decision boundary yang mampu memisahkan kelas ayam dan kelas ular adalah sebuah garis lurus yang dapat dilihat pada gambar.
202004302114162a52be1db49f19aa86d590c75fc76367.png
Lalu, bagaimana SVM membuat sebuah decision boundary tersebut?
Pertama SVM mencari support vector pada setiap kelas. Support vector adalah 2 sampel dari tiap kelas yang memiliki jarak paling dekat. Pada contoh dataset bola basket dan bola kaki di bawah, support vector adalah bola basket dan bola kaki yang memiliki warna biru.
20200430211432f1655cf90c316926434dcf93e74cd45b.png
Setelah support vector ditemukan, SVM menghitung margin. Margin bisa kita anggap sebagai jalan yang memisahkan dua kelas. Margin dibuat berdasarkan support vector dimana, support vector bekerja sebagai batas tepi jalan, atau sering kita kenal sebagai bahu jalan. SVM mencari margin terbesar atau jalan terlebar yang mampu memisahkan kedua kelas.
Pada dataset bola basket dan bola kaki di atas, SVM akan memilih margin di sebelah kanan karena, ‘jalan’ atau margin pada gambar sebelah kanan lebih lebar dari ‘jalan’ di sebelah kiri.
Kembali lagi ke kasus klasifikasi ayam dan ular, sampel ayam dan ular yang berada dalam lingkaran merah adalah support vector. Kemudian kita mencari jalan terlebar dari 2 support vector. Setelah menemukan jalan terlebar, decision boundary lalu digambar berdasarkan jalan tersebut.
202004302114418a9f0636f38334dcfd216f220b238a82.png
Decision boundary adalah garis yang membagi jalan atau margin menjadi 2 bagian yang sama besar. Selamat, sekarang Anda sudah paham bagaimana support vector machine bekerja dalam masalah klasifikasi.

SVM Klasifikasi non Linier

Sebelumnya kita sudah belajar tentang support vector classifier. Support vector classifier bekerja dengan mencari margin terbesar, atau jalan terlebar yang mampu untuk memisahkan 2 buah kelas. Lantas bagaimana jika data yang kita miliki terlihat seperti ini?.
202004302115251ddcb97c8f23e10fa34132c8c798c561.png
Data di atas merupakan data yang tidak bisa dipisahkan secara linier. Untuk data seperti di atas, Support Vector Classifier menggunakan sebuah metode yaitu “kernel trick” sehingga data dapat dipisahkan secara linier. Apa itu trik kernel? Ia adalah sebuah metode untuk mengubah data pada dimensi tertentu ke dalam dimensi yang lebih tinggi agar dapat dipisahkan secara linier.
Animasi berikut dapat membantu kita untuk melihat bagaimana data 2 dimensi - seperti pada gambar sebelumnya- diubah ke dalam ruang 3 dimensi, sehingga data dapat dipisahkan secara linier.
202004302115496388b5a7ef3619c14e247272b38f0a48.gif
SVM adalah support vector classifier yang menggunakan trik kernel untuk memisahkan data non linier. Agar lebih paham bagaimana trik kernel bekerja, lihat contoh berikut.
202004302120524b2e946499ea49ac5e77a0419e2252b5.png
Data di atas hanya memiliki 1 buah atribut atau data 1 dimensi, dan 2 buah kelas yaitu dokter dan polisi. Data di atas bukan data linier karena kita tak dapat menggambar satu garis lurus untuk memisahkan 2 kelas.
Bagaimana cara kita bisa menggambar garis lurus yang bisa memisahkan 2 kelas tersebut?. Betul, kita akan menggunakan trik kernel untuk mengubah data tersebut ke dalam dimensi yang lebih tinggi seperti ke dalam bidang 2 dimensi.
20200430212059287c539aa14c5b64cb588d3744b5cc63.png
Ketika data sudah diubah ke dalam bidang 2 dimensi, sebuah garis lurus bisa digambar untuk memisahkan 2 kelas. Trik kernel menggunakan fungsi matematis yang bisa mengubah data dengan dimensi tertentu, ke dimensi yang lebih tinggi sehingga kelas-kelas pada data dapat dipisah secara linier.
Ada beberapa kernel yang populer yaitu:
  • Linear
  • Polinomial
  • RBF
  • Sigmoid
Tertarik mengetahui tentang fungsi matematis di balik kernel? Kunjungi tautan berikut yah.

SVM untuk klasifikasi multi kelas

SVM sejatinya merupakan binary classifier atau model untuk klasifikasi 2 kelas. Namun, SVM juga dapat dipakai untuk klasifikasi multi-kelas menggunakan suatu teknik yaitu “One-vs-rest” yang akan dibahas pada paragraf selanjutnya.
Pada masalah klasifikasi multi-kelas, SVM melakukan klasifikasi biner untuk masing-masing kelas. Misalnya, jika ada 3 buah kelas: donat, ayam, dan burger. SVM akan melakukan 3 kali klasifikasi. Pertama, membangun pemisah antara kelas donat, dan kelas bukan donat.
2020043021222079d9cede7dc7887943d66af77fe4ea86.png
Kemudian membangun pemisah antara kelas ayam dan kelas bukan ayam, lalu pemisah antara kelas burger dan bukan kelas burger. Teknik inilah yang disebut dengan “One-vs-Rest”.