定义
所谓线性的模型,也就是对于如下的两类点,如果存在有一条直线,能使○和×完全分开,那么称之为线性模型。我们所构建的算法,也就是要构造这么一条线。
SVM的思路是从线性模型推广到非线性模型中。
可分与不可分
若能分开,则称这个样本集为线性可分样本集。
若我们不论怎样,我们都不能画出一条直线,是○和×分开,那么成这个样本为非线性可分样本集。
对于线性可分的样本集,如果存在一条直线能够○和×,那么在空间中,一定能找到无数条直线分开○和×。
那么既然存在无数条直线,我们的算法要预测出最好的一条来。 我们能看出,2号线是较优的,因为其能容纳的各类型的样本数更多。
支持向量机的产生
vapnik认为,我们要先定义一个评价指标,对于每一条线,我们都计算这个性能指标,取这个性能指标最大的线为最优的。
性能指标:将任意一条直线平行的想两侧移动直到其能够擦到任一个样本,使得其距离d最大,且距离两边的样本都是二分之d。
在支持向量机中,我们将整个性能指标所表示的d叫间隔magin,支持向量机也就是要求得d最大的方法。
将平行线插到的向量叫做支持向量。画出这条最佳的直线,仅与支持向量有关,与其他的向量无关,因此支持向量方法适用于小样本。
我们要做出一些定义:
1、定义一些数据和标签:(x1,y1)……(xn,yn)
其中x是向量,y是标签,对于二分类问题,y只能取 -1或1,
2、线性模型
机器学习也就是通过1中的数据,将下式中的w和b确定。
所有的机器学习算法都无外乎三步,首先是确定一个模型(用数学公式表达),接下来在这个模型中留出待定的参数,最后使用训练样本确定w和b
3、线性可分
将这个约束 称为公式一
支持向量机的优化问题
(aw,ab)和(w,b)是同一平面,所以不管a是多少,整个式子的值是不会变的,那么既然要固定变量,就要把分子先固定住,分母取最小
因为缩放前后是一个平面,所以我们可以去调整W和b使得支持向量带入调整后方程等于一,这里的W和b都是缩放后的
当然,不一定要求等于1,可以是任意实数。
因此我们要求d的最大,也就是最小化下式(之所以乘二分之一,是为了方便求导)
对于这个优化问题,是一个凸优化、二次规划问题。
对于这种凸优化问题,要么无解,要么只有一个极值(上图是凸优化问题,仅有一个最优解,下图是非凸优化)