svm常用核函数介绍

时间:2024-09-25 18:06:26

这里有一篇博文介绍了,每个核函数的用途:

https://blog.****.net/batuwuhanpei/article/details/52354822

在吴恩达的课上,也曾经给出过一系列的选择核函数的方法:

1、如果特征的数量大到和样本数量差不多,则选用LR或者线性核的SVM;

2、如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数;

3、如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况。

大牛对这3点的理解:

(1)如果特征维数很高,往往线性可分(SVM解决非线性分类问题的思路就是将样本映射到更高维的特征空间中),可以采用LR或者线性核的SVM;

(2)如果样本数量很多,由于求解最优化问题的时候,目标函数涉及两两样本计算内积,使用高斯核明显计算量会大于线性核,所以手动添加一些特征,使得线性可分,然后可以用LR或者线性核的SVM;

(3)如果不满足上述两点,即特征维数少,样本数量正常,可以使用高斯核的SVM。

SVC参数解释:

(1)C: 目标函数的惩罚系数C,用来平衡分类间隔margin和错分样本的,default C = 1.0;

(2)kernel:参数选择有RBF, Linear, Poly, Sigmoid, 默认的是"RBF";

(3)degree:if you choose 'Poly' in param 2, this is effective, degree决定了多项式的最高次幂;

(4)gamma:核函数的系数('Poly', 'RBF' and 'Sigmoid'), 默认是gamma = 1 / n_features;

(5)coef0:核函数中的独立项,'RBF' and 'Poly'有效;

(6)probablity: 可能性估计是否使用(true or false);

(7)shrinking:是否进行启发式;

(8)tol(default = 1e - 3): svm结束标准的精度;

(9)cache_size: 制定训练所需要的内存(以MB为单位);

(10)class_weight: 每个类所占据的权重,不同的类设置不同的惩罚参数C, 缺省的话自适应;

(11)verbose: 跟多线程有关,不大明白啥意思具体;

(12)max_iter: 最大迭代次数,default = 1, if max_iter = -1, no limited;

(13)decision_function_shape : ‘ovo’ 一对一, ‘ovr’ 多对多  or None 无, default=None

(14)random_state :用于概率估计的数据重排时的伪随机数生成器的种子。

注意:(7),(8),(9)一般不考虑。