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