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]]