Як отримати межі рішення з лінійного SVM в R?


9

Мені потрібен пакет, який може дати мені рівняння для лінійної моделі SVM. В даний час я використовую e1071 так:

library(e1071)
m = svm(data, labels, type='C', kernel='linear', cost=cost, probability=FALSE, scale=scale)
w = t(m$coefs) %*% data[m$index,]  #Weight vector
b = -model$rho #Offset

Однак я не впевнений, як e1071::svm()вибирають позитивні та негативні класи, тому думаю, що це може спричинити різні набори даних. Чи може хтось підтвердити, як ця функція вирішує, який клас є позитивним, а який - негативним?

Також, чи є кращий пакет для цього?


1
Я надав деяку інформацію щодо цього на пов'язаній нитці: Обчислення межі рішення лінійної моделі SVM .
чл

Відповіді:


1

Для точки SVM обчислює значення таким чином:xd

d <- sum(w * x) + b

Якщо то мітка дорівнює , інакше - . Ви також можете отримати мітки або значення рішення для матриці даних , сказавшиd>0x+11newdata

predict(m, newdata)

або

predict(m, newdata, decision.values = TRUE)

Будьте обережні, використовуючи SVM з пакета e1071, див. Проблема з e1071 libsvm? питання. Кілька інших пакетів SVM для R - це kernlab, klaR і svmpath, див. Цей огляд: Підтримка векторних машин у R А. Каратцоглоу та Д. Мейєра.


2
Дякую, але моє запитання стосується того, як я отримую значення w і b. Також щодо значення рішення я запитую, як e1071 вирішує, яка дана мітка є позитивною та негативною для даних тренувань, коли ви передаєте її чинникам.
рейснер

1
Я не знайомий з e1071, але я знаю SVM. Незалежно від того, чи вважається клас позитивним чи негативним, це не вплине на результат. Ви можете взяти будь-який набір даних і поміняти мітки класів, і ви все одно отримаєте такий самий результат у класифікації тестових балів (для тих же параметрів). Позитивні та негативні використовуються для визначення, чи потрапляє екземпляр праворуч від межі рішення.
karenu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.