SVM有三宝:间隔,对偶,核技巧
间隔与支持向量
给定训练集样本,分类学习最基本的想法就是基于训练集D在样本空间找到一个划分超平面,将不同类别的样本分开。但能将训练样本分开的超平面可能有很多,如何确定哪一个是最优的?
在样本空间中,划分超平面可通过如下线性方程来描述:
划分超平面可被法向量w和位移b确定。
样本空间中任意点x到超平面(w,b)的距离为:
假如超平面(w,b)能将训练样本正确分类,即对于(xi,yi),若yi=+1,则有;若yi=-1,则有
,令
支持向量
距离超平面最近的使得(6.3)成立的训练样本称为“支持向量”
间隔
两个异类支持向量到超平面的距离之和为
目的:
找到具有“最大间隔”的划分超平面,也即找到满足约束的w和b,使得间隔最大,
SVM基本型
使用拉格朗日乘子法可得其“对偶问题”
拉格朗日函数:
对偶问题,也即要求解的最终问题
模型
由于(6.6)中有不等式约束,因此上述过程需满足
KKT条件
支持向量的重要性质:
训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
为了求解6.11,采用SMO算法
SMO算法
基本思想
先固定之外的所有参数,然后求
上的极值。
由于存在约束若固定
之外的其他变量,则
可由其他变量导出。于是,SMO每次选择两个变量
和
并固定其他参数。这样,在参数初始化后,SMO不断执行如下两个步骤直至收敛:
核函数
在限时任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面。对于这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。
如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使样本可分。
表示将x映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可表示为
有
对偶问题
硬间隔
假如数据是完全的线性可分的,那么学习到的模型可以称为硬间隔支持向量机。换个说法,硬间隔指的是完全分类准确,不能存在分类错误的情况。
软间隔(近似线性可分)
允许一定量的样本分类错误。
针对的问题
线性可分的情况往往在实际生活中是一个理想状态,万一有一点噪声怎么办?
优化目标
多了一个松驰项,即允许有分类错误的点,但是尽可能的少就可以了。
用SVM如何解决多分类问题
SVM本身是一个二值分类器。如何解决多分类问题:
将多个二分类器组合起来形成一个多分类器,常见的方法有“一对多法”和“一对一法”两种。
一对多法
假设我们要把物体分成A,B,C,D四种分类,那么我们可以先把其中的一类作为分类1,其他类统一归为分类2.这样我们可以构造4种SVM,分别为以下的情况:(1)样本A作为正集,B,C,D作为负集;(2)样本B作为正集,A,C,D作为负集;(3)样本C作为正集,A,B,D作为负集;(4)样本D作为正集,A,B,C作为负集;这种方法,针对 K 个分类,需要训练 K 个分类器,分类速度较快,但训练速度较慢,因为每个分类器都需要对全部样本进行训练,而且负样本数量远大于正样本数量,会造成样本不对称的情况,而且当增加新的分类,比如第 K+1 类时,需要重新对分类器进行构造。
一对一法
我们可以在任意两类样本之间构造一个 SVM,这样针对 K 类的样本,就会有 C(k,2) 类分类器。比如我们想要划分 A、B、C 三个类,可以构造 3 个分类器: (1)分类器 1:A、B; (2)分类器 2:A、C; (3)分类器 3:B、C。当对一个未知样本进行分类时,每一个分类器都会有一个分类结果,即为 1 票,最终得票最多的类别就是整个未知样本的类别。
这样做的好处是,如果新增一类,不需要重新训练所有的 SVM,只需要训练和新增这一类样本的分类器。而且这种方式在训练单个 SVM 模型的时候,训练速度快。
但这种方法的不足在于,分类器的个数与 K 的平方成正比,所以当 K 较大时,训练和测试的时间会比较慢。
问题1:在空间上线性可分的两类点,分别向SVM分类超平面上做投影,这些点在超平面上的投影仍然是线性可分的么?
不是。
凸优化理论中的超平面分离定理:
对于不相交的两个凸集,存在一个超平面,将两个凸集分离。对于二维情况,两个凸集间距离最短两点连线的中垂线就是一个将他们分离的超平面。
可以先对线性可分的这两组点求各自的凸包,SVM求得的超平面就是两个凸包上距离最短的两点连线的中垂线。根据凸包的性质容易知道,凸包上的点要么是样本点,要么处于两个样本点的连线上。因此,两个凸包间距离最短的两个点可以分为:两点均为样本点;两边的点均在样本点的连线上;一边点为样本点,另一边的点在样本点的连线上。从几何分析可知,无论哪种情况,两类点的投影均是线性不可分的。
问题2:是否存在一组参数使SVM训练误差为0?
使用高斯核训练的SVM中,证明若给定训练集中不存在两个点在同一位置,则存在一组参数
使得该SVM的训练误差为0
根据SVM原理,SVM的预测公式为
由于不存在两个点在同一位置,所以对于任意的i!=j,有对任意i,固定
则有
对于任意预测结果
与样本真实标签
的距离小于1.注意
当训练样本为正例,则预测结果
样本被预测为正例;当训练样本为负例,预测结果
样本被预测为负例。因此所有样本的类别都被正确预测,训练误差为0.
问题3:训练误差为0的SVM分类器一定存在呢?
在问题2中找到了一组参数使得SVM的训练误差为0,但这组参数不一定是满足SVM条件的一个解。在实际训练一个不加入松弛变量的SVM模型时,是否能保证得到的SVM分类器满足训练误差为0呢?
问题2找到了一组参数使得SVM分类器的训练误差为0,本题找到一组参数满足训练误差为0,且是SVM模型的一个解。
考虑SVM模型中解的限制条件我们已经找到了一组参数使得当
现在需要找到一组参数满足更强的条件,即