# [R] Questions concerning function 'svm' in e1071 package

From: Van Kerckhoven, Johan <Johan.VanKerckhoven_at_econ.kuleuven.be>
Date: Mon 03 Jul 2006 - 16:52:44 EST

I have the following problem (illustrating R-code at bottom of mail): Given a training sample with binary outcomes (-1/+1), I train a linear Support Vector Machine to separate them. Afterwards, I compute the weight vector w in the usual way, and obtain the fitted values as w'x + b > 0 ==> yfitted = 1, otherwise -1.

However, upon verifying with the 'predict' method, the outcomes do not match up as they should. I've already tried to find information concerning this issue on the R-help board, but to no avail. Can any of you point me in the right direction?

Signed,

Johan Van Kerckhoven
ORSTAT and University Center of Statistics
Katholieke Universiteit Leuven

#initialization of the problem

rm(list=ls())

library(e1071)

set.seed(2)

```n = 50
d = 4
p = 0.5

```

x = matrix(rnorm(n*d), ncol=d)

mushift = c(1, -1, rep(0, d-2))

y = runif(n) > p
y = factor(2*y - 1)

x = x - outer(rep(1, n), mushift)
x[y == 1, ] = x[y == 1] + 2*outer(rep(1, sum(y == 1)), mushift)

svclass = svm(x, y, scale=FALSE, kernel="linear")

#Computation of the weight vector

w = t(svclass\$coefs) %*% svclass\$SV
if (y[1] == -1) {

w = -w
}

#Derivation of predicted class lavels

#Using method in documentation

yfit = (x %*% t(w) + svclass\$rho) > 0
yfit = factor(2*yfit - 1)

#Extracting them directly from the model
yfit2 = svclass\$fitted

#Display where predictions differ from each other
yfit != yfit2

R-help@stat.math.ethz.ch mailing list