我想知道该coef0
参数对于多项式和 sigmoid 内核下的 SVC 有多重要。据我了解,它是截距项,只是线性回归中的一个常数,用于将函数从零偏移。但是据我所知,SVM(scikit 使用libsvm)应该找到这个值。
测试的一般范围是什么(有吗?)。例如,一般情况下C
,安全的选择是 10^-5 ... 10^5,以指数级递增。
但是对于coef0
,该值似乎高度依赖数据,我不确定如何自动为每个数据集上的每个网格搜索选择好的范围。任何指针?
首先,sigmoid 函数很少是内核。事实上,对于几乎没有参数值,已知会诱导有效内核(在 Mercer 的意义上)。
其次,coef0 不是截距项,它是核投影的一个参数,可以用来克服多项式核的重要问题之一。一般来说,只使用coef0=0应该就可以了,但是多项式核有一个问题,使用p->inf,它越来越多地分离一对点,对于<x,y>
小于1并且<a,b>
具有更大的值。这是因为小于 1 的值的幂越来越接近于 0,而大于 1 的相同值的幂增长到无穷大。您可以使用 coef0 来“缩放”您的数据,因此没有这种区别 - 您可以添加1-min <x,y>
,因此没有值小于 1 。如果你真的觉得需要调整这个参数,我建议在 [min(1-min , 0),max(<x,y>
)],其中最大值是通过所有训练集计算的。