Wiem, że SVM jest klasyfikatorem binarnym. Chciałbym rozszerzyć go na SVM klasy. Jaki jest najlepszy, a może najłatwiejszy sposób na jego wykonanie?
kod: w 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
Jak można to poprawić?
machine-learning
matlab
svm
multi-class
lakesh
źródło
źródło
classes
w kodzie? To wydaje się bezużyteczne.Odpowiedzi:
Istnieje wiele metod klasyfikacji wielu klas. Dwie klasyczne opcje, które nie są specyficzne dla SVM, to:
Klasyfikacja jeden na wszystkich (OVA):
Załóżmy, że masz klasy A, B, C i D. Zamiast robić klasyfikację czterokierunkową, wytrenuj cztery binarne klasyfikatory: A vs. nie-A, B vs. nie-B , C vs. not-C i D vs. not-D. Następnie wybierz albo pozytywną klasę, która jest „najlepsza” (np. Najdalej od marginesu we wszystkich czterech seriach). Jeśli żadna z klasyfikacji nie jest dodatnia (tzn. Wszystkie nie są X), wybierz „przeciwieństwo” klasy, która jest najgorsza (np. Najbliżej marginesu).
All-vs.-All:
Trenuj wszystkie możliwe pary klasyfikacji. Ranguj klasy według jakiegoś czynnika (np. # Razy wybranych) i wybierz najlepszy.
To, co działa najlepiej, było sporne: Duan i Keerthi przeprowadzili badanie empiryczne, które sugeruje konkretną metodę „wszystko przeciwko wszystkim”, podczas gdy Rifkin i Klautau opowiadają się za planem „ jeden na wszystkich”. Istnieją nawet schematy, w których uczy się kodów korygujących błędy opisujących etykiety klas, zamiast samych etykiet.
Powodzenia!
Edycja: To, czego naprawdę chcesz, szczególnie dla OVA, to prawdopodobieństwo prawdopodobieństwa każdej klasy. W przypadku niektórych metod, takich jak Naive Bayes, wydostanie się jest banalne. SVM zwykle nie dają prawdopodobieństw, ale istnieją sposoby ich obliczenia. Zobacz artykuł Johna Platta z 1999 r. „Wyjścia probabilistyczne dla maszyn wektorów pomocniczych ...”
źródło
Dodajmy, że trwają prace nad rozszerzeniem SVM na wiele klas (w przeciwieństwie do metod Matt Krause, które rozkładają się na kilka zadań klasyfikacji binarnej). Jedną z ważnych prac jest: Nad implementacją algorytmiczną wieloklasowej maszyny wektorowej opartej na jądrze
źródło