SVM与感知机模型有很多相似之处,SVM主要解决的也是二分类问题,也是判别式方法,同样需要找到一个决策超平面对样本进行划分。不同的是在SVM中寻找距离正负样本间隔最大的超平面,这也是SVM优越性的表现,并且SVM很容易可以植入核方法,使得SVM可以解决非线性分类问题。
首先SVM的分类决策函数的形式与感知机模型相同:
决策超平面S为:
SVM需要找到距离正负样本间隔最大的S,那么就要定义什么是间隔。
函数间隔:
如果决策超平面是,那么点xi到S的函数间隔为:
定义超平面关于训练数据集T的函数间隔为超平面关于T中所有样本点(xi, yi)的函数间隔的最小值:
由这个定义可以看出,一个超平面关于一个数据集的函数间隔由该数据集上某点到该平面的最小函数间隔决定!
函数间隔的问题是对w和b进行翻倍,那么函数间隔也会翻倍。
所以定义几何间隔:
同样,定义一个超平面对于一个数据集的几何距离为:
函数间隔和几何间隔有如下关系:
那么接下来的问题就是如何使间隔最大化了!
最大间隔分离超平面
求使某个数据集最大间隔超平面可以看成是下面这个最优化问题:
通过上面提到的函数间隔和几何间隔的关系,,上面的最优化问题也可以写作:
由于的取值不影响最优化的解,所以可以令其值为1,又因为最大化相当于最小化,所以上面的最优化问题可以写作:
这是一个很经典的凸二次规划问题,需要使用拉格朗日乘子,反正我是不会。。。
解出w和b即求出了将正负样本分开并且间隔最大的超平面,也就得到了SVM的决策函数!
对偶算法:
使用拉格朗日算法并经过一系列推导可以得到SVM的对偶算法:
即求解最优化问题:
这个最优化问题我也是不会解的,但是其形式与感知机的对偶问题是有一定相似性的!
现在假设求出对偶问题的最优解为:,则原问题的解为:
选择的一个正分量,
对应于的实例xi,有:
即此时xi在间隔边界上,即xi是支持向量!
线性SVM和软间隔最大化
上面的SVM可以解决线性可分的二分类问题,但是可能存在这种情况,即大部分样本是线性可分的,但是存在少量的outlier,这时候就要使用软间隔最大化。求出的分离超平面仍然是线性的。
线性SVM相当于最优化:
其中,是松弛变量,表示某些点到超平面的函数间隔可以小于1,甚至是负的(在超平面的另一侧)。当然对于这样的点要进行惩罚,而就是惩罚项!
该问题的对偶问题是:
该问题的解同样是:
选择的一个分量,
注意,在使用软间隔的SVM中,支持向量就相对复杂一点,那些在最大间隔上的点和那些小于最大间隔的点和分错的点都是支持向量!
可以用下图表示:
SVM相当于是使用合页损失函数!
合页损失函数的形式如下图:
其中虚线是感知机使用的损失函数,只要分类正确损失就是0。粗实线是SVM使用的损失函数,即合页损失函数,必须大于函数间隔时,损失才是0!
因为SVM的对偶形式中出现了,这使得核方法可以很方便的植入到SVM中去!