1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 机器学习(7)——支持向量机(二):线性可分支持向量机到非线性支持向量机

机器学习(7)——支持向量机(二):线性可分支持向量机到非线性支持向量机

时间:2023-09-10 14:09:26

相关推荐

机器学习(7)——支持向量机(二):线性可分支持向量机到非线性支持向量机

线性可分支持向量机

回顾

前面总结了线性可分支持向量机,知道了支持向量机的最终目的就是通过“间隔最大化”得到最优分类器,能够使最难区分的样本点得到最大的分类确信度,而这些难区分的样本就是支持向量

还是如下图所示,超平面 H1 和 H2 支撑着中间的决策边界,且到达决策边界的距离相等,都是最大几何间隔。而这两个超平面 H1 和 H2 必定会有一些样本点,不然中间的间隔还可以继续扩大,得到的就不是最大间隔了。这些在超平面 H1 和 H2 的样本点就是支持向量,从直观上我们也可看出,这些支持向量是离决策边界最近的点,也就是最难被分类的样本。

优化

上一节中我们介绍了得到上述线性可分支持向量机的方法,即最优化以下目标函数:

minw,bs.t.12||w||2yi(wT⋅xi+b)≥1,i=1,2,…,N

观察可知,这是一个明显的 凸二次规划问题。将其作为原始问题,应用 拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解。这样求解有两个好处:一方面是对偶问题往往更容易求解(优化效率高);二是自然引入了核函数,进而能够推广到非线性分类问题。首先,通过上式我们可以定义拉格朗日函数为:

L(w,b,α)=12||w||2−∑i=1Nαi[yi(wT⋅xi+b)−1]

其中,拉格朗日乘子 αi≥0 ,现在我们令:

θp(w)=maxαi≥0L(w,b,α)

则 θp(w) 就是与原目标函数等同的优化问题。之所以可以这么等同,是因为如果出现 yi(wT⋅xi+b)<1 则 θp(w)=∞ (只需要令 αi=∞ ),此时没有最小解。而当所有约束条件都满足时,即 yi(wT⋅xi+b)≥1,i=1,2,…,N ,则 θp(w)=12||w||2 ,也就是我们最初要优化的目标函数。因此,我们现在的目标函数可以改写为:

minwθp(w)=minwmaxαi≥0L(w,b,α)

我们令 p∗ 为该目标函数的最优化结果,直接求解的效率没有对偶问题求解高效(具体优化效率比较还没弄懂)。我们不妨考虑另外一个问题:

θD(α)=minw,bL(w,b,α)

D 表示对偶,θD(α)将问题转化为先求拉格朗日关于 w 和b的最小值,将 α 看着固定值,然后求关于 α 的极大值, 则优化问题转化为:

maxαθD(α)=maxαminw,bL(w,b,α)=d∗

对偶问题与原始问题并不完全等价,因此我们用 d∗ 来表示对偶问题的最优值。两者满足 d∗≤p∗ ,从直观上比较好理解,一个函数的最大值中的最小值总是比其最小值中的最大值要大,具体可以参考凸优化中的相关知识。当满足 KKT条件时,两者取等号,其中的对偶互补条件 αigi(w)=0,i=1,2,…,N 有助于理解支持向量概念,后续介绍。由于这里的原始问题满足KKT条件,因此我们将优化问题转化为对偶问题,即:

maxαminw,bL(w,b,α)

我们先求内层的最小值:

∂∂wL(w,b,α)=w−∑i=1Nαiyixi=0⟹w=∑i=1Nαiyixi∂∂bL(w,b,α)=∑i=1Nαiyi=0⟹∑i=1Nαiyi=0

将其带回原式 L 中,有:

L(w,b,α)=12||w||2−∑i=1Nαi[yi(wT⋅xi+b)−1]=12wTw−∑i=1NαiyiwTxi−b∑i=1Naiyi+∑i=1Nαi=−12wT∑i=1Nαiyixi+∑i=1Nαi=−12∑i=1N∑j=1Nαiαjyiyj(xTixj)+∑i=1Nαi

则对偶问题转化为:

minαs.t.12∑i=1N∑j=1Nαiαjyiyj(xTixj)−∑i=1Nαi∑i=1Nαiyi=0αi≥0,i=1,2,…,N

该问题的优化有更高效的算法,我们假设优化出的解为 α∗=(α∗1,α∗2,…,α∗N)T 。则原始问题的解为:

w∗=∑i=1Nα∗iyixib∗=yj−∑i=1Nα∗iyi(xTi⋅xj)

考虑到前面提到的KKT互补条件可知:

α∗i(yi(w∗T⋅xi+b∗)−1)=0

对所有使得 w∗ 有意义的 α∗i 都有 α∗i>0 ,此时必有 w∗T⋅xi+b∗=±1 , 即有效样本点一定在间隔边界上,这些样本点就是支持向量。这与前面介绍的支持向量也相符,即在间隔边界上的点与决策边界有最小函数间隔,分类确信度最低,最难被区分。支持向量机的“最大化间隔”就是最大化这些样本点的间隔。另一方面,原始问题求出的分类决策函数为:

f(x)=sign(∑i=1Nα∗iyi⟨xi,x⟩+b∗)

中间的内积 ⟨xi,x⟩ (此处 xi 表示第 i 个样本,而不是样本中的第i个特征) 与核函数形式相同,下面将进行具体介绍。

非线性支持向量机

线性不可分情况

前面推导了线性可分支持向量机的部分理论,它的目的就是通过间隔最大化构造线性的超平面来进行数据分类。但是这种分类器对于非线性数据就没有办法,如下图所示(类似截图源自coursera课程),对于该非线性数据,不管是硬间隔支持向量机还是软间隔向量机(后面介绍)都无法处理。

在前面的介绍中,我们知道,对于逻辑斯特回归分类器,可以通过构建更高阶的项来对非线性数据进行分类。这种方法对于线性支持向量机也是适用的,这时的超平面就已经不是线性的,而是曲线(或曲面)。如上图所述的类似圆形边界,我们可以通过构建如图所示的多项式:

θ0+θ1x1+θ2x2+θ3x1x2+θ4x21+θ5x22=0

既然可以通过构建多项式进行非线性数据的分类,那为什么还需要通过核技巧进行转换呢?一方面是因为有些样本本身包含大量特征(图像处理),难以直接构建多项式,也可能导致多项式构建不合理;另一方面是非线性优化问题往往不好求解,我们还是希望能够将非线性问题转化为线性分类问题,用线性问题的求解方法来求解非线性问题。

如果我们令 Z1=x1,Z2=x2,Z3=x1x2,Z4=x21,Z5=x22 ,那么以新的变量 Zi 为变量建立坐标系,则在新的坐标系中,该最优分类平面为:

∑i=15θiZi+θ0=0

这显然是一个线性超平面,原始空间的非线性问题就变成了新空间的线性可分问题,这样我们就可以用前面的线性可分学习方法来进行该问题的学习了。这就是核技巧的基本思想了。总结来说,就是通过一个非线性变换将输入空间的特征映射到更高维空间,使原本线性不可分问题在新的特征空间变成线性可分问题。

核技巧

下面,先通过coursera上的两幅图直观感受核函数具体怎么实现特征提取的。简单的说,对于上面的非线性分类问题,我们分别选取正样本的点(红色) l(1),l(2) 和负样本点(蓝色圈) l(3) ,然后通过高斯核函数来求相应的特征:

f1=similarity(x,l(1))=exp[−||x−l(1)||22σ2]f2=similarity(x,l(2))=exp[−||x−l(2)||22σ2]f3=similarity(x,l(3))=exp[−||x−l(3)||22σ2]

假定我们的通过高斯变换得到的决策边界为 θ0+θ1f1+θ2f2+θ3f3 ,其中 θ0=−0.5,θ1=1,θ2=1,θ3=0 ,如果一个点比较接近 l(1) , 通过高斯变换我们可以知道 f1≈1,f2≈0,f3≈0 ,则 θ0+θ1f1+θ2f2+θ3f3=−0.5+1+1∗0+0=0.5≥0 ,预测为正样本1。而样本远离 l(1),l(2) 时,有 f1≈0,f2≈0,f3 ,则 −0.5+1∗0+1∗0+0=−0.5≤0 ,预测为负样本-1。由此我们就可以看出,通过高斯核函数,我们将样本特征映射为样本之间的距离的度量,并由此得到如图所示的决策边界。靠近 l(1),l(2) 在决策边界内,为正样本,这也符合直观认识。

上述是核变换的一个感性认识,可以通过简单的样例让我们明白核函数究竟做了什么。下面我们通过理论推导来看核函数为什么适用于支持向量机。首先,通过前面推导,我们知道最终得到的分类函数为:

f(x)=sign(∑i=1Nα∗iyi⟨xi,x⟩+b∗)

通过构建多项式进行高维映射得到如下结果:

f(x)=sign(∑i=1Nα∗iyi⟨ϕ(xi),ϕ(x)⟩+b∗)

通过这样的映射函数,我们似乎也能够继续用线性可分支持向量机目标优化的方法来进行优化。但是,如上图所示的二维空间的样本 (x1,x2) ,映射后变成5维空间的特征。如果是3维的,则会是19维的。这种直接映射会导致需要优化的参数成指数形式增长,带来极大的计算量,何况映射的特征空间甚至可能是无穷维的。下面我们来看核函数和映射函数的关系:

κ(x,z)=(xTz)2=(x1z1+x2z2)2=(x1z1)2+2x1x2z1z2+(x2z2)2=(x21,2√x1x2,x22)(z21,2√z1z2,z22)T=ϕ(x)Tϕ(z)

其中, ϕ(x)=(x21,2√x1x2,x22)T 就是映射函数。由此可见,核函数最终得到的结果与映射函数最终得到结果一样,即核函数本身就实现了特征从低维到高维的映射。但是两者却有明显的区别:映射函数先是映射到高维空间,然后进行内积,对于多特征的样本来说,映射到高维空间再进行内积运算将是爆炸性的计算量;而核函数却一直在本身的低维空间中进行计算,并没有显示地写出映射后的结果,这将大大节省计算效率。因此,我们可以用核函数来代替映射函数,实现非线性问题的求解,此时,分类决策函数可以改写为:

f(x)=sign(∑i=1Nα∗iyiκ(xi,x)+b∗)

对应的优化问题可以定义为:

minαs.t.12∑i=1N∑j=1Nαiαjyiyjκ(xi,x)−∑i=1Nαi∑i=1Nαiyi=0αi≥0,i=1,2,…,N

这样一来,我们既解决了低维空间线性不可分的问题,又通过核函数巧妙的避开了直接在高维空间中直接进行计算带来的计算量问题。至于哪些函数可以作为核函数,在此就不做证明,我们简单介绍几种常用核函数:多项式核函数: κ(x,z)=(xT⋅z+R)p 。高斯核: κ(x,z)=exp[−||x−z||22σ2] 。高斯核比较灵活的核函数,能够将原始空间映射到无穷维(通过泰勒展开式可以观察)。另外,它还可以通过调节 σ 来决定分类函数的效果。具体调节将在后面模型应用中进行对比介绍。线性核: κ(x,z)=⟨x,z⟩ 。线性核实际就是原始空间中的内积。

最后,通过上述介绍,我们知道通过SVM的优化问题,得到最终的分类决策函数,并通过内积自然过渡到核技巧。通过核技巧,我们能够实现低维映射到高维的目的,解决了原始低维空间中线性不可分的问题,同时核技巧又是在原始空间进行计算,避免了高维映射之后的计算复杂度。核技巧本来也可以用于逻辑斯特回归和神经网络,但是其优化效率并没有SVM这么明显,也正是因为SVM能够通过核技巧高效解决大量问题,使其能够广泛用于各种分类任务。

PS:本文理论推导主要学习了李航的《统计学习方法》,加入了部分coursera上Andrew Ng的直观介绍,同时参考了plusid 的博客(他的很多内容真心说的很不错)。主要是通过写看自己究竟理解的多深,如有错误,还望指正,相互学习。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。