Pengantar Support Vector Machine SVM

Di blog ini, saya akan menulis tentang algoritma ML terbimbing yang terkenal digunakan untuk masalah klasifikasi dua kelompok, yaitu Support Vector Machine (SVM).

Di sini saya akan menjelaskan tentang Apa itu SVM, Bagaimana cara kerja SVM, kernel SVM, kasus penggunaan SVM dan akhirnya saya akan memberikan tautan ke notebook J upyter saya di mana saya telah menerapkan SVM dari awal.

Jadi tanpa batas waktu lebih lanjut mari kita mulai.

Support Vector Machine (SVM) adalah Algoritma Supervised Machine Learning yang relatif sederhana yang digunakan untuk klasifikasi dan / atau regresi. Ini lebih disukai untuk klasifikasi tetapi terkadang sangat berguna untuk regresi juga. Pada dasarnya, SVM menemukan hyper-plane yang membuat batas antara tipe-tipe data. Dalam ruang 2 dimensi, bidang-hiper ini tidak lain adalah garis.
Dalam SVM, kami memplot setiap item data dalam dataset dalam ruang dimensi-N, di mana N adalah jumlah fitur / atribut dalam data. Selanjutnya, temukan hyperplane optimal untuk memisahkan data. Jadi dengan ini, Anda harus memahami bahwa secara inheren, SVM hanya dapat melakukan klasifikasi biner (yaitu, memilih di antara dua kelas). Namun, ada berbagai teknik yang digunakan untuk masalah kelas jamak.
Support Vector Machine untuk Masalah Multi Kelas
Untuk melakukan SVM pada masalah kelas jamak, kita dapat membuat pengklasifikasi biner untuk setiap kelas data. Dua hasil dari setiap pengklasifikasi adalah:

* Titik data milik kelas OR itu.
* Titik data bukan milik kelas itu.

Dasar-dasar Support Vector Machines dan cara kerjanya paling baik dipahami dengan contoh sederhana. Bayangkan kita memiliki dua tag: merah dan biru , dan data kita memiliki dua fitur: x dan y . Kami menginginkan pengklasifikasi yang, diberi sepasang koordinat (x, y) , menghasilkan jika merah _ atau _blue . Kami memplot data pelatihan kami yang sudah diberi label di pesawat:

Data berlabel kami. Mesin vektor dukungan mengambil titik data ini dan mengeluarkan bidang-hiper (yang dalam dua dimensi hanya berupa garis) yang paling baik memisahkan tag. Garis ini adalah batas keputusan : apa pun yang berada di satu sisi akan kami klasifikasikan sebagai biru , dan apa pun yang jatuh ke sisi lainnya sebagai merah .

Dalam 2D, hyperplane terbaik hanyalah sebuah garis. Tapi, apa sebenarnya hyperplane terbaik ? Untuk SVM, itu yang memaksimalkan margin dari kedua tag. Dengan kata lain: bidang-hiper (ingat itu adalah garis dalam kasus ini) yang jaraknya ke elemen terdekat dari setiap tag adalah yang terbesar.

Tidak semua hyperplanes dibuat sama Sekarang contoh ini mudah, karena jelas datanya dapat dipisahkan secara linier – kita dapat menggambar garis lurus untuk memisahkan merah dan biru . Sayangnya, biasanya hal-hal tidak sesederhana itu. Lihat kasus ini:

Dataset yang lebih kompleks Cukup jelas bahwa tidak ada batasan keputusan linier (satu garis lurus yang memisahkan kedua tag). Namun, vektor dipisahkan dengan sangat jelas dan tampaknya akan mudah untuk memisahkannya.

Jadi, inilah yang akan kami lakukan: kami akan menambahkan dimensi ketiga. Sampai sekarang kami memiliki dua dimensi: x dan y . Kami membuat dimensi z baru , dan kami memutuskan bahwa itu dihitung dengan cara tertentu yang nyaman bagi kami: z = x² + y² (Anda akan melihat itu persamaan untuk lingkaran).

Ini akan memberi kita ruang tiga dimensi. Mengambil sebagian dari ruang itu, terlihat seperti ini:

Dari perspektif yang berbeda, data sekarang berada dalam dua kelompok yang dipisahkan secara linier Apa yang dapat dilakukan SVM dengan ini? Ayo lihat:

Itu hebat! Perhatikan bahwa karena kita sekarang berada dalam tiga dimensi, bidang-hiper adalah bidang yang sejajar dengan sumbu x pada z tertentu (misalkan z = 1 ).

Yang tersisa adalah memetakannya kembali ke dua dimensi:

Kembali ke tampilan awal kami, semuanya sekarang terpisah dengan rapi Dan itu dia! Batas keputusan kami adalah keliling radius 1, yang memisahkan kedua tag menggunakan SVM.

Algoritma SVM menggunakan sekumpulan fungsi matematika yang didefinisikan sebagai kernel. Fungsi kernel adalah mengambil data sebagai input dan mengubahnya menjadi bentuk yang diperlukan. Algoritma SVM yang berbeda menggunakan jenis fungsi kernel yang berbeda. Jenis fungsi ini bisa berbeda. Misalnya linier, nonlinier, polinomial, fungsi basis radial (RBF), dan sigmoid.

Contoh Kernel SVM
Mari kita lihat beberapa kernel umum yang digunakan dengan SVM dan penggunaannya:

1. Kernel polinomial
Ini populer dalam pemrosesan gambar.
Persamaannya adalah:

Persamaan kernel polinomial. dimana d adalah derajat polinomial.

2. Kernel Gaussian
Ini adalah kernel untuk tujuan umum; digunakan ketika tidak ada pengetahuan sebelumnya tentang data. Persamaannya adalah:

Persamaan kernel Gaussian. 3. Fungsi dasar radial gaussian (RBF)
Ini adalah kernel untuk tujuan umum; digunakan ketika tidak ada pengetahuan sebelumnya tentang data.
Persamaannya adalah:

Fungsi dasar radial gaussian (RBF). untuk:

Fungsi dasar radial gaussian (RBF). Terkadang parametrized menggunakan:

4. Laplace RBF kernel

Ini adalah kernel untuk tujuan umum; digunakan ketika tidak ada pengetahuan sebelumnya tentang data.
Persamaannya adalah:

Persamaan kernel Laplace RBF 5. Kernel tangen hiperbolik
Kita bisa menggunakannya di jaringan saraf.
Persamaannya adalah:

Persamaan kernel tangen hiperbolik. untuk beberapa (tidak setiap) k> 0 dan c

6. Kernel sigmoid

Kita dapat menggunakannya sebagai proxy untuk jaringan saraf. Persamaan adalah

Persamaan kernel sigmoid. 7. Linear splines kernel dalam satu dimensi
Ini berguna saat berhadapan dengan vektor data renggang yang besar. Ini sering digunakan dalam kategorisasi teks. Kernel splines juga bekerja dengan baik dalam masalah regresi. Persamaannya adalah:

Linear splines persamaan kernel dalam satu dimensi. Berikut tautan ke notebook Jupyter yang saya jelaskan tempat saya menerapkan SVM dari awal.
Catatan: Saya menggunakan Linear Kernel untuk implementasinya

Seperti yang telah kita lihat, SVM bergantung pada algoritme pembelajaran yang diawasi. Tujuan penggunaan SVM adalah untuk mengklasifikasikan data yang tidak terlihat dengan benar. SVM memiliki sejumlah aplikasi di beberapa bidang.
Beberapa aplikasi umum SVM adalah:

* Deteksi wajah – SVM mengklasifikasikan bagian gambar sebagai wajah dan non-wajah dan membuat batas persegi di sekitar wajah.
* Kategorisasi teks dan hiperteks – SVM memungkinkan kategorisasi teks dan hiperteks untuk model induktif dan transduktif. Mereka menggunakan data pelatihan untuk mengklasifikasikan dokumen ke dalam kategori yang berbeda. Ini mengkategorikan berdasarkan skor yang dihasilkan dan kemudian membandingkan dengan nilai ambang batas.
* Klasifikasi gambar – Penggunaan SVM memberikan akurasi pencarian yang lebih baik untuk klasifikasi gambar. Ini memberikan akurasi yang lebih baik dibandingkan dengan teknik pencarian berbasis kueri tradisional.
* Bioinformatika – Ini termasuk klasifikasi protein dan klasifikasi kanker. Kami menggunakan SVM untuk mengidentifikasi klasifikasi gen, pasien berdasarkan gen dan masalah biologis lainnya.
* Lipatan protein dan deteksi homologi jarak jauh – Terapkan algoritma SVM untuk deteksi homologi jarak jauh protein.
* Pengenalan tulisan tangan – Kami menggunakan SVM untuk mengenali karakter tulisan tangan yang digunakan secara luas.
* Generalized predictive control (GPC) – Gunakan GPC berbasis SVM untuk mengontrol dinamika chaos dengan parameter yang berguna.

1. SVM bekerja relatif baik jika ada batas pemisahan yang jelas antar kelas.
2. SVM lebih efektif dalam ruang dimensi tinggi.
3. SVM efektif dalam kasus di mana jumlah dimensinya lebih besar dari jumlah sampel.
4. SVM relatif hemat memori

1. Algoritma SVM tidak cocok untuk kumpulan data yang besar.
2. SVM tidak bekerja dengan baik jika kumpulan data memiliki lebih banyak noise, yaitu kelas target yang tumpang tindih.
3. Jika jumlah fitur untuk setiap titik data melebihi jumlah sampel data pelatihan, SVM akan berkinerja buruk.
4. Karena pengklasifikasi vektor dukungan bekerja dengan meletakkan titik data, di atas dan di bawah bidang pengklasifikasian tidak ada penjelasan probabilistik untuk klasifikasi.

/blog/introduction-to-support-vector-machines-svm/#:~:text=How%20Does%20SVM%20Work%3F,-The%20basics%20of&text=A%20support%20vector%20machine%20takes,to%20the%20other%20as%20red.