目录
一、SVM理论知识
1、基础知识
SVM定义
SVM全称是
supported vector machine
(⽀持向量机),即寻找到⼀个超平⾯使样本分成两类,并且间隔最
⼤。 SVM能够执行线性或非线性分类、回归,甚至是异常值检测任务。它是机器学习领域最受欢迎的模型之⼀。SVM特别适⽤于中小型复杂数据集的分类。
简而言之,二元分类的
广义线性分类器,其决策边界是对学习样本求解的最大边距超平面,可以将问题化为一个求解凸二次规划的问题。
基础的SVM算法是一个二分类算法,至于多分类任务,可以通过多次使用SVM进行解决。
SVM相关知识
分割超平面:将上述数据集分隔开来的直线成为分隔超平面。对于二维平面来说,分隔超平面就是一条直线。对于三维及三维以上的数据来说,分隔数据的是个平面,称为超平面,也就是分类的决策边界。
间隔:点到分割面的距离,称为点相对于分割面的间隔。数据集所有点到分隔面的最小间隔的2倍,称为分类器或数据集的间隔。论文中提到的间隔多指这个间隔。SVM分类器就是要找最大的数据集间隔。
支持向量:离分隔超平面最近的那些点。
2、超平面最大间隔简介
上左图显示了三种可能的线性分类器的决策边界:
虚线所代表的模型表现非常糟糕,甚至都⽆法正确实现分类。其余两个模型在这个训练集上表现堪称完美,但是
它们的
决策边界与实例过于接近,导致在面对新实例时,表现可能不会太好
。
右图中的实线代表
SVM
分类器的决策边界
,不仅分离了两个类别,且
尽可能远离最近的训练实例
。
3、硬间隔和软间隔
硬间隔
在上⾯我们使⽤超平⾯进行分割数据的过程中,如果我们严格地让所有实例都不在最⼤间隔之间,并且位于正确的⼀ 边,这就是硬间隔分类。
硬间隔分类有两个问题
,首先,它只在
数据是线性可分离的时候才有效
;其次,
它对异常值非常敏感
。
当有⼀个额外异常值的鸢尾花数据:左图的数据根本找不出硬间隔,而右图最终显示的决策边界与我们之前所看到的无异常值时的决策边界也大不相同,可能无法很好地泛化。

软间隔
要避免这些问题,最好使用更灵活的模型。目
标是尽可能在保持最大间隔宽阔和限制间隔违例(即位于最大间隔之上,
甚至在错误的⼀边的实例)之间找到良好的平衡
,这就是软间隔分类。
要避免这些问题,最好使用更灵活的模型。⽬标是尽可能在保持间隔宽阔和限制间隔违例之间找到良好的平衡,这就是 软间隔分类。

在
Scikit-Learn
的
SVM
类中,可以通过超参数
C
来控制这个平衡:
C
值越小,则间隔越宽,但是间隔违例也会越多。上图 显示了在⼀个非线性可分离数据集上,两个软间隔SVM
分类器各自的决策边界和间隔。
左边使用了高
C
值,分类器的错误样本(间隔违例)较少,但是间隔也较小。
右边使用了低
C
值,间隔⼤了很多,但是位于间隔上的实例也更多。看起来第⼆个分类器的泛化效果更好,因为⼤多数间隔违例实际上都位于决策边界正确的⼀边,所以即便是在该训练集上,它做出的错误预测也会更少
4、SVM算法原理
是求什么
假设给定⼀个特征空间上的训练集为:
(xi,yi)是一个样本点,xi是输入特征,yi是输出指标(进行分类)
二维空间一条直线的方程为,y=ax+b,推广到n维空间,就变成了超平面方程,即
于是得到相应的决策函数为:
确定w和b的算法则称为线性分类机
是某个确定的特征空间转换函数,它的作用是将x映射到更高的维度,是后面讲到的“核函数”。
推导目标函数
要去寻找这个⽀持向量机,也就是寻找⼀个最优的超平⾯,于是建立一个目标函数。
假设
,则在样本空间中,划分超平面可通过如下线性方程来描述:
b为位移项,决定了超平面和原点之间的距离。
因此,我们把这个超平面标记为(w,b)
样本空间中任意点到超平面(w,b)的距离可写成:
假设超平面(w,b)能将训练样本正确分类,即对于
则
若
y
= +1
,则有
w x
+
b
> 0
;
若
y
= −1
,则有
w x
+
b
< 0
;
令
如图所示,距离超平⾯最近的⼏个训练样本点使上式等号成⽴,他们被称为
“
⽀持向量
"
,
两个异类⽀持向量到超平⾯的距离之和:
它被称为
“”
间隔
“”
。

欲找到具有最⼤间隔的划分超平⾯,也就是要找到能满⾜上式中约束的参数
w
和
b
,使得
γ
最⼤。
即:
显然,为了最⼤化间隔,仅需要最大化