目录
Linear Support Vector Machine线性支持向量机
Dual Support Vector Machine 对偶支持向量机
Soft-Margin Support Vector Machine
Linear Support Vector Machine线性支持向量机
通俗理解
SVM简单的说就是寻找一个超平面来分割我们的正反样本。超平面可以用二维平面的线和三维空间的面来理解。而超平面可以用w.X+b=0来表示。对于某一个点Xi来说,如果w.Xi+b>0视为正,Yi=1;反之视为负,Yi=-1。
函数间隔与几何间隔
它到超平面的距离可以近似的用|w.Xi+b|来表示(可以在二维空间画个图看看),进一步,可以用Yi.(w.Xi+b)来去掉绝对值,这就是我们的函数间隔。而函数间隔有一个特性是如果我们成比例的改变w和b,比如变成2w和2b,它的超平面是没有改变的,而函数间隔却变成了两倍。所以,函数间隔用来表示预测的正确性是可以的,但是在计算超平面的时候就不灵了,所以我们需要进一步引入几何间隔。我们还是以二维空间为例,中学知识告诉我们,
在这里我们的直线就是超平面w.X+b=0,所以我们样本点到超平面的距离就是这里我们依然用yi来去掉我们的绝对值。可见,几何间隔是不会受缩放影响的。而且当||w||=1时,函数边界等于几何边界。有了函数间隔和几何间隔的定义,再给出两个相关符号的定义,为了后面推导。
最大间隔分类器
SVM是希望求解到一个超平面可以正确划分数据集,对于线性可分的数据集而言,分离超平面可以有无穷多个,但是几何间隔最大的超平面却一定是唯一的。所以对于我们的线性可分SVM,我们的问题是求解一个最大间隔超平面,可以描述如下
,
我们希望求解释超平面,也就是w和b,我们不需要求解gama,考虑把优化问题中的gama去掉,有=/||w||,所以问题可以改写为
而前面我们说到,函数间隔的缩放不会影响超平面,也就是不会影响几何间隔,所以函数间隔的大小是不会影响我们的优化问题的,所以我们可以取,并且有,这个可以简单地从一维来理解,个人认为2次方及其以上都是可以的,取2应该是为了形成凸优化。所以最后我们的优化问题就成了
这是一个典型的二次规划(QP)问题,我们可以利用一些现成的软件和函数来求解。这就是线性可分SVM,总结一下是我们从感知认识上出发,希望满足所有的点距离分类面都尽可能远,通过推导和化简,将我们的问题转化为了标准的二次规划问题,利用现成的软件解出w和b,确定分类面。
Dual Support Vector Machine 对偶支持向量机
引入原因
前面我们说到,可以用现成软件来解出w和b,但是说得轻松,这里面有个问题就是求解复杂度。我们可以看见我们求解过程和我们的特征维度是相关的。当我们求解非线性SVM,也就是我们的数据线性不可分的时候,我们通常采取将我们的特征空间转换到一个更高维的空间Z去实现线性可分,这样就可以用我们刚得到的线性SVM解决问题了。但是在Z空间我们的维度可能是很高的,甚至是无限大的(比如高斯核)求解就变得十分困难,所以我们需要找到一个办法来解决对特征维度的依赖。因此就引入了Dual SVM(对偶svm)。
具体推导
接下来我们的推导会将x替换成z,代表从x域映射到z域(特征转换)。
回顾刚才最后的优化问题,是一个带约束的问题,在这里我们可以引入拉格朗日因子来将带条件的问题转化为非条件问题。可以得到下面这样一个函数
这里我们规定>=0,因为之前的SVM的限定条件中有,假如最优解没有满足这个条件,那么必有 >=0,此时如果对取最大值就会得到一个无限大,所以如果我们的解释满足条件的,那么取最大值的时候就会有max =0,
那么max 就会等于,而这恰好就是我们一开始SVM需要优化的目标,所以我们就可以将最开始的SVM问题转化成
这就是我们的primal problem。现在我们停下来思考一下我们的问题,是希望找到最好的w和使得任意的非负都能使最小,这个时候如果对α求偏导来寻找极值的意义是假设w和b为固定值的情况下令括号中表达式最大的α。这样是解不出w和b的,所以我们需要将这个primal problem转换为dual problem。
下面我们来推出对偶问题,对于任意固定的,一定会有
继续对这个不等式的右边取最大值,不等式依旧成立,有
可以看到,在这里对偶问题就是将min和max对调了位置。现在回到问题上,我们是希望求解w和b的,但是目前我们只是得到了原始问题的一个下界,所以如果这个 >= 是一个 = 就好了,就能通过求解对偶问题来获得原始问题的解。在二次规划中,如果满足三个条件: 1.函数是凸的 2.函数是有解的 3.条件是线性的 那么弱对偶关系>=就可以变成强对偶关系=。而SVM是满足这三点的。所以SVM问题又转换成了
先来看括号里的,这是一个对拉格朗日函数的最小化问题,我们可以通过寻找梯度为零的位置来寻找最小值。首先对参数b求偏导并令其为0可得:
也就是说我们的最优解一定满足,那么,我们就可以把这个条件放入后面计算max的条件中,并将其代入到之前的优化问题中,也就是
由此一来,我们的SVM表达式就消去了参数b,接下来我们继续对参数w求偏导,可得,即,和之前同样的道理,最优解也满足这个条件,继续代入回去,化简可得
这样一来,SVM就简化成了只有α的最佳化问题。即满足上面三个条件下,函数取最小值时α的值。其中,满足最佳化的条件就是我们常听说的KKT条件,所以我们刚说的三个条件肯定是包含在KKT条件中的,除此之外,还有一开始我们SVM原始问题中的以及一个很重要的KKT对偶互补条件,这个条件不仅能帮助我们再解出α后算出b,而且还表明SVM只有少数支持向量。所以现在我们得到了对偶问题的简化版,接下来我们继续对其进行优化,将max问题转化为min问题,再做一些整理可得
这个问题也是一个凸的二次规划问题,有N个变量和N+1个限制条件。也可以用我们之前说到的一些软件来求解。计算出α后就能之前的KKT条件计算出w和b。但是我们停下来回想一下我们将原始问题转成对偶问题的目的是什么,是希望摆脱维度d的影响,那么我们现在成功了吗?注意到我们需要最小化的表达式中有一个,这个求内积的过程中还是不得不引入d。所以我们接下来要解决Dual SVM过程中对d的依赖。
Kernel Support Vector Machine
核函数
接着前面所说,我们的问题又来到了内积的求解上。z是由x经过特征转化映射而来,如,代表的是映射关系。如果我们从x空间来看,计算主要分为两个步骤:1.进行特征转换得到和;2。计算和的内积。这种先转换再求内积的方式是必然会引入d的。那么有没有办法将两步合二为一,避开d呢?先来看一个简单的例子就明白了,对于二阶多项式转换,各种排列组合为:
注意,这里把X0=1和X1X2,X2X1都包含了进来。然后我们对这个转换做内积,可得
其中是x空间中特征向量的内积,我们突然发现变成了的一个函数,所以我们的求内积不再是和以前z空间的维度d有关,而是和如今x空间的维度相关。而x空间的维度,也就是我们的特征的个数通常是不大的。这不就正好实现了我们的目标(和z空间维度d无关)吗。而这个合并特征转换和计算内积的操作就是大名鼎鼎的核函数(Kernel Function)。
有了kernel function后,我们来看看它在SVM中是如何工作的。用大写K代表kernel function,在dual svm中,
所以我们是先直接计算出,再代入上式,就能得到q,接着就可以通过QP得到拉格朗日因子α。然后下一步就是计算b,还记得前面说得kkt对偶互补条件,这里去α>0的点,即SV,再结合之前的条件,得到:
注意公式里的下标s,代表这些点都是支持向量。这样一来b既可以用kernel function表示,而与z空间无关。最终我们要求的超平面可做如下推导:
注意这里的点是指所有的测试样本点,而α只有在SV的时候才是大于0的,其余时候都是等于0,所以计算上相对简单。
常见核函数
Polynomial Kernel
Gaussian Kernel
Comparison of Kernel
Soft-Margin Support Vector Machine
Polynomial Kernel的优点是阶数Q可以灵活设置,相比linear kernel限制更少,更贴近实际样本分布;缺点是当Q很大时,数值范围波动很大,而且参数个数较多,难以选择合适的值。
Gaussian Kernel的优点是边界更加复杂多样,能最准确地区分数据样本,数值计算波动较小,而且只有一个参数,容易选择;缺点是由于特征转换到无限维度中,w没有求解出来,计算速度要低于linear kernel,而且可能会发生过拟合。
引入原因
SVM是可能会过拟合的,原因通常有两个,一个是由于我们的SVM模型(即kernel)过于复杂,转换的维度太多,过于powerful了;另外一个是由于我们坚持要将所有的样本都分类正确,即不允许错误存在,造成模型过于复杂。
如上图所示,左边的图是线性的,虽然有几个点分类错误,但是大部分都能完全分开。右边的图是四次多项式,所有点都分类正确了,但是模型比较复杂,可能造成过拟合。直观上来说,左边的图是更合理的模型。所以从这个角度出发,考虑如何避免过拟合,可以选择允许有分类错误的点,视作noise点,但是尽量让这些点越少越好。
Soft SVM的目标和条件
根据这个想法,修改Hard-Margin SVM的目标和条件,得:
修正后的条件中,对分类正确的点,仍需满足,也就是满足最大间隔,而对于noise点则没有限制。
修改后的目标中,添加了noise的点数这一项。参数C是为了权衡large margin和noise tolerance两者间的关系。
修改后的条件是可以合并的,得:
然而这个式子有两个不足:一是,最小化目标的第二项是非线性的,不满足使用QP的条件,无法用dual或kernel svm来计算。二是,对于noise点,没有衡量错误程度,即有的离边界很远,有的很近,这里都一视同仁。所以继续修改:
我们引入新参数来表示每个点犯错误的程度,这样就满足QP形式要求。这里再注意下C,large C表示希望得到更少的分类错误,,即不惜选择窄边界也要尽可能把更多点正确分类;small C表示希望得到更宽的边界,即不惜增加错误点个数也要选择更宽的分类边界。
Dual Problem
推导soft-margin svm的dual形式,从而让QP计算变得简单,也便于引入kernel算法。soft svm原始形式如下:
接下来就和之前的一样,构造拉格朗日函数,不同的是,因为引入了,原始问题有两类条件,所以包含了两个拉格朗日因子α和β。拉格朗日函数可表示为如下形式:
经过化简和推导,最终标准的soft-margin svm的dual形式如下:
soft-margin SVM Dual与Hard-Margin SVM Dual基本一致,只有一些条件不同。Hard中α>=0,而soft中0 =< α <= C,且新的拉格朗日因子β=C-α。在QP问题中,soft-margin svm的参数α同样是N个,但是条件却从Hard SVM中的N+1变成了2N+1个,因为多了N个α的上界条件。
具体求解
在得到Soft-Margin SVM Dual的简化形式后,求解α的过程与Hard-Margin SVM Dual的过程相同。值得注意的是b的求解,在Hard中,利用的是KKT对偶互补条件,找到SV,即α>0的点,得。
但是在Soft SVM Dual中,相应的KKT对偶互补条件有两个,这是因为有两个拉格朗日因子,即:
对于第一个条件,找到SV,即α>0的点,但是由于参数的存在,还不能计算出b。再根据第二个条件,如果假设,也是α<C,则一定有,代入到第一个条件中,即得。
我们将0<α<C的点称为free SV。但是α<C这个假设就一定成立吗?一般情况下,至少存在一组SV使得α<C的概率是很大的。如果没有free SV,那么b会由许多不等式条件限制取值范围,只要找到其中满足KKT条件中的任意一个b值就行了。
参数C和α的意义
在soft svm中,不同的C对应margin也不同:
可见,C越小,margin越粗糙;C越大,则margin越精细。这完全符合对参数C的定义:C值权衡了margin和noise点。C越小,则代表能接受更多的错误分类点,则margin越粗糙;反之C越大,则代表分类错误点希望越少越好,则margin越精细。这和Gaussian SVM中的参数是类似的。
接着是α,前面已经知道0=<α<=C满足两个KKT对偶互补条件:
SVM与LR关系
优化目标和条件间的关系
前面我们介绍了soft-margin svm,用来表示margin violation(犯错值大小)。然后将有条件问题转换为对偶形式,使用QP求解。值得注意的是前面我们引入的时候比较突兀,只是从性质上定义了它,并没有说明其具体计算。下面我们就来讨论下:
换个角度看,描述的是点(Xn,Yn)距离(即margin的两边界)有多远。这里就存在两种情况:
一. violating margin,即不满足,也就是在margin内,那么可以表示为,
二. not violating margin,即点(Xn,Yn)在margin边界之外,此时 = 0.
我们可以将两种情况整合到一个表达式中,对任意点:
所以我们进一步可以把soft-margin svm的最小化问题写成如下形式:
经过这个转换之后,表征犯错误值大小的变量就被消去了,转而用一个max操作代替。现在来研究下转换后的形式,其中包含两项,第一项是w的内积,第二项是关于y,w,b,z的表达式,这有点像一种错误估计err,则类似于:
这个形式和L2 Regularization中最优化问题的表达式跟这个是类似的:
在L2 regularization中,目标是最小化训练训练误差Ein,即上式中的err,约束条件是,即L2 正则项。而在hard svm中,目标是最小化,条件是训练误差Ein为0,即他们的最小化目标和限制条件相互对调了。他们关系总结如下:
我们发现L2 Regularization和Soft-Margin SVM的形式是相同的,两个式子分别包含了参数和C。Soft-Margin SVM中的large margin对应着L2 Regularization中的short w,也就是都让hyperplanes更简单一些。我们使用特别的err来代表可以容忍犯错误的程度,即softmargin。L2 Regularization中的和Soft-Margin SVM中的C也是相互对应的, 越大,w会越小,Regularization的程度就越大;C越小, 会越大,相应的margin就越大。所以说增大C,或者减小,效果是一致的,Large-Margin等同于Regularization,都起到了防止过拟合的作用。
损失函数间的关系
二元分类中,普通的01损失是一个阶梯状函数,SVM的损失函数ERRsvm称为hinge error measure(合页损失),就是前面的
,我们将两种损失加上逻辑回归中的err function 都画出来:
可以看出,无论是Esvm还是Elr,都是Err01的上界,所以可以用来代替Err01,解决二元分类。而且两者都是凸函数,使其在最佳化问题中又更好的性质。而且当ys趋向正无穷大的时候, 和都趋向于零;当ys趋向负无穷大的时候, 和都趋向于正无穷大。正因为二者的这种相似性,我们可以把SVM看成是L2-regularized logistic regression。其实两者都是在最佳化Err01的上界而已。
Support Vetctor Regression
前面探讨了svm和LR的相似性,可以看出,求解regularized logistic regression问题等同于求解soft-margin SVM的问题。我们知道LR是能直接输出结果是正类的概率,那么soft-svm能不能也输出一个概率呢?我们直接给出模型:
其中A是缩放因子,B是平移因子。首先利用SVM解出来构造这个模型,A和B是待定系数。然后通过通用的logistic regression优化算法,通过迭代优化,得到最终的A和B。