How can SVM support rbf kernel?

How can SVM support rbf kernel?

I try to use rbf kernel in SVM classification in C++.

I just modify the DAALExamples code, svm_two_class_dense_batch.cpp,

Line 49: services::SharedPtr<kernel_function::KernelIface> kernel(new kernel_function::linear::Batch<>());

I change it to services::SharedPtr<kernel_function::KernelIface> kernel(new kernel_function::rbf::Batch<>());

However, the prediction result is much lower than linear kernel. Do I miss something?  Also how can I set sigma in rbf kernel used in SVM algorithm?  Thanks!

 

 

 

 

2 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hello Bin,

It is expected that with the default values of RBF parameter sigma and SVM parameter C you get different or even worse predictions than with linear kernel.

To set sigma parameter change the line with the kernel declaration to:

services::SharedPtr<kernel_function::rbf::Batch<> > kernel(new kernel_function::rbf::Batch<>());

And add this code to set sigma parameter to 100.0:

kernel->parameter.sigma = 100.0;

To get a good accuracy with RBF kernel you have to properly choose sigma and C parameters. There are many techniques that allow to find a good combination of those parameters. An example of a practical approach is a grid search among exponentially varying sequences. For example, try all combinations of sigma = (0.0001, 0.01, 1, 100, 10000) and C = (0.0001, 0.01, 1, 100, 10000).

Best regards,

Victoriya

Leave a Comment

Please sign in to add a comment. Not a member? Join today