scikit-learn
支持向量机算法库使用小结
之前通过一个系列对支持向量机
(
以下简称
SVM)
算法的原理做了一个总结,本文从实践
的角度对
scikit-learn SVM
算法库的使用做一个小结。
scikit-learn SVM
算法库封装了
libsvm
和
liblinear
的实现,仅仅重写了算法了接口部分。
1. scikit-learn SVM
算法库使用概述
scikit-learn
中
SVM
的算法库分为两类,一类是分类的算法库,包括
SVC
,
NuSVC
,和
LinearSVC 3
个类。另一类是回归算法库,包括
SVR
,
NuSVR
,和
LinearSVR 3
个类。相关的类都包
裹在
sklearn.svm
模块之中。
对于
SVC
,
NuSVC
,和
LinearSVC 3
个分类的类,
SVC
和
NuSVC
差不多,区别仅仅在于对
损失的度量方式不同,而
LinearSVC
从名字就可以看出,他是线性分类,也就是不支持各种低维
到高维的核函数,仅仅支持线性核函数,对线性不可分的数据不能使用。
同样的,对于
SVR
,
NuSVR
,和
LinearSVR 3
个回归的类,
SVR
和
NuSVR
差不多,区别也
仅仅在于对损失的度量方式不同。
LinearSVR
是线性回归,只能使用线性核函数。
我们使用这些类的时候,如果有经验知道数据是线性可以拟合的,那么使用
LinearSVC
去分类或者
LinearSVR
去回归,它们不需要我们去慢慢的调参去选择各种核函数以及对应参数,
速度也快。如果我们对数据分布没有什么经验,一般使用
SVC
去分类或者
SVR
去回归,这就需要
我们选择核函数以及对核函数调参了。
什么特殊场景需要使用
NuSVC
分类和
NuSVR
回归呢?如果我们对训练集训练的错误率或
者说支持向量的百分比有要求的时候,可以选择
NuSVC
分类和
NuSVR
。它们有一个参数来控制这
个百分比。
这些类的详细使用方法我们在下面再详细讲述。
2.
回顾
SVM
分类算法和回归算法
我们先简要回顾下
SVM
分类算法和回归算法,因为这里面有些参数对应于算法库的参数,
如果不先复习下,下面对参数的讲述可能会有些难以理解。
对于
SVM
分类算法,其原始形式是:
min
12||
w
||22+
C
∑
i
=1
mξi
min12||w||22+C∑i=1mξi