Jak znaleźć wektor w, tj. Prostopadły do płaszczyzny podziału?Matlab libsvm - jak znaleźć współczynniki w
Odpowiedz
Tak to zrobiłem here. Jeśli dobrze pamiętam, jest to oparte na tym, jak działa optymalizacja SVM dual form.
model = svmtrain(...);
w = (model.sv_coef' * full(model.SVs));
I stronniczość jest (i naprawdę nie pamiętam, dlaczego jego ujemny):
bias = -model.rho;
Następnie zrobić klasyfikacji (dla liniowego SVM), na N-by-M „funkcje” DataSet przypadkach N i funkcji M,
predictions = sign(features * w' + bias);
Jeśli jądro nie jest liniowy, to nie dać właściwą odpowiedź. Aby uzyskać więcej informacji, patrz How could I generate the primal variable w of linear SVM?, z instrukcji biblioteki libsvm.
A jak dokładnie używam ich do ręcznej klasyfikacji? Mówię o przypadku 2 klas. – Trup
Zmieniłem moje pytanie, aby wyjaśnić, chociaż nie ma sensu robić tego ... to zwróci dokładnie taki sam wynik jak 'probs' w' [guess, acc, probs] = svmpredict (...); '. – Richante
Nie, to tak naprawdę nie zwróciło tego samego wyniku, zwraca tylko -1s. Wiem, że to nie ma sensu, ale chciałbym się upewnić, że jest poprawny, a następnie po prostu użyję wag w oddzielnej aplikacji, aby "ręcznie" wykonać klasyfikację bez jawnego wykonywania jakichkolwiek rzeczy SVM. Wielkie dzięki, to naprawdę wąskie gardło w moim projekcie. Czy możesz to sprawdzić i zobaczyć, gdzie jest błąd? – Trup
i proszę podać rozwiązanie, jak znaleźć wektor w JAVA? –