支持向量机基本概念
支持向量机的基本想法:
从几何角度,对于线性可分数据集,支持向量机就是找位于两类训练样本"正中间"(或者说找距离正负样本都最远)的超平面,相比于感知机,其解是唯一的,且不偏不倚,泛化性能更好(原因是这个超平面对训练样本局部扰动的"容忍性“最好。)。如下图,最粗的那条直线。
n维超平面有几个特性:(超平面,其中w和x的维度相同)
超平面方程不唯一
法向量w和位移项b确定一个唯一超平面
法向量w垂直于超平面(缩放w,b时,若缩放倍数为负数会改变法向量方向)
法向量w指向的那一半空间为正空间,另一半为负空间
任意点x到超平面的距离公式为
几何间隔:
假设超平面(w,b)能将训练样本正确分类,即对于,若,则有若,则有w^Tx+b<0,如下
如图6.2所示,距离超平面最近的这几个训练样本点使式(6.3)的等号成立,它们被称为“支持向量”(support vector),两个异类支持向量到超平面的距离之和为
被称为"间隔"
那么到此,支持向量机的基本概念已经解说完毕。
支持向量机过程
支持向量机的模型策略就是:给定线性可分数据集X,支持向量机模型希望求得数据集X关于超平面的几何间隔γ达到最大的那个超平面,然后套上一个sign函数实现分类功能。那如何求w和b?
以下是支持向量机的优化:
支持向量机的主问题:
欲找到具有"最大间隔" 的划分超平面,也就是要找到能满足式(6.3) 中约束的参数w 和b , 使得γ 最大,即
显然,为了最大化间隔,仅需最大化|,这等价于最小化.于是,式(6.5)可重写为
这就是支持向量机(Support Vector Machine,简称SVM)的基本型.
支持向量机的拉格朗日函数和对偶函数:
备注:对偶函数是拉格朗日函数的最小值。而对偶函数实际上是求关于的最大值。
关于公式6.11,我们用SMO来解决。
软间隔
以上模型是解决线性可分的数据集,但实际中,更多解决线性不可分的数据集,因此我们允许向量机在一些样本犯点错。为此引入了”软间隔“概念。如下图.
从数学角度来说,软间隔就是允许部分样本(但要尽可能少〉不满足下式中的约束条件
因此,可以将必须严格执行的约束条件转化为具有一定灵活性的“损失",合格的损失函数要求如下:
(1)当满足约束条件时,损失为0
(2)当不满足约束条件时,损失不为0,
(3)(可选)当不满足约束条件时,损失与其违反约束条件的程度成正比
只有满足以上要求,才能保证在最小化 (min)损失的过程中,保证不满足约束条件的样本尽可能的少。
于是,我们的优化目标写为:
其中C>0是一个常数, 是“0/1损失函数”,下面的
C用来调节损失的权重,显然当C→+oo时,会迫使所有样本的损失为0,进而退化为严格执行的约束条件,退化为硬间隔,因此,本式子可以看作支持向量机的一般化形式。总之,C越大,表示第二项影响值越小,样本犯错很难,C越小,表示第二项影响值越大,更容易允许样本犯错。
然而非凸、非连续,数学性质不太好,使得式(6.29)不易直接求解.于是,人们通常用其他一些函数来代替,称为“替代损失”(surrogate loss).替代损失函数一般具有较好的数学性质,如它们通常是凸的连续函数且是的上界.图6.5给出了三种常用的替代损失函数:
若采用hinge损失,则式(6.29)变成
引入松弛变量,上述优化问题便和下述优化问题等价。,理解损失值
通过拉格朗日乘子法可得到式(6.35)的拉格朗日函数
其中是拉格朗日乘子.
支持向量回归
对样本(x, y),传统回归模型通常直接基于模型输出f(x)与真实输出y之间的差别来计算损失,当且仅当f(x)与y 完全相同时,损失才为零.
与此不同,支持向量回归(Support Vector Regression,简称SVR)假设我们能容忍f(x)与y之间最多有的偏差,即仅当f(x)与y之间的差别绝对值大于时才计算损失.如图6.6所示,这相当于以f(x)为中心,构建了一个宽度为2的间隔带,若训练样本落入此间隔带,则认为是被预测正确的.
于是,SVR问题可形式化为