Ada banyak metode untuk klasifikasi multi-kelas. Dua opsi klasik, yang tidak spesifik untuk SVM adalah:
Klasifikasi satu-lawan-semua (OVA):
Misalkan Anda memiliki kelas A, B, C, dan D. Alih-alih melakukan klasifikasi empat arah, latih empat klasifikasi biner: A vs bukan-A, B vs tidak-B , C vs tidak-C, dan D vs tidak-D. Kemudian, pilih salah satu kelas positif yang "terbaik" (mis., Jarak terjauh dari margin di keempat run). Jika tidak ada klasifikasi yang positif (yaitu, semuanya bukan-X), pilih "kebalikan" dari kelas yang terburuk (mis., Paling dekat dengan margin).
All-vs-All:
Latih semua kemungkinan klasifikasi. Buat peringkat kelas berdasarkan beberapa faktor (mis., # Waktu yang dipilih), dan pilih yang terbaik.
Yang paling berhasil adalah perdebatan:
Duan dan Keerthi memiliki studi empiris yang menyarankan metode spesifik semua-vs-semua, sementara Rifkin dan Klautau berpendapat untuk skema satu- lawan -semua. Bahkan ada skema di mana orang belajar kode koreksi kesalahan yang menggambarkan label kelas, bukan label itu sendiri.
Semoga berhasil!
Sunting: Apa yang sebenarnya Anda inginkan, terutama untuk OVA, adalah probabilitas posterior masing-masing kelas. Untuk beberapa metode, seperti Naif Bayes, itu sepele untuk keluar. SVM biasanya tidak memberi Anda probabilitas, tetapi ada beberapa cara untuk menghitungnya. Lihat makalah John Platt 1999 "Output Probabilistik untuk Mendukung Mesin Vektor ..."
classes
dalam kode? Sepertinya tidak berguna.