间隔和支持向量
线性可分
上面的再二维界面上,两类点被一条直线完全分开,叫做线性可分。
严格的数学定义是:
D0和D1是n维欧式空间中的两个点集。如果存在n为向量w和实数b,使得所有属于D0的点xi都有wxi+b>0,而对所有属于D1的点xj都有wxj+b≤0。则,我们称D0和D1线性可分。
超平面
上面提到的,将D0和D1完全正确地区分开的wx+b=0,就是一个超平面。
以最大间隔把两类样本区分开的超平面,就是最大间隔超平面,也称为最佳超平面。
- 两类样本分别分隔在超平面两侧
- 两侧超平面最近的样本点到超平面的距离最大化了
支持向量
在支持向量机中,距离超平面最近的且满足一定条件的几个训练样本点被称为支持向量。
SVM的最优化问题
首先,我们想要最优化的是各类样本点到超平面的距离最远。
也就是,找到最大间隔超平面。
任意一个超平面可以用如下的线性方程来描述
wTx+b=0
n维空间距离是怎样计算的呢?
二维空间距离
d=2A2+B2∣Ax+By+C∣
推广到n维
d=∣∣w∣∣∣wTx+b∣∣∣w∣∣=2w12+⋯+wn2
根据支持向量的定义,是样本中距离超平面最近的点,所以所有支持向量以外的点,到超平面的距离都大于1。
{∣∣w∣∣(wTxi+b)≥d yi=1∣∣w∣∣(wTxi+b)≤−d yi=−1⇒{∣∣w∣∣d(wTxi+b)≥1 yi=1∣∣w∣∣d(wTxi+b)≤−1 yi=−1等比例改变w,b的值,对几何间隔没有影响为了方便计算,取∣∣w∣∣d=1⇒{(wTxi+b)≥1 yi=1(wTxi+b)≤−1 yi=−1⇒yi(wTxi+b)≥1函数间隔为γ^=yi(wTxi+b)几何间隔为γ=∣∣w∣∣yi(wTxi+b)=∣∣w∣∣γ^那么最优化问题就转变成了maxw,bγ=maxw,b∣∣w∣∣γ^约束条件s.t. yi(wTxi+b)≥γ^,i=1,2,⋯,n
函数间隔γ^并不影响最优化解的问题,但是当w、b成倍改变的时候函数间隔也会成倍改变,而几何间隔保持不变,对目标函数没有影响。为了方便,这里取γ^=1,而且max∣∣w∣∣1等价于min21∣∣w∣∣2,便可得到下面支持线性可分的支持向量机的最优化问题。minw,b 21∣∣w∣∣2s.t. yi(wTxi+b)≥1⇒1−yi(wTxi+b)≤0,i=1,2,⋯,n
对偶问题
求解最优化问题
可以用拉格朗日乘子法进行求解,将原本有约束的优化问题,转化为对拉格朗日函数的无约束优化问题了。
拉格朗日乘子法的定义(以三维空间为例):
L(x,y,λ)=f(x,y)+λg(x,y),λ是拉格朗日乘子
拉格朗日函数把原本的目标函数和其限制条件整合成了一个函数,这样子约束问题就不存在了,我们可以直接对该目标函数求解极值。
理解对偶问题
首先,原问题是:
minw,b21∣∣w∣∣2s.t. gi(w,b)=1−yi(wTxi+b)≤0,i=1,2,⋯,m
拉格朗日乘子法转换后,变成了:
L(w,b,λ)=21∣∣w∣∣2+i=1∑mλi[1−yi(wxi+b)]
原问题就变成了:
minw,bmaxλL(w,b,λ)s.t. λi≥0
我们首先直观的看一下,为什么转化后的下面的式子,可以替代上面的式子
由于λi≥0当1−yi(wxi+b)≥0时,maxλL(w,b,λ)是无穷,没有意义当1−yi(wxi+b)≤0时,maxλL(w,b,λ)是21∣∣w∣∣2所以min(∞,21∣∣w∣∣2)=21∣∣w∣∣2
这样就可以看出,转化后的式子,与原式,意义相同。
什么是对偶问题
对偶问题实际上就是将
minw,bmaxλL(w,b,λ)s.t. λi≥0
变成了
maxλminw,bL(w,b,λ)s.t. λi≥0
我们假设有一个函数f,我们一定有:
min maxf≥max minf
也就是说,大的里面挑出来的小的,也要比小的里面挑出来的大的要大。
这个关系实际上就是弱对偶关系,那什么是强对偶关系呢?
min maxf=max minf
我们上面实际上就是用了强对偶的关系。
如果主问题是凸优化问题,也就是说当:
- 拉格朗日函数中的f(x)和g(x)都是凸函数
- h(x)是仿射函数
- 主问题可行域中至少有一点使得不等式约束严格成立。即存在x,对所有j,使得gj(x)<0
1,2,3同时成立时,存在强对偶性。
KKT约束条件
首先我们看一下什么是KKT条件,以本节SVM为例:
什么时候KKT条件成立呢?
原问题具有强对偶性的充要条件是满足KKT条件。
上面这个式子告诉我们什么事?
直观的来讲就是说,支持向量满足1-yi(wxi+b)=0,所以λi>0即可。
而,其他向量,1-yi(wxi+b)=0<0,λI=0
求解SVM优化问题
SVM优化问题的主问题:
minw,b21∣∣w∣∣2s.t. gi(w,b)=1−yi(wxi+b)≤0,i=1,2,⋯,m
那么使用对偶算法求解线性可分的SVM步骤为:
步骤1:对主问题构造拉格朗日函数
引入拉格朗日乘子λi≥0,其中i=1,2,…,m,得到拉格朗日函数:
L(w,b,λ)=21∣∣w∣∣2+i=1∑mλi[1−yi(wxi+b)]
步骤2:求拉格朗日函数对于w,b的最小
maxλminw,bL(w,b,λ)s.t. λi≥0
最后得到结果:
w=i=1∑mλixiyii=1∑mλiyi=0
我们将这个结果代回拉格朗日函数中,得:
实际上也就是:
minw,bL(w,b,λ)=i=1∑mλi−21i=1∑mj=1∑mλiλjyiyj(xi⋅xj)
步骤3:
求解maxλminw,bL(w,b,λ)
maxλ[i=1∑mλi−21i=1∑mj=1∑mλiλjyiyj(xi⋅xj)]s.t. i=1∑mλiyi=0λi≥0,i=1,2,⋯,m
对于凸优化问题,我们习惯于求解min,而不是max,稍作转换:
minλ[21i=1∑mj=1∑mλiλjyiyj(xi⋅xj)−i=1∑mλi]s.t. i=1∑mλiyi=0λi≥0,i=1,2,⋯,m
步骤4:由对偶问题求解λ1,λ2,…,λm
设:T(λ1,λ2,⋯,λm)=21i=1∑mj=1∑mλiλjyiyj(xi⋅xj)−i=1∑mλi
问题就变成了求解T在约束条件下的最优解。
我们可以通过SMO算法求出这个最优解λ*
步骤5:由λ*求w
由步骤1已知:
w=i=1∑mλiyixi
xi、yi已知,λi*已由上一步求出,将它们代入上式,求w。
步骤6:由w求b
λ1*、λ2*、…、λm*都已经求出来了。
因为λi(1-yi(wxI+b))=0,i=1,2,…,m是整体约束条件(KKT约束条件)
又因为对于所有支持向量(xs,ys),都有1-ys(wxs+b)=0。
因此,所有大于0的λk*所对应的(xk,yK)必然是支持向量。
这样,我们就能确认哪些样本点是支持向量。
选择任意支持向量,把它和w代入:ys(wxs+b)=1,即可求出b
ys(wxs+b)=1ys(wxs)+ysb=1,左右同乘ysys2(wxs)+ys2b=ys因为ys2=1,所以,wxs+b=ys⇒b=ys−wxs
为了更加鲁棒,我们可以求出所有支持向量的均值:
b=∣S∣1s∈S∑(ys−wxs)
步骤7:求最终结果
现在w和b都求出来了
我们就能构造最大间隔超平面:wx+b=0
构造分类决策函数:f(x)=sign(wx+b)
其中,sign(·)全称为SignumFunction,定义为:
sign(x)=⎩⎪⎨⎪⎧−1 : x<0 0 : x=0+1 : x>0
将新的样本点带入到决策函数中,可以得到样本的分类
软间隔
软间隔的提出
在实际应用中,大部分情况的样本都是线性不可分的,比如
上图是部分样本点线性不可分。
针对这种情况,提出了软间隔,允许个别样本点出现在间隔带里,比如
这样就允许部分样本点不满足约束条件:yi(wxi+b)≥1
为了度量这个“软”的程度,我们针对每一个样本(xi,yi),引入一个松弛变量ξi,令ξi≥0,且yi(wxi+b)≥1-ξi
对应到上图就是:
软间隔的SVM最优化问题
优化目标就从原来的硬间隔优化目标:
minw,b21∣∣w∣∣2s.t. 1−yi(wxi+b)≤0,i=1,2,⋯,m
变成了新的软间隔优化目标:
minw,b21∣∣w∣∣2+Ci=1∑mξis.t. yi(wxi+b)≥1−ξi,i=1,2,⋯,m;ξi≥0,i=1,2,⋯,m
其中C是一个大于0的常数,若C为无穷大,则ξi必然是无穷小,否则将无法最小化主问题。
如此一来,(部分)线性不可分SVM又变成了线性可分SVM。
当C为有限值的时候,才能允许部分样本不遵守约束条件1-yi(wxi+b)≤0
我们将优化目标整理成和线性可分的形式一样,即为:
minw,b,ξ21∣∣w∣∣2+Ci=1∑mξis.t. 1−ξi−yi(wxi+b)≤0,i=1,2,⋯,m;−ξi≤0,i=1,2,⋯,m
我们开始像硬间隔SVM一样,使用对偶算法,求解优化问题
步骤1:构造拉格朗日函数
L(w,b,ξ,λ,μ)=21∣∣w∣∣2+Ci=1∑mξi+i=1∑mλi[1−ξi−yi(wxi+b)]+i=1∑m(−μiξi)λi≥0,μi≥0
其中λi和μi是拉格朗日乘子,而w、b和ξi是主问题参数。
根据主问题的对偶性,主问题的对偶问题是:
maxλ,μminw,b,ξL(w,b,ξ,λ,μ)
步骤2:最小化拉格朗日函数
首先对w、b和ξ最小化L(w,b,ξ,λ,μ)——分别对w、b和ξi求偏导,然后令导数为0,得出如下关系:
w=i=1∑mλiyixi0=i=1∑mλiyiC=λi+μi
将这些关系代入SVM主问题的拉格朗日函数,得到:
minw,b,ξL(w,b,ξ,λ,μ)=i=1∑mλi−21i=1∑mj=1∑mλiλjyiyj(xi⋅xj)
步骤3:求minw,bL(w,b,ξ,λ,μ)对λ的最大
因为上面最小化后的结果只有λ没有μ,所以只需最大化λ
maxλ,μminw,b,ξL(w,b,ξ,λ,μ)=maxλ(i=1∑mλi−21i=1∑mj=1∑mλiλjyiyj(xi⋅xj))s.t. i=1∑mλiyi=0;C−λi−μi=0;λi≥0,μi≥0;i=1,2,⋯,m
步骤4:使用SMO算法求解
将最大化问题,转化为最小化问题
maxλ(i=1∑mλi−21i=1∑mj=1∑mλiλjyiyj(xi⋅xj))=minλ(21i=1∑mj=1∑mλiλjyiyj(xi⋅xj)−i=1∑mλi)s.t. i=1∑mλiyi=0;0≤λi≤C;i=1,2,⋯,m
然后我们可以看到,实际上差别只在约束条件上,所以我们同样可使用SMO算法求解出拉格朗日乘子λ*
步骤5:求解出w和b
由w=i=1∑mλiyixi求出w
因为最终要求得到的超平面满足wx+b=0,这一点是和硬间隔SVM的超平面是一样的,因此求解过程照搬即可。
b=∣S∣1s∈S∑(ys−wxs)
其中S是支持向量的集合
在这里,会面临一个问题,就是在间隔中的样本点,是不是支持向量
我们可以看到w=i=1∑mλiyixi,因此对于所有的λi>0的点都能影响到超平面本身,所以都是支持向量。
核函数
对svm来讲,好的当然是样本完全线性可分,就算差一点不是完全的我们也希望绝大部分样本点线性可分。
但是我们可能碰到一种情况,样本点完全线性不可分的,比如:
这种情况的一种解决办法就是,将二维线性不可分样本,映射到高维空间去,让样本点在高维空间线性可分,比如变成这样:
非线性SVM
对于在有限维度向量空间中线性不可分的样本,将其映射到更高维度的向量空间里,再通过间隔大化的方式,学习得到支持向量机,就是非线性 SVM。
将样本映射到的这个更高维度的新空间叫做特征空间。
用x来表示原来的样本点,用φ(x)表示x映射到特征空间之后的新向量。
那么间隔超平面可以表示为:f(x)=wφ(x)+b
由上面的线性SVM的对偶问题,此处非线性SVM的对偶问题就变成了:
min(21i=1∑mj=1∑mλiλjyiyjϕ(xi)⋅ϕ(xj)−i=1∑mλi)s.t. i=1∑mλiyi=00≤λi≤C,i=1,2,⋯,m
可以看到,和线性SVM唯一不同的就是:之前的xi和xj的内积变成了φ(xi)和φ(xj)的内积。
核函数
对于非线性函数来说,和之前不同的主要是φ(xi)和φ(xj)的内积。而由于是低维空间映射到高维空间,维度可能会很大,所以如果将全部样本的点乘全部计算好,这样的计算量太大了。
针对这个问题,我们的解决方式是先不算,用一个函数先代替,我们用
k(xi,xj)=ϕ(xi)⋅ϕ(xj)k(xi,xj)称为核函数
这样还体会不到核函数的好处,那么我们设计一个例子:
假设多项式核函数
k(x,y)=(x⋅y+1)2
带进样本
k(x,y)=(i=1∑n(xi⋅yi+1))2
展开
i=1∑n(xi2)(yi2)+i=2∑nj=1∑i−1(22xixj)(22yiyj)+i=1∑n(22xi)(22yi)+1
需要先把向量映射成
x‘=(xn2,⋯,x12,22xnxn−1,⋯,22xn,⋯,22x1,1)
然后进行计算,显然,这个映射不管是计算量还是存储量都是极大的。
但是有了核函数,就不需要做这样的映射,直接使用原样本维度的点进行计算即可。
求解非线性SVM
在有了核函数之后,非线性问题重新转换为线性问题,与之前的求解过程相似。
先根据对偶函数求解λ,然后根据λ求解w,再根据支持向量求解b。
常用的核函数
线性核函数
k(xi,xj)=xiTxj
使用时无须指定参数,它直接计算两个输入向量的内积。经过线性和函数转换的样本,特征空间与输入空间重合,相当于没有将样本映射到更高维度的空间。
很显然这是简单的核函数,实际训练、使用 SVM 的时候,在不知道用什么核的情况下,可以先 试试线性核的效果。
多项式核函数
k(xi,xj)=(γxiTxj+r)d,r>0,d≥0
需要指定三个参数γ、r、d
这是一个不平稳的核,适用于数据做了归一化的情况。
RBF核(Radial Basis Function Kernel)
k(xi,xj)=exp(−γ∣∣xi−xj∣∣2),γ>0
RBF核,又称高斯核(Gaussian Kernel),是一个核函数家族。它会将输入空间的样本以非线性的方式映射到更高维度的空间(特征空间),因此它可以处理类标签和样本属性之间是非线性关系的状况。
它有一个参数:γ,这个参数的设置非常关键。
- 如果设置过大,则整个 RBF 核会向线性核方向退化,向更高维度非线性投影的能力就会减弱
- 如果设置过小,则会使得样本中噪音的影响加大,从而干扰终 SVM 的有效性。
不过相对于多项式核的3个参数,RBF 核只有一个参数需要调,还是相对简单的。
当线性核效果不是很好时,可以用 RBF 试试。或者,很多情况下可以直接使用 RBF。
在具体应用核函数时,好针对具体问题参照前人的经验。
附录
SMO算法
SMO算法最通俗易懂的解释
拉格朗日对偶问题
SUP、INF
INF下确界,SUP上确界
KKT
对于SVM最优化问题
f:21∣∣w∣∣2,g:1−yi(wxi+b)≤0λ>0,λigi(x)=λi(1−yi(wxi+b))=0
间隔
参考链接
在超平面w⋅x+b=0确定的情况下,|w⋅x+b|可以相对地表示点x距离超平面的远
近。对于两类分类问题,如果w⋅x+b>0,则x的类别被判定为1;否则判定为-1。
所以如果y(w⋅x+b)>0,则认为x的分类结果是正确的,否则是错误的。且y(w⋅x+b)的值越大,分类结果的确信度越大。反之亦然。
函数间隔
对于一个训练样本(x(i),y(i)),定义它到超平面(w,b)的函数间隔为:γ^=y(i)(wT+x(i)+b)
我们希望函数间隔越大越好,这样分类效果好,即:
if y(i)=1,want wTx(i)+b>>0if y(i)=−1,want wTx(i)+b<<0并且有,若y(i)(wTx(i)+b)>0,则样本(x(i),y(i))分类正确。对于整个训练集,函数间隔定义为:γ^=miniγ^(i)
也就是说,对于整个训练集来说,函数间隔为所有样本中函数间隔最小的那个函数间隔。
那么问题来了
函数间隔越大, 代表我们对于分类的结果非常确定. 我们希望函数间隔越大越好. 看上去好像没什么毛病。
但这里的确有一个问题, 就是其实我们可以在不改变这个超平面的情况下可以让函数间隔任意大, 为什么?
只要我们成比增加w,b就可以达到这个目的了.
例如, 我们将w变为2w, b变为2b, 那么我们的函数间隔将会是原来的两倍, 但是超平面2wTx+2b=0与wTx+b=0是一回事.
为了解决这个问题, 我们就需要加上一些限制条件
需要将w的大小固定,如||w||=1,使得函数间隔固定。
这时的间隔也就是几何间隔
几何间隔
几何间隔就是点到超平面的距离
点(xi,yi)到直线ax+by+c=0的距离公式:d(xi,yi)=2a2+b2∣axi+byi+c∣
在二维空间中,几何间隔就是点到直线距离。
在三维及以上空间中,几何间隔就是点到超平面的距离。
而函数间隔就是上述距离公式中的分子。
几何间隔定义
γ(i)=∣∣w∣∣y(i)(wTx(i)+b)
显然,当||w||=1时,几何间隔就是函数间隔。
几何间隔与函数间隔
γ(i)=∣∣w∣∣γ^(i)
训练集到超平面的最小几何间隔
γ=miniγ(i)