Saya tahu bahwa SVM adalah classifier biner. Saya ingin memperluasnya ke multi-class SVM. Mana yang terbaik, dan mungkin cara termudah untuk melakukannya?
kode: di MATLAB
u=unique(TrainLabel);
N=length(u);
if(N>2)
itr=1;
classes=0;
while((classes~=1)&&(itr<=length(u)))
c1=(TrainLabel==u(itr));
newClass=double(c1);
tst = double((TestLabel == itr));
model = svmtrain(newClass, TrainVec, '-c 1 -g 0.00154');
[predict_label, accuracy, dec_values] = svmpredict(tst, TestVec, model);
itr=itr+1;
end
itr=itr-1;
end
Bagaimana ini bisa diperbaiki?
machine-learning
matlab
svm
multi-class
Lakesh
sumber
sumber
classes
dalam kode? Sepertinya tidak berguna.Jawaban:
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 ..."
sumber
Izinkan saya menambahkan bahwa ada pekerjaan memperluas SVM ke beberapa kelas (yang bertentangan dengan metode yang dijelaskan oleh Matt Krause yang didekomposisi menjadi beberapa tugas klasifikasi biner). Salah satu pekerjaan penting adalah: Pada Implementasi Algoritma Mesin Vektor Berbasis Kernel Multiclass
sumber