支持向量机简介
支持向量机(support vector machines, SVM),属于监督学习,是一个二分类模型。
比如我们要对上图的点进行分类,划分的线可以有多种:
如何确定我们到底要找哪一条分界线呢?我们的解决思路是:尽可能的让分界面宽,把它想象成一条河,河的中间线作为我们最终想要的那条分界线:
&emsp综上所述,SVM的基本思想就是求解能够正确划分数据集的并且几何间隔最大的分离超平面
SVM推导
1.假定有数据集X1,X2……Xn,对应的标签有两类Y1=1,Y2=-1,分别对应class1,class2;
2.假设决策边界是一个线性可分的超平面:
对于决策边界,我们的约束条件是间隔尽可能的大而且分类效果要分的好。
显然,间隔也有很多种选择,我们要做的就是选择尽可能宽的间隔,可以看到上图的margin比下图的margin更大,我们选择large margin,这样模型犯错的几率会更小,鲁棒性也就更高。
3.支持向量
既然名字里提到了支持向量support vector,这又是个什么呢?既然我们要找边界,那么就会有确定边界的几个点,这些点在SVM中就是下图中红点所示的样本点:
显然,虚线上的点到划分超平面的距离都是一样的,这几个点共同确定了超平面的位置,因此这几个点就是support vectors。
4.SVM的数学模型
既然我们知道支持向量确定超平面的位置,那么我们需要求支持向量到超平面的距离,让这个距离最小,就可以使margin尽可能宽。
假设分类的超平面为
(1)
两个平行的边界超平面分别为
(2)
首先,点到直线之间的距离计算公式如下:
(3)
假设超平面能将训练样本正确分类,对于(xi,yi),有以下式子:
(4)
两个异类支持向量到超平面的距离之和也就是间隔为:
(5)
其实就是两条直线
之间的距离(两条平行直线之间的距离公式此处不在赘述)。
我们要求的是在分类效果尽可能好的情况下的最大间隔,表达成数学公式是这样的:
(6)
也就是,找到能满足(4)的约束条件的参数ω和b,使得(5)最大。
其中,
是统一(4)后的结果,怎么统一的呢?(4)中两个公式左右子式相乘如下:
把这两个公式写成统一的写法就对应了:
为了最大化间隔,仅需要最大化
等价于最小化
所以(6)可以写作:
(7)
综上,我们就得到了SVM的数学模型公式。
5.求解
引入拉格朗日乘子法
(8)
在约束最优化问题中,常常利用拉格朗日对偶性将原始问题(主问题)转换成对偶问题。SVM是满足强对偶的(这里不做证明),用(8)求ω和b的偏导为0得:
(9)
将(9)代入(8)得
(10)
求出α。由于(9)中有:
α代入可得ω。α代入超平面表达式可得:
KTT条件:
对任意训练样本(xi,yi),总有αi=0或yif(xi)=1
若αi=0,则该样本不会在公式中出现,也就不会对超平面函数有影响;
若αi>0,必有yif(xi)=1,这个样本点就是一个支持向量。
也就是说支持向量机训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。
SVM分类非线性可分的点
学术界已证明低维不可分的点在高维一定可分,不可分只是dim不够,所以对于线性不可分的点,采取的办法是人工升维,升维也叫核方法 ,一般新维度点的坐标是用旧维度的值按某种组合表达式生成。
软间隔
软间隔的意思是允许分类有错误的点,要求不那么严格。通过引入松弛度来实现软间隔。
硬间隔要求如下:
软间隔引入松弛度如下:
C为松弛度的惩罚因子,C越大,惩罚越大,也就是越不希望有点被误分,松弛度可能的取值越小,软间隔的效果就越弱。