Langkah Algoritma SVM dan Klasifikasi Gambar Dengan Support Vector Machine (SVM)
Langkah Algoritma SVM dan Klasifikasi Gambar Dengan Support Vector Machine (SVM) - Apa itu SVM, Udah lama nih ga buat artikel yang bahas cara kerja suatu algoritma secara khusus. Kali ini, mimin akan bahas salah satu algoritma yang sering digunakan, yaitu SVM!
Di akhir artikel, akan ada pembahasan singkat SVM untuk klasifikasi gambar.
Yuk, kita mulai artikelnya!
Apa itu SVM? Support Vector Machine (SVM) adalah salah satu algoritma machine learning yang sifatnya supervised. Algoritma ini digunakan untuk mengatasi masalah klasifikasi maupun regresi.
Namun, di artikel ini, kita fokuskan ke klasifikasi saja ya!
Karena berguna untuk klasifikasi, maka SVM ini akan membagi data point ke dalam grup grup tertentu. Namun, apa yang menjadi ‘pembagi’ atau ‘pemisah’ antar grup ini?
Nah, untuk mengklasifikasikan data point ke dalam grup, SVM punya fitur yang namanya “hyperplane”.
Contohnya bisa kalian lihat pada gambar di bawah ini, dimana hyperplane nya adalah garis pemisah antara grup hijau dan merah.
Lalu bagaimana cara menentukan dimana hyperplane ditempatkan?
Di SVM, hyperplane akan ditaruh pada titik tengah dari data point terluar setiap grup. Agar memudahkan, kita anggap hanya ada 2 feature yang digunakan ya, x dan y. Jarak antara titik terluar dengan hyperplane kita sebut sebagai margin ya guys.
Penentuan hyperplane seperti ini kita sebut sebagai Maximal Margin Classifier, soalnya hyperplane ini menghasilkan margin terluas bagi data point di kedua grup (Class A dan Class B).
Biar lebih paham, coba bayangin kalau hyperplanenya digeser ke kiri, marginnya akan lebih besar untuk Class B dibandingkan dengan Class A. Jadinya margin terluas dimiliki oleh Class B aja.
Sampai sini masih terlihat sederhana yaa karena memang datanya sudah terbagi menjadi 2 grup yang benar benar kepisah. Tapi kan pada kenyataannya, data yang kita punya ga akan “sebersih” itu.
Gimana kalau kasusnya seperti contoh gambar di sebelah kiri? Kalau tetap menggunakan Maximal Margin Classifier, hasilnya akan seperti gambar di sebelah kanan.
Hasil klasifikasinya jadi ngaco. Dari sini, kita bisa tau kalo Maximal Margin Classifier sensitif banget dengan outlier. Agar hal ini ga terjadi, kita bisa menggunakan Soft Margin Classifier, dimana SVM diperbolehkan untuk mengabaikan outlier, jadi gapapa ada misklasifikasi data.
Balik lagi ke realita, outlier dalam dataset jarang banget cuma ada 1. Terus gimana kalau outliernya banyak? Apakah jumlah data yang boleh di misklasifikasi = jumlah outliernya?
Untuk mencari tau berapa banyak misklasifikasi yang diperbolehkan masuk ke dalam Soft Margin, kita harus menggunakan Cross Validation.
Semoga sampai sini masih bisa dicerna yaa. Sekarang, yuk kita bahas untuk kasus yang lebih kompleks. Misalnya nih, kalian punya data seperti ini, gimana
cara menentukan hyperplanenya?
Karena ga mungkin menggambar garis lurus yang bisa membagi data ke dalam 2 grup, maka kita bisa nambahin additional feature, yaitu z! Secara matematis, feature z bisa kita dapatkan dengan cara menghitung z=x^2+y^2. Kalau sudah ktemu z nya, bisa kita plot deh datanya
Dengan begini, jadi lebih jelas kan perbedaan antar 2 grup dan kalian bisa membuat hyperplanenya.
Teknik menambahkan feature baru ini disebut sebagai kernel trick (metode yang mentransformasi low dimensional input space ke dimensi yang lebih besar). Kernel trick dapat digunakan untuk memisahkan data yang inseparable seperti ini.
Nah, kan kita sudah bisa membuat hyperplane dengan tambahan feature z tadi, jadinya kalau kita lihat ke yang kondisi awal alias cuma ada feature x dan y, hyperplane nya jadi seperti ini
Itu dia guys sekilas cara kerja SVM. Metode ini dapat kalian gunakan untuk melakukan klasifikasi, entah itu gambar, teks, atau klasifikasi lainnya. Di artikel ini, kita akan bahas penerapan SVM khusus untuk klasifikasi gambar aja ya!
Prosesnya sebagai berikut guys:
(1). Memberikan input
Tugas utama SVM dalam kasus ini adalah mengklasifikasikan gambar yang kita berikan. Karena SVM ini supervised model, jadi input yang kita berikan pun sudah ada labelnya.
Misalnya mau suruh SVM tebak gambar mobil, es krim, atau bola. Nah, kita kasih input ketiga gambar tadi yang udah diberi keterangan, misal gambar mobil diberi label 0, es krim 1, dan bola 2.
Oh iya, SVM ini membaca gambar bukan dalam bentuk gambar loh guys! Tapi dalam bentuk himpunan pixels kaya gambar dibawah ini.
Kalau kalian perhatikan, himpunan pixels nya itu berisi angka kann. Biasanya, nilai dari angkanya ini berkisar dari 0 (black) - 255 (white).
Untuk ukurannya sendiri, sizenya itu width x height x RGB channel values. Kalau melakukan image classification menggunakan SVM, jangan lupa untuk samakan semua size input gambar kalian ya, soalnya SVM ga bisa memproses gambar dengan beragam ukuran.
(2). Memisahkan input
Tahapan yang ga boleh kita lupakan adalah memisahkan dataset ke dalam training dan testing. Training data digunakan untuk melatih model sedangkan testing data akan digunakan untuk menguji apakah model dapat bekerja dengan baik.
(3). Membuat model
Kalau sudah menentukan data untuk training, yasudahh tinggal masukan code untuk membuat model SVM dan gunakan data training tadi untuk melatih model.
(4). Model evaluation
Seperti yang mimin sudah bilang, kita akan menguji lagi nih kira kira modelnya sudah oke atau belum. Nah, kita bisa melihat akurasi model ketika diuji menggunakan testing data tadi.
Bila modelnya sudah oke, maka bisa kita gunakan deh untuk melakukan image classification. Contoh hasil outputnya seperti ini nih guys:
Kalau kalian mau coba melakukan image classification pakai SVM, contoh yang mimin jadikan artikel ini tersedia di github kok, jadi bisa mampir kesini yaaps: https://github.com/ShanmukhVegi/Image-Classification
Okeey, sekian dulu penjelasan singkat mengenai SVM. Kalian bisa belajar model matematis SVM ini di Non Degree Program Data Scientist Pacmann, karena referensinya juga dari materi kelas pacmann hehehee.
Posting Komentar