本文是《统计学习方法》李航著学习笔记。
为了叙述方便,将support vector machines简称SVM。SVM是一种二类分类模型,利用SVM对预测实例点进行分类就是根据决策函数的符号划归正负类,下面论述过程主要是有关SVM的模型学习过程。
通常针对三种情况构建SVM学习模型:
1.)对线性可分数据集,构建硬间隔最大化的线性可分支持向量机
2.)对存在一些特异点的近似线性可分数据集,构建软间隔最大化的线性支持向量机
3.)对非线性可分数据集(只有利用非线性模型才能很好的进行分类),利用核技巧构建非线性支持向量机
SVM的建模过程主要在于利用凸优化的Lagrange对偶形式,对“间隔最大优化模型”的转化。SVM是对感知机模型的改进,感知机的内容参考http://blog.csdn.net/cymy001/article/details/77992416
—————————————————————————
在欧式空间中,点(xi,yi)到直线Ax+By+C=0的距离d为
|Axi+Byi+C|A2+B2‾‾‾‾‾‾‾‾√
参考点到直线的距离d的定义,有如下的函数间隔和几何间隔的定义。几何间隔可以看做样本点(xi,yi)到超平面wTx+b=0的距离,函数间隔可以看做对超平面wTx+b=0的系数进行归一化处理后的点到超平面距离。
函数间隔:
对给定的训练数据集T={(x1,y1),(x2,y2),⋯,(xN,yN)}(其中xi∈χ=Rn,yi∈{+1,−1})和超平面wTx+b=0,定义超平面wTx+b=0关于样本点(xi,yi)的函数间隔为
γˆi=yi(wTxi+b)
定义超平面wTx+b=0关于训练数据集T的函数间隔为超平面wTx+b=0关于T中所有样本点(xi,yi)的函数间隔的最小值
γˆ=mini=1,2,⋯,Nγˆi
几何间隔:
对给定的训练数据集T={(x1,y1),(x2,y2),⋯,(xN,yN)}(其中xi∈χ=Rn,yi∈{+1,−1})和超平面wTx+b=0,定义超平面wTx+b=0关于样本点(xi,yi)的几何间隔为
γi=yi(wTxi||w||2+b||w||2)
定义超平面wTx+b=0关于训练数据集T的几何间隔为超平面wTx+b=0关于T中所有样本点(xi,yi)的几何间隔的最小值
γ=mini=1,2,⋯,Nγi
线性可分支持向量机
定义:给定线性可分训练数据集,通过间隔最大化学习得到分离超平面
(w∗)Tx+b∗=0
称相应的分类决策函数f(x)=sign((w∗)Tx+b∗)
为线性可分支持向量机。
区别于感知机模型,SVM模型的基本想法是用“一个点距离分离超平面的远近”表示“分类预测的确信程度”,即学习目标是求一个能正确划分训练数据集,并且几何间隔最大的分离超平面,以充分大的确信度对训练数据进行分类,这里点到分离超平面的距离即用几何间隔度量。
(1.)先考虑SVM的建模和问题转化:
基于以上想法,有如下的SVM学习目标
maxw,bmini=1,⋯,Nyi(wTxi||w||2+b||w||2)
其等价表述为
maxw,bγs.t.yi(wTxi||w||2+b||w||2)≥γ,i=1,2,…,N.
考虑函数间隔和几何间隔的关系,以及函数间隔对距离影响的相对性,如果令||w||2γ=γˆ=1,则有γ=1||w||2,代入上式就有如下SVM学习优化模型
maxw,b1||w||2s.t.yi(wTxi+b)≥1,i=1,2,…,N.
再将目标函数转化成其等价极小化形式minw,b12||w||2,就有线性可分支持向量机的学习优化模型的原始问题
minw,b12||w||2s.t.yi(wTxi+b)≥1,i=1,2,…,N.
目标函数是二次型,约束条件是线性的,所以原始问题是典型的凸二次规划问题。有关原始问题凸二次规划解的存在唯一性在此不做证明,下面将利用对偶算法将SVM模型转化成更便于求解的对偶问题。
由原始问题可定义Lagrange函数:
L(w,b,α)=12||w||2−∑i=1Nαi[yi(wTxi+b)−1]
这里αi≥0是和约束条件yi(wTxi+b)−1≥0正负取值相对应的惩罚因子,在训练实例点满足原始问题的约束条件yi(wTxi+b)−1≥0时,通过反证法讨论得
12||w||2⇔maxαL(w,b,α)
所以原始问题等价于
minw,bmaxαL(w,b,α)
当存在实例点使yi(wTxi+b)>1,i=1,2,⋯,N时,原始问题与对偶问题的对偶间隙为0,从而可以根据KKT条件,通过“求解对偶问题得到的对偶问题的解”去解原始问题的解,即参数w,b。
由于原始问题是广义拉格朗日函数的极小极大问题,故其对偶问题是广义拉格朗日函数的极大极小问题
maxαminw,bL(w,b,α)
先求内层函数:
minw,bL(w,b,α)=minw,b12||w||2−∑i=1Nαi[yi(wTxi+b)−1]
由∇wL(w,b,α)=0,∇bL(w,b,α)=0得:
w=∑i=1Nαiyixi,∑i=1Nαiyi=0
代入L(w,b,α)可得
minw,bL(w,b,α)=−12∑i=1N∑j=1Nαiαjyiyj(xTixj)+∑i=1Nαi
再考虑外层函数:
maxα−12∑i=1N∑j=1Nαiαjyiyj(xTixj)+∑i=1Nαi
需要满足约束∑i=1Nαiyi=0,αi≥0,i=1,⋯,N。将目标函数转化成极小化形式,即得最终要求解的对偶问题
minα12∑i=1N∑j=1Nαiαjyiyj(xTixj)−∑i=1Nαis.t.∑i=1Nαiyi=0,αi≥0,i=1,⋯,N.
从上式可见,对偶问题的约束条件相比原始问题更易于处理。
(2.)要求模型参数w,b,接下来需要考虑的是:
A.如何求解对偶问题,解出αi;
B.如何根据αi求w,b。
对于A.问题,会在三种支持向量机模型都给出之后,进行叙述,即序列最小最优化方法sequential minimal optimization,SMO算法。
对于B.问题,是基于优化问题的一阶最优性必要条件——KKT条件推出的,具体过程如下。
由于最优超平面w≠0,所以由αi与w的关系知,必然存在j,使α∗j>0,又由KKT条件:
∇wL(w∗,b∗,a∗)=w∗−∑i=1Nα∗iyixi=0∇bL(w∗,b∗,a∗)=−∑i=1Nα∗iyi=0α∗i(yi((w∗)Txi+b∗)−1)=0,i=1,⋯,Nyi((w∗)Txi+b∗)−1≥0,i=1,⋯,Nα∗i≥0,i=1,⋯,N
从上式易解出:
w∗=∑i=1Nα∗iyixi,b∗=yj−∑i=1Nα∗iyi(xTixj)
从而可得分类决策函数f(x)=sign((w∗)Tx+b∗)。
支持向量:
对应α∗i>0的训练实例点xi∈Rn称为支持向量。由KKT条件知,对于支持向量有(w∗)Tx+b∗=±1。
—————————————————————————
线性支持向量机
对于给定的线性不可分的训练数据集,由于存在一些特异点,导致约束
yi(wTxi||w||2+b||w||2)≥γ
不是对每个i=1,2,…,N都满足。也就是说,不是每个i=1,2,…,N都有
yi(wTxi+b)≥1
这是,可以引入松弛变量ξi≥0,使
yi(wTxi+b)≥1−ξi
同时,对目标函数增加罚项∑i=1Nξi,则对应有如下线性支持向量机优化模型:
minw,b,ξ12||w||2+C∑i=1Nξis.t.yi(wTxi+b)≥1−ξi,ξi≥0,i=1,2,…,Ni=1,2,…,N.
上式就是线性支持向量机的原始问题模型。可证明w的解唯一,b的解不唯一,这是因为任何满足0<α∗j<C的αj都可以由KKT条件对应求出一个b∗。
类似线性可分支持向量机的学习过程,可以构建线性支持向量机原始问题的Lagrange函数
L(w,b,ξ,α,μ)=12||w||2+C∑i=1Nξi−∑i=1Nαi(yi(wTxi+b)−1+ξi)−∑i=1Nμiξi
对偶问题是
maxα,μminw,b,ξL(w,b,ξ,α,μ)
即
minα12∑i=1N∑j=1Nαiαjyiyj(xTixj)−∑i=1Nαis.t.∑Ni=1αiyi=0,0≤αi≤C,i=1,2,…,Ni=1,2,…,N.
至此,就完成了模型的转化工作。
当存在α∗的某个分量0<α∗j<C时,由KKT条件有
∇wL(w∗,b∗,ξ∗,α∗,μ∗)=w∗−∑i=1Nα∗iyixi=0∇bL(w∗,b∗,ξ∗,α∗,μ∗)=−∑i=1Nα∗iyi=0∇ξL(w∗,b∗,ξ∗,α∗,μ∗)=C−α∗−μ∗=0α∗i(yi((w∗)Txi+b∗)−1+ξ∗i)=0,i=1,⋯,Nμ∗iξ∗i=0yi((w∗)Txi+b∗)−1+ξ∗i≥0,i=1,⋯,Nξ∗i≥0,i=1,⋯,Nα∗i≥0,i=1,⋯,Nμ∗i≥0,i=1,⋯,N
利用以上KKT条件可求得模型参数
w∗=∑i=1Nα∗iyixi,b∗=yj−∑i=1Nyiα∗i(xTixj)
从而可得分类决策函数f(x)=sign((w∗)Tx+b∗)。
对于线性支持向量机,实例点到分离超平面的距离为1−ξi||w||2,支持向量形成的间隔边界与分离超平面的距离为1||w||2,所以训练实例点到间隔边界的距离为ξi||w||2

—————————————————————————
非线性支持向量机
对非线性可分数据集(只有利用非线性模型才能很好的进行分类),利用核技巧构建非线性支持向量机,就是使用一个映射变换将输入空间χ的数据映射到特征空间,使得数据在特征空间内线性可分或近似线性可分,从而将问题转化为前面讨论的线性可分支持向量机和线性支持向量机的求解。
在线性支持向量机中,对偶问题模型及其分类决策函数涉及到的内积包含“训练实例点xi与训练实例点xj的内积”,“预测实例点x与训练实例点xi的内积”。从输入空间χ到特征空间存在变换ϕ:将输入空间χ的内积xTixj,xTix变换成特征空间的内积ϕ(xi)Tϕ(xj),ϕ(xi)Tϕ(x),然后在特征空间中学习支持向量机模型。当ϕ是非线性函数时,从训练数据集中学习到的含有核函数的支持向量机模型就是非线性分类模型。
基于定义在χ×χ上的对称函数K(x,z),定义满足上述性质的映射
ϕ:x→K(⋅,x)
由此可定义线性组合
f(⋅)=∑i=1mαiK(⋅,xi)
所有形如f(⋅)的线性组合形成线性空间S。
对于f,g∈S,在S上定义运算
f∗g=∑i=1mαiK(⋅,xi)∗∑j=1lβjK(⋅,zj)=∑i=1m∑j=1lαiβjK(xi,zj)
可以验证运算∗为线性空间S内的一种内积运算,再对具有运算∗的线性空间S完备化,可得Hilbert空间H,在H中可得核函数(通常指“正定核”)的定义
K(⋅,x)⋅f=f(x),K(⋅,x)⋅K(⋅,z)=K(x,z)
也就是,当存在从χ到Hilbert空间H的映射ϕ,使得K(x,z)=ϕ(x)Tϕ(z)
K(x,z)就是χ×χ上的正定核。
可验证,对任意一组xi∈χ,i=1,⋯,m,函数K(x,z)形成的Gram矩阵
K=[K(xi,xj)]m×m
是半正定时,K(x,z)是正定核。
通常,使用的正定核有多项式核函数K(x,z)=(xTz+1)p;高斯核函数K(x,z)=e−||x−z||22σ2。
利用核函数可得非线性支持向量机对偶问题的模型
minα12∑i=1N∑j=1NαiαjyiyjK(xi,xj)−∑i=1Nαis.t.∑Ni=1αiyi=0,0≤αi≤C,i=1,2,…,Ni=1,2,…,N.
对应的分类决策函数为f(x)=sign(∑i=1Nα∗iyiK(x,xi)+yj−∑i=1Nα∗iyiK(xi,xj))。
—————————————————————————
SMO算法
前面提到过,该算法主要是用于求解对偶问题。
首先,给定初始的α,检验是否α的每个分类都满足KKT条件,如果都满足则得最优解α∗,如果存在不满足的分离,就选择两个分量作变量,其余分量固定,将原来的对偶问题模型化成二次规划子问题。
然后,利用约束条件可以将二次规划子问题转化成单变量求极值问题。
对于二次规划子问题的两个变量的选择标准:一个是违反KKT条件最严重的一个,另一个是使目标函数有足够下降的。