9 votos

¿Cómo obtener los límites de decisión de la SVM lineal en R?

Necesito un paquete que me dé la ecuación de un modelo SVM lineal. Actualmente estoy usando e1071 así:

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

Sin embargo, no estoy seguro de cómo e1071::svm() selecciona clases positivas y negativas, por lo que creo que esto puede fastidiar con diferentes conjuntos de datos. Puede alguien confirmar cómo esta función decide qué clase es positiva y cuál es negativa?

Además, ¿hay algún paquete mejor para esto?

6voto

Gulzar Nazim Puntos 35342

Para el punto de datos $x$ su SVM calcula el valor de decisión $d$ de la siguiente manera:

d <- sum(w * x) + b

Si $d > 0$ entonces la etiqueta de $x$ es $+1$ , si no es así, es $-1$ . También puede obtener etiquetas o valores de decisión para la matriz de datos newdata diciendo

predict(m, newdata)

o

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

Tenga cuidado al utilizar el SVM del paquete e1071, véase ¿Problemas con e1071 libsvm? pregunta. Otros paquetes de SVM para R son kernlab, klaR y svmpath, véase este resumen: Máquinas de vectores soporte en R por A. Karatzoglou y D. Meyer.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X