Lensa ML

Support Vector Machine

Langkah 1 dari 6: Maximum Margin

Mencari jalan yang paling lebar

-3-2-1123-3-2-1123sisi hijau
Sudut
45°
Margin
0.49
Salah kelas
0
Support vector
1

SVM memilih hyperplane dengan margin terlebar. Margin saat ini: 0,49. Coba sudut lain untuk menemukan jalan yang paling lebar.

Geser sudut hyperplane dan perhatikan kartu margin. Di demo ini, garisnya selalu melewati titik asal, dan garis terlebar yang masih memisahkan kedua kelas ada di sekitar 22°, dengan margin sekitar 0,61. SVM lengkap juga mempelajari offset b dan menyelesaikan masalah optimisasi: minimalkan ½‖w‖² dengan syarat y_i(w·x_i + b) ≥ 1 untuk setiap titik. Jarak antara kedua garis putus-putus menjadi 2/‖w‖, jadi weight vector yang lebih kecil berarti jalan yang lebih lebar. Masalah ini konveks, jadi hanya punya satu solusi terbaik.

Langkah 2 dari 6: Support Vector

Segelintir titik yang menentukan

-3-2-1123-3-2-1123geser ini
Support vector
2
Lebar margin
1.22
Pergeseran titik
0.0

Hanya titik di tepi margin, yaitu support vector, yang menentukan garis batas. Titik yang digeser jauh dari margin, jadi memindahkannya tidak mengubah margin.

Geser slider pergeseran titik untuk memindahkan titik yang disorot mendekati atau menjauhi garis batas. Pada SVM yang sudah diselesaikan, weight vector adalah weighted sum dari titik training, w = Σ α_i y_i x_i, dan α_i bernilai nol untuk setiap titik di luar margin. Titik-titik itu bisa dihapus tanpa mengubah model. Titik dengan α_i > 0 adalah support vector. Jumlahnya juga membatasi leave-one-out error: mengeluarkan titik yang bukan support vector tidak mengubah solusi, jadi titik itu tetap terklasifikasi dengan benar.

Langkah 3 dari 6: Soft Margin

Menoleransi sebagian error

-3-2-1123-3-2-1123
C
1.00
Margin
1.40
Pelanggaran
13
Akurasi
100%

C sedang (1,0): seimbang antara lebar margin dan error klasifikasi.

Geser parameter C melintasi skala log-nya dari 0,01 sampai 100. Data sungguhan jarang terpisah bersih, jadi SVM soft margin memberi setiap titik slack ξ_i dan meminimalkan ½‖w‖² + C·Σ ξ_i. Titik dengan ξ_i antara 0 dan 1 berada di dalam margin, sedangkan ξ_i > 1 menempatkannya di sisi yang salah. Objective yang sama bisa ditulis sebagai hinge loss max(0, 1 − y_i·f(x_i)) ditambah penalti L2 pada w. Cortes dan Vapnik memperkenalkan bentuk soft margin ini pada 1995. C biasanya di-tune dengan cross-validation pada grid log.

Langkah 4 dari 6: Kernel Trick

Memetakan ke dimensi yang lebih tinggi

-3-2-1123-3-2-1123
Kernel
Polinomial
Support vector
13
Akurasi
100%

Kernel polinomial: garis batas linear pada hasil perkalian feature, yang tampak melengkung di ruang asal.

Geser slider kernel dari Linear lewat Polinomial ke RBF. Dual problem SVM memakai data hanya lewat dot product x_i·x_j, jadi setiap dot product bisa diganti dengan kernel k(x_i, x_j) yang setara dengan dot product di ruang feature yang lebih besar, tanpa perlu membangun ruang itu. Kernel berderajat 2, (x·z + 1)², mencakup semua perkalian hingga dua feature. Kernel RBF exp(−γ‖x − z‖²) berkorespondensi dengan ruang berdimensi tak hingga. SVM kernel butuh matriks kernel n × n, yang membatasinya sampai kira-kira puluhan ribu titik.

Langkah 5 dari 6: Gamma pada RBF

Mengatur kelenturan garis batas

-3-2-1123-3-2-1123
Gamma
0.40
Akurasi train
85%
Akurasi test
87%
Support vector
9

γ sedang (0,40): cukup lentur untuk mengikuti data tanpa membungkus titik satu per satu.

Geser γ melintasi skala log-nya dari 0,1 sampai 10 dan lihat seberapa jauh pengaruh tiap titik menyebar. Kedua cluster bertumpang tindih dan 6 dari 40 label dibalik, jadi garis batas yang sangat lokal harus membayar harganya: di sekitar γ = 1, model mencetak 83% pada titik training dan 89% pada 300 titik baru, sedangkan pada γ = 10 model mencapai 95% pada training dan turun ke 79% pada sampel baru. Pada kernel RBF exp(−γ‖x − z‖²), γ sama dengan 1/(2σ²) untuk Gaussian selebar σ, jadi γ besar berarti tonjolan sempit di sekitar setiap titik training. γ dan C bekerja bersama: C membatasi seberapa keras model mengikuti titik individual, dan γ menentukan seberapa lokal pengaruh tiap titik. Keduanya biasanya di-tune bersama pada sebuah grid. Default scikit-learn, gamma="scale", menetapkan γ ke 1/(n_features · Var(X)).

Langkah 6 dari 6: SVM Multi-Kelas

Strategi One-vs-Rest

-3-2-1123-3-2-1123
Kelas
3
Classifier OvR
3
Akurasi
100%

Untuk 3 kelas, one-vs-rest melatih 3 classifier dan memilih yang skornya paling tinggi. Setiap garis putus-putus adalah garis batas satu classifier antara kelasnya dan semua kelas lain.

Geser jumlah kelas dari 2 ke 5. SVM memisahkan dua kelas, jadi masalah multi-kelas dipecah menjadi beberapa masalah biner. One-vs-rest melatih K classifier, masing-masing satu kelas melawan semua kelas lain. One-vs-one melatih satu classifier untuk setiap pasangan, total K(K − 1)/2, jadi 10 untuk 5 kelas, dan membuat prediksi lewat suara mayoritas. Setiap model pasangan hanya melihat data dari dua kelas, sehingga training tetap cepat. SVC di scikit-learn memakai one-vs-one secara internal, dan LinearSVC memakai one-vs-rest. Demo ini melatih satu SVM linear per kelas dengan subgradient descent pada hinge loss, menggambar garis batas masing-masing sebagai garis putus-putus, dan mewarnai setiap area sesuai classifier dengan skor tertinggi.

Apa itu support vector machine (SVM)?

Support vector machine adalah classifier yang memisahkan dua kelas dengan hyperplane yang menyisakan margin selebar mungkin ke titik training terdekat. Titik-titik terdekat itu disebut support vector, dan hanya titik-titik itu yang menentukan garis batas. Versi soft margin menoleransi sebagian error, dan kernel membuat metode yang sama bisa menggambar garis batas melengkung.

SVM termasuk classifier serbaguna paling akurat dari akhir 1990-an sampai 2000-an, dan dipakai untuk kategorisasi teks, pengenalan angka tulisan tangan, dan tugas bioinformatika seperti klasifikasi protein. SVM masih bekerja baik pada dataset kecil dan menengah dengan banyak feature. Ide yang diperkenalkannya, yaitu margin, hinge loss, dan kernel, muncul di berbagai bidang machine learning, dari kernel ridge regression sampai analisis neural network.

Ide utama

  • SVM memilih hyperplane pemisah dengan margin terlebar ke titik terdekat dari tiap kelas.
  • Hanya support vector, yaitu titik di atas atau di dalam margin, yang menentukan garis batas.
  • Parameter C menyeimbangkan lebar margin dan error training pada SVM soft margin.
  • Kernel membuat SVM bisa mempelajari garis batas non-linear dengan mengganti dot product dengan fungsi kemiripan.
  • Pada kernel RBF, γ menentukan seberapa jauh pengaruh tiap titik training.
  • SVM multi-kelas menggabungkan beberapa classifier biner, dengan one-vs-rest atau one-vs-one.

Pertanyaan umum

Apakah SVM lebih baik daripada logistic regression?

Secara umum, tidak ada yang selalu menang. Keduanya mempelajari garis batas linear, tetapi hinge loss mengabaikan titik yang jauh dari garis batas, sedangkan logistic loss memakai setiap titik dan menghasilkan probabilitas. Dengan kernel, SVM bisa mengikuti garis batas non-linear yang tidak bisa diikuti logistic regression biasa. Pada dataset tabular besar, gradient-boosted tree sering mengalahkan keduanya.

Apakah SVM bisa menghasilkan probabilitas?

Tidak secara langsung. Decision function memberi skor bertanda yang sebanding dengan jarak dari garis batas. Platt scaling mencocokkan sigmoid ke skor itu pada data held-out untuk mengubahnya menjadi probabilitas, dan scikit-learn melakukannya saat probability=True, dengan biaya training tambahan.

Apakah SVM butuh feature scaling?

Ya. Margin dan kernel RBF sama-sama bergantung pada jarak, jadi feature dengan rentang besar akan mendominasi yang lain. Standardisasi setiap feature ke mean nol dan variance satu adalah langkah awal yang umum.

Apakah SVM bisa dipakai untuk regresi?

Bisa. Support vector regression (SVR) mencocokkan fungsi yang menjaga sebagian besar titik di dalam tabung selebar ε di sekitarnya dan mengabaikan error yang lebih kecil dari ε. Titik di atas atau di luar tabung menjadi support vector, dan kernel yang sama tetap berlaku.

Penjelasan terkait

Referensi

  1. Cortes & Vapnik (1995), "Support-Vector Networks", Machine Learning
  2. Boser, Guyon & Vapnik (1992), "A Training Algorithm for Optimal Margin Classifiers"
  3. James, Witten, Hastie & Tibshirani, "An Introduction to Statistical Learning", chapter 9: Support Vector Machines

Terakhir diperbarui