tuning values of SVM

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

tuning values of SVM

khan123
I want to optimize the cost and sigma parameters of SVM using Caret and
PSO. The following code I am using after imported the data.

svm_obj <- function(param, maximize = FALSE) {
  mod <- train(log10(Effort) ~ ., data = tr,
               method = "svmRadial",
               preProc = c("center", "scale", "zv"),
               metric = "MAE",
               trControl = ctrl,
               tuneGrid = data.frame(C = 10^(param[1]), sigma =
10^(param[2])))
  if(maximize)
    -getTrainPerf(mod)[, "TrainRMSE"] else
      getTrainPerf(mod)[, "TrainRMSE"]
}
  num_mods <- 10

And for the PSO, the following code

library(pso)
  set.seed(45642)
  pso_res <- psoptim(par = c(0, 0), fn = svm_obj,
                     lower = c(0.2, 4), upper = c(0.1, 0.9),
                     control = list(maxit = ceiling(num_mods)))
  pso_res

Now, it gives me the result but when I try to get the optimal values of C
and sigma using pso_res$par, it gives me the values:

0.1 and 0.9

The minimum value I provided for C is 0.2 (and maximum value is 4 as shown
above), but how can it give me the optimal value 0.1, which is even lower
than the minimum provided value.

Where I am doing mistake?

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: tuning values of SVM

Bert Gunter-2
You have:

lower = c(0.2, 4), upper = c(0.1, 0.9)

Isn't this backwards? -- you need to switch lower and upper


Bert Gunter

"The trouble with having an open mind is that people keep coming along and
sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )


On Wed, Dec 11, 2019 at 1:53 AM javed khan <[hidden email]> wrote:

> I want to optimize the cost and sigma parameters of SVM using Caret and
> PSO. The following code I am using after imported the data.
>
> svm_obj <- function(param, maximize = FALSE) {
>   mod <- train(log10(Effort) ~ ., data = tr,
>                method = "svmRadial",
>                preProc = c("center", "scale", "zv"),
>                metric = "MAE",
>                trControl = ctrl,
>                tuneGrid = data.frame(C = 10^(param[1]), sigma =
> 10^(param[2])))
>   if(maximize)
>     -getTrainPerf(mod)[, "TrainRMSE"] else
>       getTrainPerf(mod)[, "TrainRMSE"]
> }
>   num_mods <- 10
>
> And for the PSO, the following code
>
> library(pso)
>   set.seed(45642)
>   pso_res <- psoptim(par = c(0, 0), fn = svm_obj,
>                      lower = c(0.2, 4), upper = c(0.1, 0.9),
>                      control = list(maxit = ceiling(num_mods)))
>   pso_res
>
> Now, it gives me the result but when I try to get the optimal values of C
> and sigma using pso_res$par, it gives me the values:
>
> 0.1 and 0.9
>
> The minimum value I provided for C is 0.2 (and maximum value is 4 as shown
> above), but how can it give me the optimal value 0.1, which is even lower
> than the minimum provided value.
>
> Where I am doing mistake?
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] 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.
>

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] 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.