ref
https://www.zhihu.com/question/21094489
https://blog.csdn.net/myarrow/article/details/51261971
Support Vector Machine, 一个普通的SVM就是一条直线罢了,用来完美划分线性可分的两类。但这又不是一条普通的直线,这是无数条可以分类的直线当中最完美的,因为它恰好在两个类的中间,距离两个类的点都一样远。而所谓的Support vector就是这些离分界线最近的『点』
1直观理解
可以说是这些vectors(主,点点)support(谓,定义)了machine(宾,分类器)…
如果是高维的点,SVM的分界线就是平面或者超平面。其实没有差,都是一刀切两块,我就统统叫直线了。
2求解
找到一个boundary
(1)距离两边一样远(2)最近的距离为support vector 到boundary的距离
可以表达为:寻找一个boundary,使得margin最大。且正确归类的点到boundary的距离都大于margin
其中距离,就是点到直线的距离;只要定义带正负号的距离,是{苹果+1}面为正{香蕉-1}面为负,互相乘上label{+1.-1},就都是正的了。
2.1 数学直观表达
2.1.1 距离表达
直线:
任意点x_0到该直线的距离为:
初中学过,二维是
,高维表达如上。
2.1.2 坐标点表达
对于n个训练点的信息(点的坐标,苹果还是香蕉)记为
2.1.3 目标函数直观表达
内层min:就是寻找n个点到直线的距离(乘上了yi转化成正的)
外层max:找到使得距离最大的w b
也可以写为:
就是为了表达方便
2.2 求解
对目标函数等价转换
2.2.1 经典表示
直接表达虽然清楚但是求解无从下手。做一些简单地等价变换(分母倒上来),w不过是个定义直线的参数
为了以后推导方便,一般写成:
margin取1 ,这个『1』就是一个常数,这样设置是为了以后的方便
这个选择的自由来自于直线的参数如果rescale成kw和kb不改变距离。
2.2.2 对偶表示
2.2.2.1 拉格朗日乘子法
把约束条件融合到目标函数中,建立拉格朗日公式
两个任务:
- ①对参数最小化L(解SVM要求)
- ②对乘子又要最大化(拉格朗日乘子法要求)
分析:
如果上面的约束条件成立,则整个求和都是非负的,则可以实现最小化L
如果约束条件不成立,又要对乘子最大化,L将很大。
求解:
① 先搞定第一个任务对w,b最小化L:
凸优化直接取导 =>置零,得到:
② 第二个任务对a最大化L,就是对偶问题了
将其带入,
2.3 核
如果香蕉和苹果不能用直线分割呢?
用直线分割的时候我们已经使用了kernel,那就是线性kernel,
如果要替换kernel那么把目标函数里面的内积全部替换成新的kernel function就好了
2.4 松弛变量
如果香蕉和苹果有交集呢?
松弛变量允许错误的分类,但是要付出代价。
图中以苹果为例,错误分类的苹果>1,在margin当中但是正确分类的苹果 0<x<1,正确分类并且在margin外面的苹果x=0
对于这一次整体的惩罚力度,要另外使用一个超参数 来衡量这一次分类的惩罚程度。