7.支持向量机(Support vector machines,SVM)
- 是二分类模型。学习策略是间隔最大化
- 包含三种:
- 线性可分支持向量机:训练数据线性可分,通过硬间隔最大化学习。
- 线性支持向量机:训练数据近似线性可分(有outlier点),通过软间隔最大化学习
- 非线性支持向量机:训练数据线性不可分,通过使用核技巧及软间隔最大化学习
7.1 线性可分支持向量机
7.1.2 概念
和感知机的区别
- 感知机利用误分类最小的策略,求得分离超平面,但此时解有无穷多个
- 线性可分支持向量机利用间隔最大化求分离超平面,解是唯一的。
支持向量机的决策函数
- 数据集T,x∈Rn,y∈{+1,−1},y为+1时,称实例为正例,反之为负例
- 学习到的分离超平面:
w∗⋅x+b∗=0
相应的决策函数为
f(x)=sign(w∗⋅x+b∗)
函数间隔
- 超平面(w,b)关于样本点(xi,yi)的函数间隔为
r^i=yi(w⋅xi+b)
- 超平面(w,b)关于样本集T的函数间隔,为所有样本点函数间隔的最小值
r^=i=1,2,⋯,Nminr^i
几何间隔
令∣∣w∣∣=1
- 超平面(w,b)关于样本点(xi,yi)的几何间隔为
ri=yi(∣∣w∣∣w⋅xi+∣∣w∣∣b)
- 超平面(w,b)关于样本集T的函数间隔,为所有样本点函数间隔的最小值
r=i=1,2,⋯,Nminri
支持向量
- 支持向量:在线性可分的情况下,训练数据集的样本点中与分离超平距离最近的样本点实例称为支持向量。满足:
yi(w⋅xi+b)−1=0
- 支撑超平面:正例支持向量所在的超平面,w⋅x+b=1,负例支持向量所在的超平面,w⋅x+b=−1
- 间隔,两个支撑超平面的距离:∣∣w∣∣2
- 支持向量在确定分离超平面中起决定性作用。

函数间隔和几何间隔的关系
- 当∣∣w∣∣=1时,函数间隔与集合间隔相等
- 当w,b成比例改变时,函数间隔也按比例改变,但几何间隔不变
硬间隔最大化
- 支持向量机基本想法:对训练数据集找到几何间隔最大的超平面,以充分大的确认度对训练数据进行分类
- 硬间隔最大化:当训练数据线性可分时(即能找到一个线性分离超平面对每个数据都正确的分类),硬性要求每个样本点到超平面的距离>几何间隔
7.1.2 硬间隔最大化数学表示
求解目标
w,bmaxs.t.ryi(∣∣w∣∣w⋅xi+∣∣w∣∣b)⩾r,i=1,2,⋯,N
N是数据集T的数据数目,等价于
w,bmaxs.t.∣∣w∣∣r^yi(w⋅xi+b)⩾r^,i=1,2,⋯,N
由于r^可以根据w,b的比例改变而改变,那么取r^=1,上述问题等价于
w,bmins.t.21∣∣w∣∣2yi(w⋅xi+b)−1⩾0,i=1,2,⋯,N
- 由于目标函数 21∣∣w∣∣2是二次凸函数,不等式约束yi(w⋅xi+b)−1⩾0是仿射函数也是凸函数,有凸集;上述问题称为凸二次规划问题。
- 此时w,b有唯一解
拉格朗日函数
L(w,b,α)=21∣∣w∣∣2−i=1∑Nαi[yi(w⋅xi+b)]+i=1∑Nαi
其中αi⩾0,原问题为
w,bminαmaxL(w,b,α)
拉格朗日对偶问题
αmaxw,bminL(w,b,α)
- 对w,b求导,得到最小值L(α)
∂w∂L(w,b,α)∂b∂L(w,b,α)=w−i=1∑Nαiyixi=0=−i=1∑Nαiyi=0
- 带入L得到L(α)
L(α)=21i=1∑Nj=1∑Nαiαjyiyjxi⋅xj−i=1∑Nαiyi(j=1∑Nαjyjxj)⋅xi−i=1∑Nαiyib+i=1∑Nαi=−21i=1∑Nj=1∑Nαiαjyiyjxi⋅xj+i=1∑Nαi
此时对偶问题转为
αmaxs.t.−21i=1∑Nj=1∑Nαiαjyiyjxi⋅xj+i=1∑Nαii=1∑Nαiyi=0αi⩾0,i=1,2,⋯,N
- 求使L(α)最大的最优解α∗
根据下文的最小序列算法求解最优α∗值
- 根据最优解α∗,及互补松弛条件αi∗[yi(w⋅xi+b)−1]=0,得到w∗,b∗
- 当αi∗>0时,yi(w⋅xi+b)−1=0,此时样本点为支持向量
- 当yi(w⋅xi+b)−1>0时,αi∗=0,样本点不是支持向量机.
找到最优解α∗中大于0的分量,设此项index为j,得到:
w∗b∗=i=1∑Nαi∗yixi=yj−i=1∑Nαi∗yixi⋅xj
求得分离超平面w∗⋅x+b∗=0,分类决策函数f(x)=sign(w∗⋅x+b∗)
最优解
- 获得α∗
αmaxs.t.−21i=1∑Nj=1∑Nαiαjyiyjxi⋅xj+i=1∑Nαii=1∑Nαiyi=0αi⩾0,i=1,2,⋯,N
- 获得w∗,b∗(找到最优解α∗中大于0的分量,设此项index为j)
w∗b∗=i=1∑Nαi∗yixi=yj−i=1∑Nαi∗yixi⋅xj
对于α向量,支持向量(yi(w⋅xi+b)=1)对应的αi>0,其他样本(yi(w⋅xi+b)>1)对应的αi=0。所以对于w∗=∑i=1Nαi∗yixi及b∗=yj−∑i=1Nαi∗yixi⋅cj值,只由αi̸=0的样本决定,即支持向量决定。

7.2线性支持向量机
- 对于一些近似线性可分数据,由于存在一些特异点,模型不能把所有的样本都分类正确。
7.2.1软件隔最大化概念
- 所有样本点的函数间隔不能都满足大于样本集的函数间隔这一条件。
- 所以硬间隔最大化需要修改为软间隔最大化。即对每个样本点引进一个松弛变量εi⩾0
w,bmins.t.21∣∣w∣∣2+Ci=1∑Nεiyi(w⋅xi+b)⩾1−εi,i=1,2,⋯,Nεi⩾0,i=1,2,⋯,N
- 其中εi⩾0是松弛变量;C⩾0是惩罚参数,表示对松弛变量的支付代价。
- 最小化的目标是,使21∣∣w∣∣2尽可能小,即间隔尽量大,同时使误分类点的个数尽量小。
- 此时w有唯一解,b的解存在一个区间
- 线性支持向量机包含线性可分向量机(εi=0)
7.2.3 软间隔最大化数学表示
原问题
w,bmins.t.21∣∣w∣∣2+Ci=1∑Nεiyi(w⋅xi+b)⩾1−εi,i=1,2,⋯,Nεi⩾0,i=1,2,⋯,N
拉格朗日函数
L(w,b,ε,α,μ)=21∣∣w∣∣2+Ci=1∑Nεi−i=1∑Nαi[yi(w⋅xi+b)−1+εi]−i=1∑Nμiεi
其中αi⩾0,μi⩾0,原问题为
w,b,εminα,μmaxL(w,b,ε,α,μ)
拉格朗日对偶问题
α,μmaxw,b,εminL(w,b,ε,α,μ)
KKT条件
- 对w,b,ε求导,得到最小值L(α,μ)
∂w∂L(w,b,ε,α,μ)∂b∂L(w,b,ε,α,μ)∂εi∂L(w,b,ε,α,μ)=w−i=1∑Nαiyixi=0=−i=1∑Nαiyi=0=C−αi−μi=0
带入L得到
L(α,μ)=21i=1∑Nj=1∑Nαiαjyiyjxi⋅xj+Ci=1∑Nεi−i=1∑Nαiyi(j=1∑Nαjyjxj)⋅xi−i=1∑Nαiyib+i=1∑Nαi−i=1∑Nαiεii=1∑Nμiεi=−21i=1∑Nj=1∑Nαiαjyiyjxi⋅xj+i=1∑Nαi+i=1∑N(C−αi−μi)εi−i=1∑Nαiyib=−21i=1∑Nj=1∑Nαiαjyiyjxi⋅xj+i=1∑Nαi
此时对偶问题转为
αmaxs.t.−21i=1∑Nj=1∑Nαiαjyiyjxi⋅xj+i=1∑Nαii=1∑Nαiyi=0αi⩾0,i=1,2,⋯,Nμi⩾0,i=1,2,⋯,NC−αi−μi=0,i=1,2,⋯,N(即0⩽αi⩽C)
- 求使L(α)最大的最优解α∗
根据下文的最小序列算法求解最优α∗值
- 根据最优解α∗,及互补松弛条件αi∗[yi(w⋅xi+b)−1+εi]=0及μiεi=0,得到w∗,b∗
-
当0<αi∗<C时,0<μi,且εi=0,此时,yi(w⋅xi+b)−1=0.
-
但αi=C,此时μi=0,且εi>0
- 如果0<εi<1,0<yi(w⋅xi+b)<1样本点在间隔边界和分离超平面之间
-
εi=1,yi(w⋅xi+b)=0样本点在分离超平面之上
-
εi>1,yi(w⋅xi+b)<0样本点在分离超平面之误分类一侧
-
当αi=0,此时μi=C,且εi=0,yi(w⋅xi+b)>1,此时样本点是被分离超平面明确分类正确的点,对分离超平面的w,b不起作用

- 我对b有多解的直观理解:w的解是唯一的,w∗=∑i=1Nαi∗yixi,虽说w值唯一,但α的解不唯一,ε的解不唯一。假如两个点分别为正负样本点,都在间隔平面内,当间隔平面平行移动时,正负样例点距正负间隔平面距离之和是不变的。

找到最优解α∗中满足0<αi∗<C的分量,设此项index为j,得到:
w∗b∗=i=1∑Nαi∗yixi=yj−i=1∑Nαi∗yixi⋅xj
求得分离超平面w∗⋅x+b∗=0,分类决策函数f(x)=sign(w∗⋅x+b∗)
最优解
- 获得α∗
αmaxs.t.−21i=1∑Nj=1∑Nαiαjyiyjxi⋅xj+i=1∑Nαii=1∑Nαiyi=0C⩾αi⩾0,i=1,2,⋯,N
与线性可分向量机的区别在于αi的取值范围。
- 获得w∗,b∗(找到最优解α∗中满足0<αi∗<C的分量,设此项index为j)
w∗b∗=i=1∑Nαi∗yixi=yj−i=1∑Nαi∗yixi⋅xj
对于w∗=∑i=1Nαi∗yixi及b∗=yj−∑i=1Nαi∗yixi⋅cj值,只由αi̸=0的样本决定,即支持向量决定。
7.2.3合页损失
线性支持向量机的另一种解释,最小化结构化风险
i=1∑N[1−yi(w⋅xi+b)]++λ∣∣w∣∣2
- 合页损失函数:
L(y(w⋅x+b))=[1−y(w⋅x+b)]+
其中
[z]+={z,0,z>0z⩽0
当样本点被正确分类,且函数间隔(确信度)大于1时,损失0;在间隔边界另一侧的样本(分类正确但确信度不够大,或分类错误的样本),损失为1−y(w⋅x+b).
- 等价于线性支持向量机
令1−yi(w⋅xi+b)=εi,εi⩾0
那么min∑i=1N[1−yi(w⋅xi+b)]++λ∣∣w∣∣2等价于min∑i=1Nεi+λ∣∣w∣∣2取λ=2C1
等价于minC∑i=1Nεi+21∣∣w∣∣2
7.3非线性支持向量机
当分类问题非线性,利用核技巧学习
7.3.1 核技巧
- 非线性可分问题:用一个超曲面将正负例正确分开。
- 使用一个变换将原空间的数据映射到新空间,在新空间里用线性分类学习方法从训练数据中学习模型。
- 当输入空间为欧式空间或离散集合、特征空间为希尔伯特空间时,核函数表示将输入从输入空间映射到特征空间得到的特征向量之间的内积。

核函数数学表达
设X(欧式空间)是输入空间,H为特征空间(希尔伯特),如果存在一个从X到H的映射
ϕ(x):x→H
使所有的x,z∈X,核函数满足条件
K(x,z)=ϕ(x)⋅ϕ(z)
则K(x,z)为核函数,ϕ(x)为映射函数
最优解
- 获得α∗
αmaxs.t.−21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)+i=1∑Nαii=1∑Nαiyi=0C⩾αi⩾0,i=1,2,⋯,N
- 获得w∗,b∗(找到最优解α∗中满足0<αi∗<C的分量,设此项index为j)
w∗b∗=i=1∑Nαi∗yiϕ(xi)=yj−i=1∑Nαi∗yiϕ(xi)⋅ϕ(xj)=yj−i=1∑Nαi∗yiK(xi,xj)
- 分离超平面
f(x)=sign(w∗⋅ϕ(x)+b∗)=sign(i=1∑Nαi∗yiϕ(xi)⋅ϕ(x)+b∗)=sign(i=1∑Nαi∗yiK(xi,x)+b∗)
7.3.2 常用核函数
- 多项式核函数(polynomial kernel function)
K(x,z)=(x⋅z+1)p
此时分类决策函数为
f(x)=sign(i=1∑Nαi∗yi(xi⋅x+1)p+b∗)
- 高斯核函数(Gaussian kernel function)
K(x,z)=exp(−2σ2∥x−z∥2)
对应的支持向量机是高斯径向基函数(radius basis function)分类器。此时分类决策函数是
f(x)=sign(i=1∑Nαi∗yiexp(−2σ2∥xi−z∥2)+b∗)
7.4线性可分向量机、线性支持向量机、非线性支持向量机的最优解总结
线性可分向量机
- 获得α∗
αmaxs.t.−21i=1∑Nj=1∑Nαiαjyiyjxi⋅xj+i=1∑Nαii=1∑Nαiyi=0αi⩾0,i=1,2,⋯,N
- 获得w∗,b∗(找到最优解α∗中大于0的分量,设此项index为j)
w∗b∗=i=1∑Nαi∗yixi=yj−i=1∑Nαi∗yixi⋅xj
线性支持向量机
- 获得α∗
αmaxs.t.−21i=1∑Nj=1∑Nαiαjyiyjxi⋅xj+i=1∑Nαii=1∑Nαiyi=0C⩾αi⩾0,i=1,2,⋯,N
与线性可分向量机的区别在于αi的取值范围。
- 获得w∗,b∗(找到最优解α∗中满足0<αi∗<C的分量,设此项index为j)
w∗b∗=i=1∑Nαi∗yixi=yj−i=1∑Nαi∗yixi⋅xj
对于w∗=∑i=1Nαi∗yixi及b∗=yj−∑i=1Nαi∗yixi⋅cj值,只由αi̸=0的样本决定,即支持向量决定。
非线性支持向量机
αmaxs.t.−21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)+i=1∑Nαii=1∑Nαiyi=0C⩾αi⩾0,i=1,2,⋯,N
- 获得w∗,b∗(找到最优解α∗中满足0<αi∗<C的分量,设此项index为j)
w∗b∗=i=1∑Nαi∗yiϕ(xi)=yj−i=1∑Nαi∗yiϕ(xi)⋅ϕ(xj)=yj−i=1∑Nαi∗yiK(xi,xj)
区别
- 线性可分向量机利用硬间隔最大化,αi⩾0
- 线性支持向量机利用软间隔最大化,C⩾αi⩾0
- 非线性向量机利用核技巧,C⩾αi⩾0,用K(xi,xj)代替xi⋅xj
7.5序列最小最优化算法(SMO,sequential minimal optimization)
主要针对求解α的最优解
αmaxs.t.−21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)+i=1∑Nαii=1∑Nαiyi=0C⩾αi⩾0,i=1,2,⋯,N
每次选择两个α变量去优化,使所有的α变量一直满足∑i=1Nαiyi=0的条件。
KKT条件
原始条件 x∈Rnmins.t.f(x)ci(x)⩽0,i=1,2,⋯,khj(x)=0,j=1,2,⋯,l KKT条件 ∇xL(x∗,α∗,β∗)=0∇αL(x∗,α∗,β∗)=0∇βL(x∗,α∗,β∗)=0αi∗ci(x∗)=0,ci(x∗)⩽0,αi∗⩾0,hj(x∗)=0,i=1,2,⋯,ki=1,2,⋯,ki=1,2,⋯,kj=1,2,⋯,j