Hello everybody, That is the first time that I am working on a SVM modeling and I would like to calculate by myself the result values from the SVM for each line of my database (named x_appr_svm). First I tested a linear SVM model using the e1071 package and to calculate the individual results by myself I did the next things : Retrieving the model coefficients : coef_svm<-t(svm$coefs) %*% x_appr_svm[svm$index,] Calculating the values for each line : p2<-x_appr_svm %*% t(coef_svm) - svm$rho Using the predict function to compare : p1<-attr(predict(object=svm, newdata=x_appr_svm, decision.values=T), "decision.values") --> p1 and p2 are the same. Next I tested a polynomial SVM model using the same package and the same method knowing that the model parameters are : degree=2, gamma=0.02, coef0=0.01 The calculation of the individual values becomes (I guess) : p2<-(0.02*x_appr_svm %*% t(coef_svm)+0.01)^2-svm$rho --> p1 and p2 are really different! Despite of my searching, I do not understand why or where is the problem in my second p2 formula. Do you see the mistake? Thank you for your help and have a good day, Benoit (France). [[alternative HTML version deleted]]
You could download the package code from CRAN and look yourself at what the predict function is doing. Sarah On Wed, Aug 28, 2019 at 6:35 AM PELE Beno?t (Acoss) <benoit.pele at acoss.fr> wrote:> Hello everybody, > > That is the first time that I am working on a SVM modeling and I would > like to calculate by myself the result values from the SVM for each line of > my database (named x_appr_svm). > > First I tested a linear SVM model using the e1071 package and to calculate > the individual results by myself I did the next things : > Retrieving the model coefficients : coef_svm<-t(svm$coefs) %*% > x_appr_svm[svm$index,] > Calculating the values for each line : p2<-x_appr_svm %*% t(coef_svm) - > svm$rho > Using the predict function to compare : p1<-attr(predict(object=svm, > newdata=x_appr_svm, decision.values=T), "decision.values") > --> p1 and p2 are the same. > > Next I tested a polynomial SVM model using the same package and the same > method knowing that the model parameters are : > degree=2, gamma=0.02, coef0=0.01 > The calculation of the individual values becomes (I guess) : > p2<-(0.02*x_appr_svm %*% t(coef_svm)+0.01)^2-svm$rho > --> p1 and p2 are really different! > > Despite of my searching, I do not understand why or where is the problem > in my second p2 formula. Do you see the mistake? > > Thank you for your help and have a good day, Benoit (France). > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >-- Sarah Goslee (she/her) http://www.sarahgoslee.com [[alternative HTML version deleted]]
Finally, I did not find the detail of the ?R_svmpredict? function that may be a
C program but applying the function named ?svmpred? in the svminternals.pdf
document I solved my problem.
Thank you and best regards, Benoit.
De : Sarah Goslee <sarah.goslee at gmail.com>
Envoy? : mercredi 28 ao?t 2019 12:50
? : PELE Beno?t (Acoss) <benoit.pele at acoss.fr>
Cc : R-help at r-project.org
Objet : Re: [R] SVM - calculating values problem
You could download the package code from CRAN and look yourself at what the
predict function is doing.
Sarah
On Wed, Aug 28, 2019 at 6:35 AM PELE Beno?t (Acoss) <benoit.pele at
acoss.fr<mailto:benoit.pele at acoss.fr>> wrote:
Hello everybody,
That is the first time that I am working on a SVM modeling and I would like to
calculate by myself the result values from the SVM for each line of my database
(named x_appr_svm).
First I tested a linear SVM model using the e1071 package and to calculate the
individual results by myself I did the next things :
Retrieving the model coefficients : coef_svm<-t(svm$coefs) %*%
x_appr_svm[svm$index,]
Calculating the values for each line : p2<-x_appr_svm %*% t(coef_svm) -
svm$rho
Using the predict function to compare : p1<-attr(predict(object=svm,
newdata=x_appr_svm, decision.values=T), "decision.values")
--> p1 and p2 are the same.
Next I tested a polynomial SVM model using the same package and the same method
knowing that the model parameters are :
degree=2, gamma=0.02, coef0=0.01
The calculation of the individual values becomes (I guess) :
p2<-(0.02*x_appr_svm %*% t(coef_svm)+0.01)^2-svm$rho
--> p1 and p2 are really different!
Despite of my searching, I do not understand why or where is the problem in my
second p2 formula. Do you see the mistake?
Thank you for your help and have a good day, Benoit (France).
[[alternative HTML version deleted]]
______________________________________________
R-help at r-project.org<mailto:R-help at r-project.org> mailing list -- To
UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
--
Sarah Goslee (she/her)
http://www.sarahgoslee.com
[[alternative HTML version deleted]]