- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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!
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page