从线性到非线性模型-支持向量机

从线性到非线性模型

1、线性回归,岭回归,Lasso回归,局部加权线性回归
2、logistic回归,softmax回归,最大熵模型
3、广义线性模型
4、Fisher线性判别和线性感知机
5、三层神经网络
6、支持向量机

六、支持向量机

​ 在线性模型中,Fisher线性判别和线性感知机可以说是以上所有模型的分类依据,前者是映射到一维执其两端进行分类,后者是在高维空间找一个线性超平面将两类分开(两类可扩展到多类)。支持向量机属于后者,但主要有以下几点改进:

1)提出硬间隔线性可分,在感知机的基础上提出了线性可分假设(无损失),最大化最小间隔

2)提出软间隔线性可分,得到了hinge损失代替感知机的线性损失(后面补充一个线性模型损失对比图)

3)结合核函数将数据映射到高维空间,使得模型具有非线性能力

4)具有感知机的一切解释性,同时目标函数的对偶形式是凸二次规划问题

从线性到非线性模型-支持向量机_第1张图片

硬间隔(最大化最小间隔分类器):

​ 线性感知机中由于没有线性可分假设,所以其目标函数定义为最小化错分样本的损失,而硬间隔SVM则提出了一个线性可分假设,即样本在高维空间中线性可分,那么使得两类分开的超平面一定有无限个。硬间隔SVM则在这些超平面中找出最优的(即所有样本到超平面距离加和最小化),所以有如下目标函数:

mini=1m1||w||2yi(wxi+b) min ∑ i = 1 m 1 | | w | | 2 y i ( w ⋅ x i + b )

其中 1||w||2yi(wxi+b) 1 | | w | | 2 y i ( w ⋅ x i + b ) 为点到平面的几何间隔,去掉系数为函数间隔。最大化最小间隔分类器则采用等价形式—使得最难分的样本离超平面距离尽可能的大—最大化最小间隔分类器
maxw,bγs.t.1||w||2yi(wxi+b)>γ,i1,2...m max w , b γ s . t . 1 | | w | | 2 y i ( w ⋅ x i + b ) > γ , i ∈ 1 , 2... m

maxw,bγ||w||2s.t.yi(wxi+b)>γ,i1,2...m max w , b γ | | w | | 2 s . t . y i ( w ⋅ x i + b ) > γ , i ∈ 1 , 2... m

γ=1 γ = 1 有:

minw,b12||w||2s.t.yi(wxi+b)1>0,i1,2...m min w , b 1 2 | | w | | 2 s . t . y i ( w ⋅ x i + b ) − 1 > 0 , i ∈ 1 , 2... m

到此,上式为硬间隔分类器的原问题最终形式。上述问题可使用拉格朗日乘子法和对偶问题进行求解。

拉格朗日函数

minw,b12||w||2i=1mαi(yi(wxi+b)1)s.t.L(w,b,αi)=0αi(yi(wxi+b)1)=0αi0yi(wxi+b)1>0,i1,2...m min w , b 1 2 | | w | | 2 − ∑ i = 1 m α i ( y i ( w ⋅ x i + b ) − 1 ) s . t . ▽ L ( w , b , α i ) = 0 α i ( y i ( w ⋅ x i + b ) − 1 ) = 0 α i ≥ 0 y i ( w ⋅ x i + b ) − 1 > 0 , i ∈ 1 , 2... m

其中 L(w,b,αi)=0 ▽ L ( w , b , α i ) = 0 由Fritz John条件得出, αi(yi(wxi+b)1)=0 α i ( y i ( w ⋅ x i + b ) − 1 ) = 0 为互补松弛条件,互补松弛条件与支持向量有密切关系。由上述约束条件有:
L(w,b,αi)w=wi=1mαiyixi=0L(w,b,αi)b=i=1mαiyi=0b=yji=1mαiyixixj ▽ L ( w , b , α i ) w = w − ∑ i = 1 m α i y i x i = 0 ▽ L ( w , b , α i ) b = ∑ i = 1 m α i y i = 0 b = y j − ∑ i = 1 m α i y i x i ⋅ x j

将上式带入到拉格朗日函数,得到关于 α α 表示的函数:
L(w,b,α)=12i=1mj=1mαiαjyjyjxixj+i=1mαi L ( w , b , α ) = − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y j y j x i x j + ∑ i = 1 m α i

最大化关于 α α 的函数即为原问题的对偶问题,如下:
maxL(w,b,α)=12i=1mj=1mαiαjyjyjxixj+i=1mαimin12i=1mj=1mαiαjyjyjxixji=1mαis.t.i=1mαiyi=0αi0 max L ( w , b , α ) = − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y j y j x i x j + ∑ i = 1 m α i ⇔ min 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y j y j x i x j − ∑ i = 1 m α i s . t . ∑ i = 1 m α i y i = 0 α i ≥ 0

解出上式目标函数 α α 后,有 w,b w , b
w=i=1mαiyixib=yji=1mαiyixixj w = ∑ i = 1 m α i y i x i b = y j − ∑ i = 1 m α i y i x i ⋅ x j

其中可以看出,w和b有样本点与 α α 內积确定。

​ 但是回过头来想,线性可分假设是不现实,所以SVM在硬间隔线性可分的基础上提出软间隔线性可分。即允许线性不可分,但是需要进行一定的惩罚。如下图为软间隔线性可分,其中在支持向量里面的点和错分的样本为线性不可分的点,虚线上的点为支持向量。

从线性到非线性模型-支持向量机_第2张图片

软间隔SVM:

​ 线性不可分意味着某些样本不满足函数间隔大于 1 1 的约束条件,为了解决这个问题,可以对每个样本引入一个松弛变量 ξi0 ξ i ≥ 0 ,使得函数间隔加上松弛变量大于等于1,这样约束条件变为:

yi(wxi+b)>1ξi,i1,2..m y i ( w ⋅ x i + b ) > 1 − ξ i , i ∈ 1 , 2.. m

同时对于线性不可分的样本进行惩罚,因此目标函数变为:
minw,b12||w||+Ci=1mξi m i n w , b 1 2 | | w | | + C ∑ i = 1 m ξ i

因此最终的线性不可分SVM的目标函数如下:
minw,b12||w||+Ci=1mξis.t.yi(wxi+b)>1ξi,i1,2..mξi0,i1,2..m m i n w , b 1 2 | | w | | + C ∑ i = 1 m ξ i s . t . y i ( w ⋅ x i + b ) > 1 − ξ i , i ∈ 1 , 2.. m ξ i ≥ 0 , i ∈ 1 , 2.. m

拉格朗日函数
minw,b12||w||2+Ci=1mξii=1mαi(yi(wxi+b)1+ξi)i=1mβiξis.t.L(w,b,ξi,αi,βi)=0αi(yi(wxi+b)1+ξi)=0βiξi=0αi0βi0yi(wxi+b)10,i1,2...mξi0,i1,2..m m i n w , b 1 2 | | w | | 2 + C ∑ i = 1 m ξ i − ∑ i = 1 m α i ( y i ( w ⋅ x i + b ) − 1 + ξ i ) − ∑ i = 1 m β i ξ i s . t . ▽ L ( w , b , ξ i , α i , β i ) = 0 α i ( y i ( w ⋅ x i + b ) − 1 + ξ i ) = 0 β i ξ i = 0 α i ≥ 0 β i ≥ 0 y i ( w ⋅ x i + b ) − 1 ≥ 0 , i ∈ 1 , 2... m ξ i ≥ 0 , i ∈ 1 , 2.. m

由上述约束条件有:
L(w,b,αi)w=wi=1mαiyixi=0L(w,b,αi)b=i=1mαiyi=0L(w,b,αi)ξi=Cαiβi=0b=yji=1mαiyixixj ▽ L ( w , b , α i ) w = w − ∑ i = 1 m α i y i x i = 0 ▽ L ( w , b , α i ) b = ∑ i = 1 m α i y i = 0 ▽ L ( w , b , α i ) ξ i = C − α i − β i = 0 b = y j − ∑ i = 1 m α i y i x i ⋅ x j

将上式带入到拉格朗日函数,得到目标函数关于 αβ α , β 表示的函数,同硬间隔的对偶函数一致:
L(w,b,α)=12i=1mj=1mαiαjyjyjxixj+i=1mαi L ( w , b , α ) = − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y j y j x i x j + ∑ i = 1 m α i

最大化关于 α α 的函数即为原问题的对偶问题,而对偶问题为原问题提供一个下界,即原问题的对偶问题如下:
maxL(w,b,α)=12i=1mj=1mαiαjyjyjxixj+i=1mαimin12i=1mj=1mαiαjyjyjxixji=1mαis.t.i=1mαiyi=0Cαiβi=0αi0βi0min12i=1mj=1mαiαjyjyjxixji=1mαis.t.i=1mαiyi=00αiC max L ( w , b , α ) = − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y j y j x i x j + ∑ i = 1 m α i ⇔ min 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y j y j x i x j − ∑ i = 1 m α i s . t . ∑ i = 1 m α i y i = 0 C − α i − β i = 0 α i ≥ 0 β i ≥ 0 ⇔ min 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y j y j x i x j − ∑ i = 1 m α i s . t . ∑ i = 1 m α i y i = 0 0 ≤ α i ≤ C

解出上式目标函数 α,β α , β 后,有 w,b w , b
w=i=1mαiyixib=yji=1mαiyixixj w = ∑ i = 1 m α i y i x i b = y j − ∑ i = 1 m α i y i x i ⋅ x j

可以看出,w和b由样本点与 α α 內积确定,当 αi=0 α i = 0 表示 第i个样本点满足 yi(wxi+b)10 y i ( w ⋅ x i + b ) − 1 ≥ 0 条件,该点不在支持向量内部,w与该点无关,支持向量机的参数 w w 只与支持向量以内的点有关。

​ 对比硬间隔和软间隔SVM发现两者的对偶问题非常相似,唯一不同的在于 0α 0 ≤ α 0αC 0 ≤ α ≤ C ,也就是说在约束条件上不能让 α α 值太大。而 α α 不为 0 0 的意义就是该点线性不可分—在支持向量以内,不能让 α α 太大的意义就是尽可能的不要让样本在支持向量太里面。这也就是惩罚项引入后的结果。

下面根据 α,β α , β 的取值来分析样本点的一个位置,以及样本点对SVM参数的影响:

αi=0 α i = 0 ,则 βi=Cξi=0 β i = C , ξ i = 0 ,表示样本点在支持向量上或者以外的,以外的点对参数 w w 无价值

0<αi<C 0 < α i < C ,则 0<βi<Cξi=0 0 < β i < C , ξ i = 0 ,表示样本点在支持向量上

αi=C α i = C ,则 0=βi 0 = β i ,如果 0<ξi<1 0 < ξ i < 1 ,表示样本在支持向量内部,但分类正确

αi=C α i = C ,则 0=βi 0 = β i ,如果 ξi=1 ξ i = 1 ,表示样本在超平面上

αi=C α i = C ,则 0=βi 0 = β i ,如果 ξi>1 ξ i > 1 ,表示样本分类错误

核函数:

​ 核函数的应用主要是解决线性不可分问题,通过选择合适的核函数将样本从低维线性不可分映射到高维之后容易线性可分,本质上是一次空间上的非线性变换(特征映射),核函数可以嫁接到很多线性模型上,使其具有非线性能力,只是核函数的选择是一件难定的事。

​ 而SVM与核函数有着天然的契合度,因为在SVM的对偶问题中,需要计算样本之间的內积,而核函数的引入则可以使得內积操作直接在核函数中隐式完成。

L(w,b,α)=12i=1mj=1mαiαjyjyjxixj+i=1mαi L ( w , b , α ) = − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y j y j x i ⋅ x j + ∑ i = 1 m α i

在上式中有 xixj x i ⋅ x j 內积操作,当我们使用核技巧时,往往需要定义一个核函数 ϕ(x) ϕ ( x ) 进行特征空间变换,然后在新的特征空间中进行 ϕ(xi)ϕ(xj) ϕ ( x i ) ⋅ ϕ ( x j ) 內积操作,这使得计算过程分两步完成。如果我们隐式的定义核函数如下:
K(xi,xj)=ϕ(xi)ϕ(xj) K ( x i , x j ) = ϕ ( x i ) ⋅ ϕ ( x j )

L(w,b,α)=12i=1mj=1mαiαjyjyjK(xi,xj)+i=1mαi L ( w , b , α ) = − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y j y j K ( x i , x j ) + ∑ i = 1 m α i

直接定义 K(xi,xj) K ( x i , x j ) 作为核函数,而不管实际的核函数 ϕ(x) ϕ ( x ) 是如何将x映射到 ϕ(x) ϕ ( x ) 空间,然后在新的特征空间计算內积。这样,我们就隐式完成了內积操作,将核函数与內积操作一步完成为 K(xi,xj) K ( x i , x j ) 。当然,核函数必须满足核函数的性质。

一般常采用的核函数有:

线性核 K(xi,xj)=xTixj K ( x i , x j ) = x i T x j

多项式核 K(xi,xj)=(xTixj)d K ( x i , x j ) = ( x i T x j ) d

高斯核 K(xi,xj)=exp((xixj)22σ2) K ( x i , x j ) = e x p ( − ( x i − x j ) 2 2 σ 2 )

拉普拉斯核 K(xi,xj)=exp(||xixj||2σ2) K ( x i , x j ) = e x p ( − | | x i − x j | | 2 σ 2 )

sigmoid核 K(xi,xj)=tanh(βxTixj+θ) K ( x i , x j ) = t a n h ( β x i T x j + θ )

然而核技巧中,最盲目的是如何选择合适核函数,或者多核。

​ 这里需要解释的是,SVM对核函数有一个自身的要求,核的大小一定是 m2 m 2 。因为SVM在做內积时是所有点彼此做內积,所以复杂度是 m2 m 2 。这也是SVM难以适应大规模数据的场景,SVM的复杂度 m2d m 2 d 体现在內积上,带核的SVM的复杂度体现在核函数的计算上。而这不是核函数的特点,核函数中核的大小是自定义的。

SMO优化算法

min12i=1mj=1mαiαjyjyjxixji=1mαis.t.i=1mαiyi=00αiC min 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y j y j x i x j − ∑ i = 1 m α i s . t . ∑ i = 1 m α i y i = 0 0 ≤ α i ≤ C

SVM优化问题是一个典型的带约束凸二次规划,传统的梯度方法不能直接应用于带约束优化问题,下面先介绍一种坐标上升优化算法,算法的思想是对于多个参数的优化求解问题,可以每次只考虑一个变量,而固定其他所有变量,对一个变量进行目标优化,内循环每一个变量进行优化,外循环直到迭代到收敛。其收敛性类似于EM算法。
从线性到非线性模型-支持向量机_第3张图片

因为内层循环每次只改变一个变量,所以坐标上升算法的搜索路径与坐标轴平行
从线性到非线性模型-支持向量机_第4张图片

然而,如果每次只改变一个变量来优化SVM,那么必然不满足 mi=1αiyi=0 ∑ i = 1 m α i y i = 0 约束。所以SMO算法在坐标上升算法基础上又以下两点改进:

1)为了满足 mi=1αiyi=0 ∑ i = 1 m α i y i = 0 约束,每次迭代优化选择两个变量,其中一个主动变量,另一个被动变量

2)在选择两个变量进行优化时,采用启发式搜索策略,主动变量选择违反KKT条件最严重的一个变量 α1 α 1 ,在选定 α1 α 1 后,被动变量 α2 α 2 选择变化范围最大的,在优化 α1 α 1 α2 α 2 时使用上下剪辑来使得 α1 α 1 α2 α 2 满足 0αiC 0 ≤ α i ≤ C 约束

现在来看SMO算法,固定m-2个变量不变,将目标函数转化为关于 α1 α 1 α2 α 2 的函数:

min12i=1mj=1mαiαjyjyjK(xi,xj)i=1mαiminW(α1,α2)=12α21K11+12α22K22+y1y2α1α2K12+y1α1i=3myiαiKi1+y2α2i=3myiαiKi2(α1+α2)s.t.α1y1+α2y2=i=3mαiyi=ς0αiC min 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y j y j K ( x i , x j ) − ∑ i = 1 m α i min W ( α 1 , α 2 ) = 1 2 α 1 2 K 11 + 1 2 α 2 2 K 22 + y 1 y 2 α 1 α 2 K 12 + y 1 α 1 ∑ i = 3 m y i α i K i 1 + y 2 α 2 ∑ i = 3 m y i α i K i 2 − ( α 1 + α 2 ) s . t . α 1 y 1 + α 2 y 2 = − ∑ i = 3 m α i y i = ς 0 ≤ α i ≤ C

其中 Kij=K(xi,xj) K i j = K ( x i , x j )

为了求解两个变量的二次规划问题,首先我们分析约束条件,可以看出 α1 α 1 α2 α 2 的可行域是盒子内的一条对角线上,其中盒子由不等式确定,对角线由等式确定,而且由于 y1 y 1 y2 y 2 的不确定性导致存在两种情况:

至于对角线的位置取决于当前 α1 α 1 α2 α 2 的值。由于优化过程中,我们首先优化的是 α2 α 2 ,而后由等式约束确定 α1 α 1 ,所以我们分析 α2 α 2 的变化范围:

y1y2 y 1 ≠ y 2 时: L=max(0,α2α1) L = m a x ( 0 , α 2 − α 1 ) H=min(C,C+α2α1) H = m i n ( C , C + α 2 − α 1 )

y1=y2 y 1 = y 2 时: L=max(0,α2+α1C) L = m a x ( 0 , α 2 + α 1 − C ) H=min(C,α2+α1) H = m i n ( C , α 2 + α 1 )

其中L是为了保证 α2 α 2 的变化不会让 α1<0 α 1 < 0 ,H是为了保证 α2 α 2 的变化不会让 α1>C α 1 > C

同样,由于我们首先优化的是 α2 α 2 ,所以我们采用 α2 α 2 来表示 α1 α 1

α1=(ςα2y2)y1 α 1 = ( ς − α 2 y 2 ) y 1 ,代入 minW(α1,α2) min W ( α 1 , α 2 ) 有(省略了推导步骤):

W(α2)=aα22+bα2+c W ( α 2 ) = a α 2 2 + b α 2 + c

求导后得到:
W(α2)α2=y2(((g(x2)y2)(g(x1)y1)))(K11+K222K12) ▽ W ( α 2 ) α 2 = y 2 ( ( ( g ( x 2 ) − y 2 ) − ( g ( x 1 ) − y 1 ) ) ) ( K 11 + K 22 − 2 K 12 )

Ei=g(xi)yi E i = g ( x i ) − y i η=(K11+K222K12) η = ( K 11 + K 22 − 2 K 12 ) 有:
W(α2)α2=y2(E2E1)η ▽ W ( α 2 ) α 2 = y 2 ( E 2 − E 1 ) η

所以:
αunew2=αold2+y2(E1E2)η α 2 u n e w = α 2 o l d + y 2 ( E 1 − E 2 ) η

回到上下剪辑,最终 α2 α 2 的更新值为:
αnew2=H,αunew2>Hαunew2,Lαunew2HL,αunew2<L α 2 n e w = { H , α 2 u n e w > H α 2 u n e w , L ≤ α 2 u n e w ≤ H L , α 2 u n e w < L

再由 mi=1αiyi=0 ∑ i = 1 m α i y i = 0 得:
αnew1=αold1+y1y2(αold2αnew2) α 1 n e w = α 1 o l d + y 1 y 2 ( α 2 o l d − α 2 n e w )

最后更新b,由KKT条件当 0αjC 0 ≤ α j ≤ C 时,有 b=yjmi=1αiyiKij b = y j − ∑ i = 1 m α i y i K i j

0α1C 0 ≤ α 1 ≤ C 时:

bnew=y1i=1mαiyiKi1+αold1y1K11+αold2y2K21αnew1y1K11αnew2y2K21=E1y1K11(αnew1αold1)y2K21(αnew2αold2)+bold b n e w = y 1 − ∑ i = 1 m α i y i K i 1 + α 1 o l d y 1 K 11 + α 2 o l d y 2 K 21 − α 1 n e w y 1 K 11 − α 2 n e w y 2 K 21 = − E 1 − y 1 K 11 ( α 1 n e w − α 1 o l d ) − y 2 K 21 ( α 2 n e w − α 2 o l d ) + b o l d

同样,当 0α2C 0 ≤ α 2 ≤ C 时: b b α2 α 2 来确定。

如果两者同时满足条件时,那么两者确定的 b b 是一致的,如果等式取到的话,说明点在支持向量上或者以内,此时 b b 取两者之间。

下面来看SMO的启发式搜索策略:

1)主动变量选择违反KKT条件最严重的点,即优先判断支持向量上的点是否满足KKT条件,其次检验整个训练样本是否满足KKT条件

由上面对 α α 与样本点位置的分析可得到如下关系:

αi=0yigi10αiCyigi=1αi=Cyigi1 α i = 0 ⇔ y i g i ≥ 1 0 ≤ α i ≤ C ⇔ y i g i = 1 α i = C ⇔ y i g i ≤ 1

由上面关系,可以知道哪些点在支持向量上,哪些点在支持向量外,哪些点在支持向量内,优先选择支持向量上的点来判断是否违反KKT条件,因为这些点是违反KKT条件最严重的点,也是对超平面最有价值的点。

2)被动变量选择在给定主动变量后,被动变量随之变化范围最大的点,由于前面导出 αunew2=

你可能感兴趣的:(机器学习,机器学习)