支持向量机
支持向量机(support vector machine, SVM)是一种用于分类、回归和异常检测的有监督学习方法。按照数据集的特点,可分为3类:
- 当数据集线性可分时,通过硬间隔最大化(不容许错误分类),学习线性可分支持向量机,又叫硬间隔支持向量机(hard-margin SVM)
- 当数据集近似线性可分时,通过软间隔最大化(容许一定误差),学习线性支持向量机(linear SVM),又叫软间隔支持向量机(soft-margin SVM)
- 当数据集线性不可分时,通过核技巧(kernel method)及软间隔最大化,学习非线性支持向量机(non-linear SVM)
给定的数据集
D={(x1,y1),(x2,y2),⋯,(xN,yN}
包含 N 个样本,p 个特征。其中,第 i 个样本的特征向量为 xi=(xi1,xi2,⋯,xip)T 。目标变量 yi∈{−1,+1} 。
间隔最大化
本节讨论线性可分的数据集,即存在无数超平面,可以将正样本和负样本正确分类。从几何角度,具有最大间隔的超平面有更好的泛化性能,因为该超平面对训练样本局部扰动的容忍性最好。SVM 采用最大间隔超平面(maximal margin hyperplane)作为决策边界,此时的超平面是存在且唯一的。
分离的超平面可以写为如下形式
wTx+b=0
其中 w=(w1,w2,⋯,wp)T 为法向量,决定了超平面的方向;b 为位移项,决定了超平面与原点之间的距离。显然,超平面可被法向量 w 和位移 b 确定,下面我们将其记为 (w,b) 。
Model:
fw,b(x)=sign(wTx+b)
符号函数
sign(z)={+1−1if z⩾0if z<0
最大间隔:
距离超平面 (w,b) 最近的样本,被称为支持向量 (support vector)。如上图,设超平面两侧平行边界的方程分别为
B1:B2:wTx+b=γwTx+b=−γ
超平面 B1,B2 间的距离称为间隔(margin)
margin=∥w∥2γ
假设样本能被超平面正确分类,则
{wTxi+b⩾γwTxi+b⩽−γif yi=+1if yi=−1
可简写为
yi(wTxi+b)⩾γi=1,2,⋯,N
参数估计:由于超平面的系数经过同比例缩放不会改变这个平面,我们不妨给出约束 γ=1,从而得到唯一系数。那么最大化间隔可表示为:
w,bmaxs.t.∥w∥2yi(wTxi+b)⩾1,i=1,2,⋯,N
s.t. 是 subject to (such that) 的缩写,表示约束条件。约束为分类任务的要求。
显然,为了最大化间隔,仅需最大化 ∥w∥−1,这等价于最小化 ∥w∥2 。于是上式可重写为
w,bmins.t.21∥w∥2yi(wTxi+b)⩾1,i=1,2,⋯,N
这就是 SVM 的基本形式,是一个包含 N 个约束的凸优化问题。
对偶问题
支持向量机通常将原始问题(primal problem)转化成拉格朗日对偶问题(dual problem)来求解。首先引入 Lagrange 函数
L(w,b,α)=21wTw+i=1∑Nαi(1−yi(wTxi+b))
参数 αi⩾0 称为拉格朗日乘子(Lagrange multiplier)。根据拉格朗日对偶性,原始问题的对偶问题为
αmaxw,bminL(w,b,α)
令 L(w,b,α) 对 w 和 b 的偏导数为 0 可以得到
i=1∑Nαiyi=0w=i=1∑Nαiyixi
将上式带入拉格朗日函数,我们就可以消去 w 和 b ,得到对偶最优化问题
αmaxs.t.i=1∑Nαi−21i=1∑Nj=1∑NαiαjyiyjxiTxji=1∑Nαiyi=0αi⩾0,i=1,2,⋯,N
原问题和对偶问题等价的充要条件为其满足 KKT(Karush-Kuhn-Tucker)条件
⎩⎪⎨⎪⎧αi⩾01−yi(wTxi+b)⩽0αi(1−yi(wTxi+b))=0
解出 α 后,求出 w 和 b 即可得到模型
fw,b(x)=sign(wTx+b)=sign(i=1∑NαiyixiTx+b)
由 KKT 互补条件可知,对任意训练样本 (xi,yi), 总有 αi=0 或 yi(wTxi+b)=1。
- 若 αi=0 ,则该样本将不会在式 fw,b(x) 的求和中出现,也就不会对模型有任何影响
- 若 αi>0,则必有 yi(wTxi+b)=1 ,所对应的样本点位于最大间隔边界上,被称为支持向量。这显示出 SVM 的一个重要性质:训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关。
不难发现,求解 α 是一个二次规划问题,可使用通用的二次规划算法来求解。然而,该问题的规模正比于训练样本数,这会在实际任务中造成很大的开销。为了避开这个障碍,人们通过利用问题本身的特性,提出了很多高效算法, SMO (Sequential Minimal Optimization) 是其中典型代表。
软间隔与正则化
在前面的讨论中,假定训练样本是线性可分的,即所有样本都必须严格满足约束
yi(wTxi+b)⩾1
这称为硬间隔(hard margin)。然而,现实任务中的数据很难线性可分,这时,我们为每个样本引入松弛变量(slack variable) ξi>0 ,允许某些样本不满足约束,约束条件修改为
yi(wTxi+b)⩾1−ξi
使用软间隔(soft margin)最大化求解。
当然,在最大化间隔的同时,不满足约束的样本应尽可能少。于是,引入损失
ξi=max{0,1−yi(wTxi+b)}
每个样本都有一个对应的松弛变量, 用以表征该样本不满足严格约束的程度。上式称为hinge损失函数
hinge_loss(z)=max{0,1−z}
因此,软间隔SVM的优化目标可写为
w,b,ξmins.t.21∥w∥2+Ci=1∑Nξiyi(wTxi+b)⩾1−ξiξi⩾0,i=1,2,⋯,N
其中,C 为惩罚参数,用于控制惩罚强度。这便是线性 SVM 的基本式。
原始问题的拉格朗日函数为
L(w,b,ξ,α,η)=21wTw+Ci=1∑Nξi+i=1∑Nαi(1−ξi−yi(wTxi+b))−i=1∑Nηiξi
参数 αi⩾0,ηi 称为拉格朗日乘子。令 L(w,b,ξ,α,η) 对 w,b 和 ξ 的偏导数为 0 可以得到
i=1∑Nαiyi=0w=i=1∑Nαiyixiαi+ηi=C
将上式带入拉格朗日函数,得到拉格朗日对偶问题
αmaxs.t.i=1∑Nαi−21i=1∑Nj=1∑NαiαjyiyjxiTxji=1∑Nαiyi=00⩽αi⩽C,i=1,2,⋯,N
上式与线性可分对偶问题唯一不同的是对 αi 的约束。对软间隔支持向量机, KKT 条件要求
⎩⎪⎪⎪⎨⎪⎪⎪⎧αi⩾0,ηi⩾01−ξi−yi(wTxi+b)⩽0αi(1−ξi−yi(wTxi+b))=0ξi⩾0,ηiξi=0
解出 α,η 后,求出 w 和 b 即可得到模型
fw,b(x)=sign(wTx+b)=sign(i=1∑NαiyixiTx+b)
由 KKT 条件可知,对任意训练样本 (xi,yi), 总有 αi=0 或 yi(wTxi+b)=1−ξi。
- 若 αi=0 ,则该样本将不会在式 fw,b(x) 的求和中出现,也就不会对模型有任何影响
- 若 αi>0,则必有 yi(wTxi+b)=1−ξi ,该样本为支持向量
- 若 αi<C,则 ηi>0,进而有 ξi=0 ,即该样本恰在最大间隔边界上
- 若 αi=C,则有 ηi=0,此时若 ξi⩽1 则该样本落在最大间隔内部,若 ξi>1 则该样本被错误分类
由此可看出,软间隔支持向量机的最终模型仅与支持向量有关,即通过采用hinge 损失函数仍保持了稀疏性。
核方法
现实任务中,原始样本空间内也许并不存在一个能正确划分两类样本的超平面。对这样的问题,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。如下图,异或问题就不能线性可分
可证明,如果原始空间是有限维, 即属性数有限,那么一定存在一个高维特征空间使样本可分。
令 ϕ(x) 表示将 x 映射后的特征向量,于是,在特征空间中划分超平面所对应的模型可表示为
fw,b(x)=sign(wTϕ(x)+b)
那么最大化间隔可表示为
w,bmins.t.21∥w∥2+Ci=1∑Nξiyi(wTϕ(xi)+b)⩾1−ξiξi⩾0,i=1,2,⋯,N
其对偶问题是
αmaxs.t.i=1∑Nαi−21i=1∑Nj=1∑Nαiαjyiyjϕ(xi)Tϕ(xj)i=1∑Nαiyi=00⩽αi⩽C,i=1,2,⋯,N
求解上述问题涉及到计算 ϕ(xi)Tϕ(xj), 这是样本 xi 与 xj 映射到特征空间之后的内积。由于特征空间维数可能很高,甚至可能是无穷维,因此直接计算 ϕ(xi)Tϕ(xj) 通常是困难的。为了避开这个障碍,引入核函数(kernel function)
K(x1,x2)=ϕ(x1)Tϕ(x2)
即 xi 与 xj 在特征空间的内积等于它们在原始样本空间中通过核函数计算的结果,这称为核技巧(kernel trick)。核函数 K 的实现方法通常有比直接构建 ϕ(x) 再算点积高效很多。
于是,对偶问题可重写为
αmaxs.t.i=1∑Nαi−21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)i=1∑Nαiyi=00⩽αi⩽C,i=1,2,⋯,N
可写为矩阵形式
αmins.t.21αTQα−eTαyTα=00⩽αi⩽C,i=1,2,⋯,N
其中,e 是一个全1的 N 维向量,Q 是一个 N×N 的半正定矩阵,Qij=yiyjK(xi,xj)。
求解后即可得到
fw,b(x)=sign(wTϕ(x)+b)=sign(i=1∑NαiyiK(xi,x)+b)
通过前面的讨论可知,我们希望样本在特征空间内线性可分,因此特征空间的好坏对支持向量机的性能至关重要。需注意的是,在不知道特征映射的形式时,我们并不知道什么样的核函数是合适的,而核函数也仅是隐式地定义了
这个特征空间。于是,"核函数选择"成为支持向量机的最大变数,若核函数选择不合适,则意味着将样本映射到了一个不合适的特征空间,很可能导致性能不佳。
下面介绍几种常用的核函数
(1) 线性核函数(linear kernel function)
K(x1,x2)=x1Tx2
(2) 多项式核函数(polynomial kernel function)
K(x1,x2)=(x1Tx2+1)p
(3) 高斯核函数(Gaussian kernel function):也被称为径向基函数(radial basis function, RBF),是最常用的核函数。σ>0 为高斯核的带宽(width)。
K(x1,x2)=exp(2σ2∥x1−x2∥2)
(4) 拉普拉斯核函数(Laplace kernel function)
K(x1,x2)=exp(2σ2∥x1−x2∥)
(5) Sigmoid 核函数(Sigmoid kernel function)
K(x1,x2)=tanh(βx1Tx2+θ)

支持向量回归
支持向量分类方法可以推广到解决回归问题,这种方法称为支持向量回归(Support Vector Regression,SVR)。
给定的数据集
D={(x1,y1),(x2,y2),⋯,(xN,yN}
包含 N 个样本,p 个特征。其中,第 i 个样本的特征向量为 xi=(xi1,xi2,⋯,xip)T 。目标变量 yi∈R 。
Model:相比于线性回归用一条线来拟合训练样本, SVR采用一个以 f(x) 为中心,宽度为 2ϵ 的间隔带,来拟合训练样本。预测函数仍为
fw,b(x)=wTϕ(x)+b

落在带子内的样本不计算损失,不在带子内的样本则以偏离的程度作为损失,然后以最小化损失的方式迫使间隔带从样本最密集的地方(中心地带)穿过,进而达到拟合训练样本的目的。
为适应每个样本,引入松弛变量
ξi=max{0,∣wTϕ(xi)+b−yi∣−ϵ}
并将 ξi⩾0 作为惩罚项加入优化,惩罚那些偏离 ϵ 带的样本,ξi 表示样本远离带的程度。
因此SVR的优化问题可以写为
w,bmins.t.21∥w∥2+Ci=1∑Nξi−ϵ−ξi⩽wTϕ(xi)+b⩽ϵ+ξiξi⩾0,i=1,2,⋯,N
注释:
- 当样本在带内时,一定满足约束条件,因此代价函数中惩罚项取最小值 ξi=0
- 当样本在带外时,为满足样本位置和惩罚项最小值,约束条件则变为 ∣wTϕ(xi)+b∣=ϵ+ξi
这里我们使用了ϵ-不敏感损失函数(epsilon-insensitive), 即小于ϵ的误差被忽略了。
lossϵ(z)−=max{0,∣z∣−ϵ}

在这里不用均方误差的目的是为了和软间隔支持向量机的优化目标保持形式上的一致,这样就可以导出对偶问题引入核函数
如果考虑两边采用不同的松弛程度,可重写为
w,bmins.t.21∥w∥2+Ci=1∑N(ξi+ξi′)−ϵ−ξi′⩽wTϕ(xi)+b⩽ϵ+ξiξi⩾0,ξi′⩾0,i=1,2,⋯,N
对偶问题为
α,α′maxs.t.i=1∑Nyi(αi′−αi)−ϵ(αi′+αi)−21i=1∑Nj=1∑N(αi′−αi)(αj′−αj)K(xi,xj)i=1∑N(αi′−αi)=00⩽αi,αi′⩽C,i=1,2,⋯,N
可写为矩阵形式
α,α′mins.t.21(α−α′)TQ(α−α′)+ϵeT(α+α′)−yT(α−α′)eT(α−α′)=00⩽αi,αi′⩽C,i=1,2,⋯,N
其中,e 是一个全1的 N 维向量,Q 是一个 N×N 的半正定矩阵,Qij=K(xi,xj)。
上述过程中需满足KKT 条件,即要求
⎩⎪⎪⎪⎨⎪⎪⎪⎧αi(wTϕ(xi)+b−yi−ϵ−ξi)=0αi′(yi−wTϕ(xi)−b−ϵ−ξi′)=0αiαi′=0,ξiξi′=0(C−αi)ξi=0,(C−αi′)ξi′=0
可以看出
- 当且仅当 wTϕ(xi)+b−yi−ϵ−ξi=0 时,αi 能取非零值
- 当且仅当 yi−wTϕ(xi)−b−ϵ−ξi′=0 时,αi′ 能取非零值
换言之,仅当样本不落入间隔带中,相应的 αi 和 αi′ 才能取非零值。
- 此外,约束 wTϕ(xi)+b−yi−ϵ−ξi=0 和 yi−wTϕ(xi)−b−ϵ−ξi′=0 不能同时成立,因此 αi 和 αi′ 中至少有一个为零。
预测函数为
fw,b(x)=i=1∑N(αi−αi′)K(xi,x)+b
能使上式中的 αi−αi′=0 的样本即为 SVR 的支持向量,它们必落在 ϵ 间隔带之外。显然,SVR 的支持向量仅是训练样本的一部分,即其解仍具有稀疏性。
附录
超平面几何
超平面方程为
wTx+b=0
其中 x=(x1,x2,⋯,xp)T ,w=(w1,w2,⋯,wp)T 。
超平面的方程不唯一,同比例缩放 w,b ,仍是同一个超平面。若缩放倍数为负数,会改变法向量方向。

法向量:取超平面上任意两点 x1,x2 ,则
wTx1+b=0wTx2+b=0
上面两式相减可得
wT(x1−x2)=w⋅(x1−x2)=0
即向量 w 与超平面垂直,所以超平面 wTx+b=0 的法向量为 w 。
任意点到超平面的距离:取超平面外任意一点 x ,在超平面上的投影为 x1 ,距离为 d>0 ,则
w⋅x1+b=0w⋅(x−x1)=∥w∥⋅d
因此 x 到超平面距离
d=∥w∥∣wTx+b∣