issue of setting up C=0 when using Libsvm operator in Rapidminer
surfreta
New Altair Community Member
When using libsvm operator, I can set up C = 0. However,when I study the source code of Rapidminer, the Svm.java implements the setting up function as this
if (svm_type == svm_parameter.C_SVC || svm_type == svm_parameter.EPSILON_SVR || svm_type == svm_parameter.NU_SVR) {Looks like Rapidminer transforms 'C=0' to some other values base on the above implementation. I would like to know the underlying reason of doing this kind of transformation. SVM should allow us to setup C=0, why Rapidminer changes this to another value.
if (param.C < 0)
return "C < 0";
if (param.C == 0.0d) {
Kernel kernel = getGenericKernel(prob, param);
double c = 0.0d;
for (int i = 0; i < prob.l; i++) {
c += kernel.kernel_function(i, i);
}
c = prob.l / c;
param.C = c;
}
}
Tagged:
0
Answers
-
Hi, thanks for reporting!
Does a C value of exactly 0 make sense at all?
Anyway, as far as I know in RapidMiner a value of C=0 is a "magic value", and C is replaced by 1/(number of examples in training set) . I will create an internal issue requesting to think about this magic value and at least document it better.
Best regards,
Marius0 -
After searching the forum, the following post
http://rapid-i.com/rapidforum/index.php?topic=1962.0
discussed the same question as mine. However, I cannot find the exact reference that Ingo mentioned, which is authored by
Hastie and Tibshirani (and Friedman?)
Thank you for investigating this issue.0