【sklearn】svm

sklearn的svm是基于libsvm的,分为SVC(分类)和SVR(回归)两类,目标函数和约束条件如下:



其中SVC的参数详解如下:

params:

(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;

 ps:标记为红色的一般不考虑。

 

 SVM深入浅出

 SVM的原理其实很简单,根据我们思考问题的方式由简单到复杂,大概剖析一下SVM:

 (1)假设样本是线性可分的;

 (2)样本不可分;

 不妨假设样本可以线性分开,svm的基本原理就是寻找到一个超平面y=wx+b使得两个类之间的margin达到最大值,目标函数,故目标函数就是求y=wx+b就是这个分类函数会有以下的两种情况:

 

 将(1)和(2)整理到一个得到一个表达式,这个表达式便是我们的约束条件,因为每个样本x和其分类结果y均满足该条件; 

 到此为止我们已经彻底把该问题转化成了一个数学上求最值的问题:

 

利用拉格朗日定理进行求解:


分别对w和alpha求导的:

回带入L得:






阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页