LibSVM一类分类nu参数不是异常值的一小部分?

时间:2014-02-17 12:06:12

标签: svm libsvm

如果我错了,请纠正我,但是一类SVM理论表明,nu参数是训练数据集中异常值的上界(UB)和SV数量的下界(LB)。假设我正在使用RBF高斯核,所以通过nu参数的思想,我选择的伽玛值无关紧要,模型应该能够产生结果,这样参数nu就是训练中异常值的UB数据集?然而,通过在Matlab中尝试使用LibSVM的一些简单示例,这并不是我所观察到的:

[heart_scale_label, heart_scale_inst] = libsvmread('../heart_scale');
ind_good = (heart_scale_label==1);
heart_scale_label = heart_scale_label(ind_good);
heart_scale_inst = heart_scale_inst(ind_good);
train_data = heart_scale_inst;
train_label = heart_scale_label;
gamma= 0.01;
nu=0.01;
model = svmtrain(train_label, train_data, ['-s 2 -t 2 -n ' num2str(nu) ' -g ' num2str(gamma) ' -h 0']);
[predict_label_Tr, accuracy_Tr, dec_values_Tr] = svmpredict(train_label, train_data, model);
accuracy_Tr

使用gamma = 0.01我得到训练数据的准确度为97.50 使用gamma = 100我得到训练数据的准确度为42.50 当选择较大的伽玛时,模型是否应该过度匹配数据以获得训练数据集中相同的异常值?

1 个答案:

答案 0 :(得分:2)

其实我发现了同样的问题。 SVM的性能通常还取决于γ和nu的相互作用。如果在尝试调整另一个参数时修复一个参数,则学习曲线似乎甚至不是单调的。

我在训练准确度,测试准确度(heart_scale数据的5倍)及其差异上绘制了三张图像。 γ范围从10^(-4)10^(1),nu范围从10^(-3)10^(-1)

enter image description here

为了更清楚地观察小参数,我在γ和nu轴上实现了对数,见下图:

enter image description here

基本上,对于给定的120个数据,欠配合比过度拟合要明显得多。

修改

将epsilon值调整为1e-8以填补上图中显示的差距:

enter image description here

根本没有明显的过度拟合或不合适!由于libsvm中使用的优化算法而不是“真正的”解决方案,似乎有点反直觉,因为泛化误差对参数的依赖性......