Support Vector Classifier
在二分类时,假设我们的自变量为,因变量为
,我们的模型可以表示为
。对于
的样本点,我们把其分为label=1的一类;对于
的情况,我们把其分入label=-1这一类。可以看到,其中
是decision boundary,它是一个超平面。假如现在我们的数据在其特征空间上是线性可分的,并且我们的模型要使这些数据线性可分,可以看到会存在很多不同的
,对应不同的decision boundary。
先来看一下margin,它定义为训练集中所有样本点到decision boundary的距离的最小值。对于不同的
,我们有不同的decision boundary,所以有不同的margin。 Support Vector Classifier的目的就是要找出对应最小margin的那组参数
所对应的
。因为任何一个样本点
到超平面
的距离,可以表示为
,因为我们的样本点都会被正确分类,所以有
,又因为
,所以
,所以样本点
到超平面
的距离可表示为
,因此我们目标可以表示为
(10.1)
对上面的这个目标直接进行优化是非常困难的,我们需要对这个问题进行一点转化。首先需要注意的是,如果我们对一组参数同时乘上一个标量
,得到一组新的参数
,这两组参数定义的超平面其实是一样的。容易看出来那么任意一个样本点到
定义的平面的距离和其到
定义的平面的距离是一样的。因为我们的终极目标是找到满足(10.1)的超平面,而我们知道这时的超平面所对应的参数是无穷多的
,因为这些参数组本质上都是一样的,这时我们可以通过增加限制条件,使的参数变得唯一。比如限制的条件为
,
那么满足。(10.2)
在(10.2)中,使等号成立的那些样本点被认为是active的,其他的点被认为是inactive的。根据转化时的定义,我们看到至少有一个样本点是active的,在最大化margin之后,我们可以看到至少会有两个样本点是active的。
因为,根据(10.1),我们的目标此时变为
,等价于
。
这时我们的目标就转化为一个带约束条件的quadratic programming优化问题。
(10.3)
要求解(10.3)这个优化问题,我们先来看看Lagrange Multipliers。
Lagrange Multipliers
第一种情况
如果我们的优化问题为。我们构造新的函数
,我们的新目标是
。我们来看看新目标跟原目标其实是一致的。此时我们可以通过
来求解得到
。
是
的最大值,因为
,所以其实
,对
求最大值也就是对
求最大值,
也就是
的最大值,并且通过
满足了限制条件。所以此时
也就是原目标的解。
第二种情况
如果优化问题为。想象一下
定义了特征空间中的一块区域,如果
的最大值在区域内取得,即在
的某个地方取得,这时我们的原目标与
一致。如果
的最大值在边界处取得,即在
处的某个地方取得,此时
和
的梯度的方向必定相反。梯度是函数增长最快的那个方向,在边界处
,在区域内
,因为
从边界到区域内值在增加,所以
在边界上的梯度都是朝着区域内的方向的。而如果
在边界处的梯度也是朝着区域内,那么往区域内的方向走
的值就会增加,所以我们的
的最大值就会在区域内某个地方而肯定不会在边界上。反之,此时
的最大值在边界处取得,说明
在边界处的梯度是朝着区域外的。这时我们的原目标与
是一致的,这里
是因为在
处,因为梯度
和梯度
方向是相反地,所以需要
。
综合上面的和
两种情况,原目标等价于下面的目标
。其中这三个条件
也被称之为Karush-Kuhn-Tucker (KKT)条件。
Coming Back
言归正传,回到support vector classifier,(10.3)可以用Lagrange Multipliers转化如下
(10.4)
令,可得到
,把其带入到
中可得到
,注意这里
表示两个向量的点积。(10.4)就可以转化为
(10.5)
这里饶了一大圈,其实就是把(10.3)中关于的二次优化问题转化为(10.5)中关于
的二次优化问题。(10.3)中参数集合上共有
个变量,而(10.5)中参数集合上共有N个变量。我们知道解一个带约束的M个变量的二次优化问题的时间复杂度为
。一般情况下
, 恍惚一看,貌似费了一大把力还把问题变得复杂了。但是很多时候我们的数据不是线性可分的,如果这时我们需要把特征空间映射到高维的空间上去,这里高维甚至可能是无穷维的情况,这时
,这时可以看到通过转化求解的优势。
通过求解(10.5)我们得到。这时
对于一个任意的点
,我们有
,又因为根据前面的限制条件
。所以对于训练数据集中的每个点,要么
,要么
。对于
的那些训练点并没有在预测
中发挥作用,剩下的那些满足
的训练点被称之为support vectors,因为只有他们在预测中发挥作用。所以一旦模型训练完成,可以只保留support vectors,其余的样本点都可以扔掉了。
下面我们来看看怎么求解。假设我们support vectors的集合为
。根据这些点的定义,对于其中任意一个support vector
我们有
,这时可解得
。平滑
中所有的点,可解得
Overlapping class distributions
有时候我们的数据在特征空间中不是线性可分的,那么此时我们的模型允许有一些overlapping,这时对于训练集中的每个样本点,我们引入一个新的变量,被称之为slack variable。如果
,那么
。如果
,则
。下面是一个示意图。
可以看到表示样本点
被正确分类并且其满足
。如果
,说明样本点
被正确分类并且其满足
。如果
说明这个样本点被错误分类。
那么此时(10.2)就可以改为。这时(10.3)就转化为
这里相当于模型复杂度参数,当C很大的时候,意味着最小训练误差,几乎要使所有点的都满足
,当
,就回到在特征空间线性可分的情形。当C较小的时候,则允许适当的分类误差。
通过前面类似的转化,我们的优化目标可以变为
通过。我们可以得到
,可以看到这跟前面可分的情形是一模一样的,除了限制条件不一样而已。这时我们的优化问题转化为
对于求解得到的。这时
,明显跟可分时的表示也是一模一样的。
类似的,的那些点毫无贡献。因为有限制条件
,对于
的那些点,
。又因为限制条件
,如果
,根据前面
,可知
,又根据限制条件
,可知
。所以表明
的这些样本点满足
。而如果
,同样可得到
,
表明样本点被正确分类,而
说明其被错误分类。
因此,这时所有的样本点被称之为support vectors。support vector中
的那些点对应的
,所以
。
的求解也跟前面一模一样,只是这里所用的样本点的集合是那些满足
的样本点集。就不在此列出。
Support Vector Machines and Kernels
可以看到support vector classifier是在样本的特征空间上找到一个线性的decision boundary。同前面讨论的基变换一样,我们可以把在原特征空间下线性不可分的数据映射到新的特征空间。在新的特征空间上找到的decision boundary,然后再投影到原来的特征空间,这时在原来特征空间上的decision boundary就可能不是线性的了。SVM的强大之处在于其能够把数据映射到非常高维的空间去进行分类,虽然看起来这时计算是行不通,但是我们将看到通过使用合适的核函数,其实跟前面的support vector classifier是非常相似的。
我们的基变换可以表示为一系列的基函数。那么新的特征空间为
,每一个样本点在新的特征空间可表示为
。这时在新的特征空间上support vector classifier的模型可表示为
。可以看到,此时模型的拟合过程跟support vector classifier几乎一模一样,除了把
替换成
。因此,实际上我们根本不需要显示的定义
的形式,我们只需要定义核K,使得
就可以了。核方法的定义需要一些限制,比如计算出来的核矩阵必须是半正定的。使用核就相当于把数据通过基变换映射到了新的特征空间去计算。在SVM中一些常用的核方法如下
在新的特征空间中,如果我们定义非常大,那么在新的特征空间上几乎是线性可分的,这时会产生比较严重的overfitting,投影到原特征空间的decision boundary就会非常的扭曲。相对应的,较小的
会使得decision boundary更加的平滑。
The SVM as a Regularization Method
假设我们的模型为,我们的目标表示如下
如果使用MARS中所讨论的Hinge函数,,并且
,可以证明那么这个模型其实跟SVM就会变得一模一样了。因此Hinge损失函数
也被称之为SVM-loss。我们来看看不同的损失函数所对应的曲线,如下图
一些常见的损失函数及其所对应的模型可如下表
SVM for regression
首先来看看在原特征空间上做linear regression,类似的,我们的模型为,我们的目标表示如下
如果使用下面的损失函数,通过转化,那么我们的目标可以表示为
类似于Support vector classifier中,限制条件为,这里的限制条件为
。引入Slack variable,对一个训练集中任意一个样本点
,可以定义两个随机变量
,使得
。下面是一个示意图
这时我们的目标可以表示为
通过Lagrange Multiplier转化为
类似于前面的overlapping的support vector classifier,把对 转化为对
进行优化,求解得到
,所以
,然后模型可以表示为
。
根据限制条件 ,如果
,那么
,这表示这个样本点要么刚好满足
(
),要么
,
。类似的,如果
,那么
,这表示这个样本点要么刚好满足
(
),要么
,
。这里,我们的support vectors就是那么满足
或者
的那些样本点。
对于求解 ,我们可以使用
的那些点,因为此时根据限制条件
可知
,当然同样的原因也可以使用
的那些点,令
表示
的样本点的集合,
表示
样本点的集合。那么
Regression and Kernels
类似的,在新的特征空间上用SVM做regression,只需要找到对应的核函数即可。