本篇为概述,数学推导见下篇:SVM中的Mathematics —— Basic SVM 和 Soft Margin SVM
Linear SVM Classification
- 适用场合:线性可分
特点:large margin classification
hard margin classification:
- 目标/核心:要求所有的样本必须被正确分类
- 存在的问题:
- 要求训练样本必须 线性可分
- 对 Outliers 特别敏感(产生泛化能力差的问题)
- soft margin classification:
- 目标/核心:分类margin尽量大的同时使得被错分的样本尽可能少
- fewer margin violations V.S. large margin
【注意】
- SVM 对特征的 scale 非常敏感。
- 当 SVM 出现 overfitting 的情况时,可以通过 减小 惩罚因子
C
C
来 正则化。
- 与 Logistic Regression 不同,SVM 分类器并不输出样本属于各个类别的概率。
Nonlinear SVM Classfication
1. 基于特征预处理的 nonlinear SVM: polynomial features
- 优点:能够在大多数ML方法中得到应用
- 缺点:当 polynomial degree 较小时,无法处理复杂的数据集;当 polynomial degree 较大时,特征维度过大,使得模型计算极度过低。
2. Polynomial Kernel
可能获得与加了 polynomial features 一样的结果,但并不会产生特征维度爆炸。即,具有 polynomial features 的优点,同时能够解决其缺点。
polynomial degree 可以看做是一个正则化变量:overfitting 时减小 degree 取值,underfitting 是增大 degree 取值。
3. 添加相似性特征 (adding similarity features)
similarity function: measures how much each instance resembles a particular landmark (地标;里程碑). 如 Gaussian RBF(Radial Basis Function)
新增特征的数目就是landmark的数目,每一维新特征的取值即为 当前样本点与该 landmark 的相似性函数值。
【式】Gaussian RBF
landmarks 的选择方法:
- 可以把每个样本点当做一个 landmark,
- 优点:使用于大多数ML方法;增加了特征维度,因此增大了变换后特征线性可分的可能性。
- 问题:特征的维度大于等于样本数。所以当样本数很大的时候计算复杂度过高。
4. Gaussian RBF Kernel
可能获得与添加相似性度量特征相同的结果,但并不会增高特征维度。
γ γ 的取值越大,Gaussian 函数曲线越窄,每个样本的影响范围越小,决策面越不规律。
γ γ 可以看做是一个正则化变量:overfitting 时减小 γ γ 取值,underfitting 时增大 γ γ 取值。
5. 其他 kernel
String kernels:用于文本/DNA序列的分类场合。例如:string subsequence kernel 或者 基于 Levenshtein distance 的 kernel。
6. 如何选择 kernel?
- 首先尝试 linear kernel:在 scikit-learn 中,LinearSVC 要比 SVC(kernel=”linear”) 快很多,尤其在训练集或特征维度很大的情况下。
- 当训练集不是很大时,应尝试 Gaussian RBF kernel。
- 与训练集数据结构匹配的其他类型 kernel
SVM 回归
目标:使得尽可能多的点落在”street”上,同时尽量限制 margin violation 的数目。
计算复杂度
- LinearSVC / LinearSVR:
O(m×n)
O
(
m
×
n
)
- 基于 “A Dual Coordinate Descent Method for Large-scale Linear SVM,” Lin et al. (2008). 实现。
- SVC / SVR: O(m2×n) O ( m 2 × n ) ~ O(m3×n) O ( m 3 × n )
【图-1】Scikit Learn 中 SVM 分类器 不同实现的比较