转https://blog.csdn.net/jackie_zhu/article/details/49904331
背景
分类问题中,在一个线性不可分的样本上,通常需要用到一些Non-linear的特征,把低维度空间上的样本投影到高维度上,从而使得这些样本在高维度线性可分。但是这个投影的过程通常也会有以下两个问题:
- 如果在原样本中加了太多的高次多项式的特征,首先会导致过拟合,模型的泛化能力会很差;
- 多项式组合会有指数级别的组合方式,这使得在投影后的样本空间中维度非常高,这也会消耗太多的计算资源和空间资源
为了解决上面两个问题,于是诞生了SVM,SVM有如下两个优势:
- 首先SVM是基于结构风险最小化原理,即它的VC维很小(相比于它的维度),不容易导致过拟合;(VC维是衡量模型复杂度的一个指标,VC维越大说明hypothesis空间越大,越不容易得到一个理想的模型,它和train error一起决定了泛化误差的上限)。
- 其次,利用SVM的优化过程,可以利用kernel trick,把在高纬度空间中的计算放到低纬度空间来进行,因此可以把SVM的特征投影到高纬度甚至无穷维,并且消耗很小的计算和存储资源。
接下来来介绍SVM是怎么工作的,以及它为什么有上面两个优势。本节主要介绍最佳分割平面及其求解过程以及为什么它是最佳的。
最佳分割超平面
现在假设有两类线性可分的样本,一类圈圈,一类叉叉。分类问题就是要找一个超平面,将这两类分开,但是能分割开这两类的超平面有很多,如下面的图所示。感知机算法就是随机的找到一个能够分开的超平面,它并不关心这个超平面如何。下面三个图中,直觉上感觉,第三个超平面是最理想的。
那么为什么第三个超平面是最理想的呢?原因是测试集上的样本是我们观测得到的数据,而观测到的数据和它真实分布是有一定的误差的,下面三个图中灰色的圆圈表示了每个平面能够容忍误差的大小,当误差超过这个圆圈的范围,分割面就要犯错误了,所以第三个图的容忍误差的能力是最强的。这是从直观上的一个解释,下面推导SVM的过程中会解释为什么这个是最佳的分割面。
这样,能容忍误差的能力最大的那个超平面是我们要的,定义margin为,由分割平面开始往两边推,到碰到样本点时候的距离。如下面的图所示,黄色部分即为margin。
最佳分割平面求解
符号定义如下,其中xx和ww是属于dd维空间中的点,bb是超平面的偏差,h是目标求解的hypothesis。
如果一个超平面可以完全把正负类样本分开,那么分布在超平面两侧的样本点表示成下图中的形式,那么所有样本可以用公式归纳成
假设 ρ=minn=0,1...Nyn(wTxn+b)ρ=minn=0,1...Nyn(wTxn+b) , 如果能够完全分开,则 ρ>0ρ>0 。然而在 wTx+b=0wTx+b=0 这个超平面上,对 ww 做一下scaling,即乘以或除以一个大于零的数,这个平面是不会变的。那么如果上式中对 ww 做一个除以 ρρ 的scaling,得到如下:
因此, yn(wTxn+b)>0,n=1,2...Nyn(wTxn+b)>0,n=1,2...N 和 minn=0,1...Nyn(wTxn+b)=1minn=0,1...Nyn(wTxn+b)=1 是等价的。于是,我们的优化目标变成了,在能够完全把两类点分开的前提下最大化margin。
但是margin怎么求呢,这就需要用到高中时候的几何知识了。
![这里写图片描述](https://i-blog.csdnimg.cn/blog_migrate/145f07869f29ec553b6bf2e2630f06d8.png)
假设 x′x′ 和 x′′x″ 是分割平面上的两个点,连接这两个点的向量为 wT(x′′−x′)=−b+b=0wT(x″−x′)=−b+b=0 ,推出 ww 向量和这个超平面是垂直的,那么要算 xx 到平面的距离,就是算 xx x′x′ 线段投影到 ww 方向上的长度
上面最大化margin的式子,就是最大化离平面最近的那个距离,利用 ynyn 去掉绝对值,又可以写成
上式可以利用后面等于1的条件,简化成
为了简化优化方法,最大化上面这个式子,就是最小化下式
利用 ww 的缩放,可以把上面式子写成下面二次规划(QP问题)的标准型
上面这个式子是二次规划的标准型,把它的一些参数,丢进二次规划的软件中就可以得到最佳的 ww 和 bb 了。
二次规划(QP问题)
QP问题的标准型式如下:
我们不用关心这个问题怎么借,其中需要用到比较多的数学知识,只需要知道,怎么样把这个问题的参数拿出来,丢给一些专门解QP问题的软件去解。
把上面的条件整理下, aTmamT 和 cmcm 写成矩阵的形式:
利用矩阵形式,QP问题可写成下面的形式:
我们只要求出Q,p,A,c这四个参数,就可以把它丢到解QP问题的软件中求解出 u∗u∗ 了。
对于SVM中那个优化目标的式子,我们最终要求得的 u=[bw];L=d+1u=[bw];L=d+1 ,然后把目标 12wTw12wTw 写成 12uTQu+pTu12uTQu+pTu 的形式。
这样解QP问题的四个参数就出来了
为什么最大分割面的直线是最佳的
SVM最优化函数和正则化的关系
SVM是让w的长度最短,并且让训练误差为0,而正则化是让训练误差最小,然后把w的长度限制在一个范围内。从这里可以看出SVM的hypothesis空间比正则化更小,因此可以有更好的泛化能力。
从VC维的角度看SVM
根据VC维理论泛华误差Eout=Ein+O(dvc/N)Eout=Ein+O(dvc/N),因此dvcdvc越小越好,dvcdvc代表模型复杂度,定义为这个模型能够打散的最多的点的个数。SVM最后得到的是一个margin最大的w,这个最大的w能够打散的点肯定远远小于一个没有margin限制的超平面。因此最大分割平面的模型复杂度很小,即使在高维空间中。为了更好理解margin的VC维很小,下面来举一个例子。
下面这个图中,如果没有margin限制,那么3个点可以做出8中分割超平面来
但是如果限制了最大margin,8种种的很多分割平面是不符合要求的(如下面第3个图和第4个图),如下图,因此模型的vc维也会比一般模型更小。
有理论可以证明
证明略。
总结
本文介绍了SVM的最大分割平面求解,并解释了为什么最大分割面是泛化风险最小的。
后面还会有以下几个问题
- SVM如何处理线性不可分的样本
- SVM如何利用SVM对偶问题推导出利用kernel方法把低维空间的样本推广到高维空间甚至无穷维空间中
- SVM在实际应用中如何选择参数及kernel函数
Support Vector的背后意义