SVM简介
SVM - Support Vector Machines, 支持向量机。是二分类模型。
线性可分SVM
概念复习
输入空间:输入所有可能的取值的集合
特征向量:每个具体的输入
特征空间:所有特征向量存在的空间。特征空间可以是输入空间,也可以由输入空间映射得到。模型定义在特征空间上。
输出空间:输出所有可能的取值的集合
线性可分SVM学习目标
在特征空间找到一个分离超平面 \(wx+b=0\),并且间隔最大。
SVM与PLA区别
PLA:误分类最小策略,求得分离超平面。解不唯一。 线性可分SVM:间隔最大化,求得分离超平面。解唯一。
函数间隔和几何间隔
- 一个点距离分离超平面的远近
|wx+b|
是 分类预测的确信程度。例如将A分为0的确信度很高,而将C分为0的确信度较低 wx+b
与y
的符号一致,则分类正确- 函数间隔:
y(wx+b)
,表示分类的正确性及确信度 - 超平面的函数间隔*:
min{y(wx+b)}
- 几何间隔:规范化
||w||=1
,即为\(y(\frac{w}{||w||}\cdot x + \frac{b}{||w||})\),使得间隔固定。(因为w和b成比例增加时,超平面不会改变,但函数间隔会变大)
SVM基本算法
标准问题
算法的推导
一开始的目标是: -- 目标:求得一个x,使得margin最大 -- 条件: --- 每个点都被正确分类(
b
被塞入了w
矩阵里) --- magin是最近的点的距离从距离的理解入手,如图所示
w
的理解 -- 灰色是分割平面 -- \(x'\)和\(x''\)是平面上的两个点,则它俩满足\(w^T X' = -b\),\(w^T x'' = -b\) -- 两式相减,得到 \(w^T(x'' - x')=0\) -- 则w
垂直于平面,即w是平面的法向量 -- 那么dist是向量\(x' x''\)在w
上的投影
而
y(wx+b)>0
,则距离可以表示为:因此,新的算法目标为
归一化条件:
margin=y(wx+b)=1
,得到新目标对目标进行放缩,方便解
再将最大化变为最小化,也拿走||w||的根号
支持向量
- 在线性可分的情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例,叫做支持向量(support vector)
- 支持向量是使得约束条件等号成立的点
- 决定分离超平面时,只有支持向量起作用,而其他点不起作用
- 在H1,H2上的点就是支撑向量(很少,但很重要的点)
间隔 margin
H1,H2之间,\(margin=\frac{2}{||w||}\)
间隔边界
H1,H2
标准问题的求解
目标是二次的,条件是线性的
则这是一个二次规划问题,有固定的解
我们的标准问题:
标准二次规划问题:
系数代入: