Matlab libsvm - как найти коэффициенты w

Как определить, что представляет собой вектор w, то есть перпендикуляр к плоскости отрыва?

 Somnath Kadam13 апр. 2013 г., 20:07
и, пожалуйста, дайте решение, как найти вектор W в JAVA?

Ответы на вопрос(1)

Решение Вопроса

Вот, Если я правильно помню, это основано на том, какдвойная форма оптимизации СВМ отрабатывает.

model = svmtrain(...);
w = (model.sv_coef' * full(model.SVs));

И это смещение (и я действительно не помню, почему оно отрицательное):

bias = -model.rho;

Затем выполнить классификацию (для линейного SVM) для набора данных N-by-M «признаки». с N экземплярами и M функциями,

predictions = sign(features * w' + bias);

Если ядро не является линейным, то это не даст вам правильного ответа.

Для получения дополнительной информации см.Как я мог генерировать первичную переменную w линейного SVM?, из руководства по libsvm.

 13 апр. 2012 г., 17:54
это сработало для меня. Ваша модель обучена правильно? делатьw а такжеbias похожи на разумные значения, прежде чем делать с ними классификацию? Какие варианты вы передаетеsvmtrain?
 13 апр. 2012 г., 17:47
Я отредактировал свой вопрос, чтобы объяснить, хотя в действительности нет никакого смысла делать это ... он вернет точно такой же результат, какprobs в[guess, acc, probs] = svmpredict(...);.
 Trup13 апр. 2012 г., 16:33
И как именно я использую их для ручной классификации? Я говорю о 2-х классном деле.
 13 апр. 2012 г., 22:23
уф, понял. Это немного сложно!arrayfun(@(i)a.svm.sv_coef' * exp(-a.svm.Parameters(4) .* sum((repmat(features(i, :), size(a.svm.SVs, 1), 1) - a.svm.SVs).^2, 2)) - a.svm.rho, 1:numel(labels))' Идея в том, что мы запускаем функцию ядра для каждого признака + опорный вектор, затем умножаем на коэффициент SV и, наконец, добавляем смещение. Параметры (4) - это гамма-параметр.
 Trup13 апр. 2012 г., 17:50
Нет, он действительно не возвращает тот же результат, он только возвращает -1 с. Я знаю, что в этом нет никакого смысла, но я хотел бы убедиться, что это правильно, и тогда я просто использую веса в отдельном приложении для «ручного». делать классификацию без явного выполнения каких-либо вещей SVM. Большое спасибо, это действительно узкое место в моем проекте. Можете ли вы еще раз проверить это и посмотреть, где ошибка?

Ваш ответ на вопрос