svm算法分成两个步骤
- 求出线性可分问题的解
- 将线性可分问题中得到的结论推广到非线性可分问题
线性可分的定义
对于二维空间来说,就是存在一条直线可以将样本分开
对于三维平面来说,就是存在一个平面将样本分开
问题描述
Vapnik提出:
-
如果一个数据集是线性可分的,那将存在无数个超平面将各个类别分开
-
那么哪个平面是最好的呢?
-
这个平面又是怎么画出来/得到的呢?
首先需要了解几个概念
将任意一条直线朝一侧平行的移动,直到其叉到一个或几个训练样本位置,如下图可以看到这条虚线平行的移动,直到他叉到了其中的一个或几个训练样本。
支持向量
距离超平面最近(平移超平面,最先碰到的样本点)的点叫支持向量
间隔
平行的两条直线的距离叫间隔
所以最优解/最优超平面要求满足:
-
将样本分开了类别
-
间隔最大
-
最好的平面应该在上下两个平行的平面中间,到所有支持向量的距离相等
如何求解
要求解一个问题,首先我们需要用数学的方式写出对问题的描述
问题
一个训练样本集{(Xi,Yi)},i=1~N线性可分,是指存在一个向量w和一个常数b,使得当
- 时,
- 时,
基于上文的提出,支持向量机需要寻找的是间隔最大的超平面,因此等价于求解这个最优问题
最小化:
限制条件:
解释一下以上两个是怎么来的
最小化||w||是怎么来的?
首先根据点到直线的距离公式可得
点x0到超平面的距离是
我们想要间距最大,即d最大,但是上下两边都是可变的,因而引入一个变量a缩放所求的(w,b)
与所表示的平面是同一个(式子2除以a就等于式子1,a属于实数)
引入这个变量a以后使得在支持向量上的x0有(位于直线的上方是+1,位于直线下方是-1);则
也就是说求d最大,等价于了求||w||的最小值
限制条件是怎么来的?
由于非支持向量的距离肯定大于d,则非支持向量上的点满足,那么也就是所有的向量满足;再结合y=+1或-1,得出了限制条件
线性可分条件下的支持向量机求解是凸优化的问题
凸优化就是:
1、在最小化(最大化)的要求下,
2、目标函数是一个凸函数(凹函数)
3、同时约束条件所形成的可行域集合是一个凸集。
凸优化问题一定有一个唯一的全局最优解,也就是说在最优化的问题中,如果一个问题是凸优化问题,就会把他当成是一个已经解决的问题,因为凸优化问题只有唯一的一个全局的极值,可以使用梯度下降的算法,能够非常方便的求得他的解。