线性可分支持向量机

回顾

前面总结了线性可分支持向量机,知道了支持向量机的最终目的就是通过“间隔最大化” 得到最优分类器,能够使最难区分的样本点得到最大的分类确信度,而这些难区分的样本就是支持向量
还是如下图所示,超平面 H1 H_1 和 H2 H_2 支撑着中间的决策边界,且到达决策边界的距离相等,都是最大几何间隔。而这两个超平面 H1 H_1 和 H2 H_2 必定会有一些样本点,不然中间的间隔还可以继续扩大,得到的就不是最大间隔了。这些在超平面 H1 H_1 和 H2 H_2 的样本点就是支持向量,从直观上我们也可看出,这些支持向量是离决策边界最近的点,也就是最难被分类的样本。

优化

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

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

\begin{array}{lcl}\min_{w,b} & \frac{1}{2}||w||^2\\s.t. & y_i(w^T\cdot x_i+b)\ge1, i=1,2,\ldots,N\end{array}
观察可知,这是一个明显的 凸二次规划问题。将其作为原始问题,应用 拉格朗日对偶性,通过求解对偶问题得到原始问题的最优解。这样求解有两个好处:一方面是对偶问题往往更容易求解(优化效率高);二是自然引入了核函数,进而能够推广到非线性分类问题。首先,通过上式我们可以定义拉格朗日函数为:

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

L(w,b,\alpha)=\frac{1}{2}||w||^2-\sum_{i=1}^N\alpha_i[y_i(w^T\cdot x_i+b)-1]
其中,拉格朗日乘子 αi≥0 \alpha_i\ge0 ,现在我们令:

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

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

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

\min_{w}\theta_p(w)=\min_{w}\max_{\alpha_i\ge0}L(w,b,\alpha)
我们令 p∗ p^* 为该目标函数的最优化结果,直接求解的效率没有对偶问题求解高效(具体优化效率比较还没弄懂)。我们不妨考虑另外一个问题:

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

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

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

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

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

\max_{\alpha}\min_{w,b}L(w,b,\alpha)
我们先求内层的最小值:

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

\begin{array}{lcl} \frac{\partial}{\partial w}L(w,b,\alpha)=w-\sum_{i=1}^N\alpha_iy_ix_i=0\Longrightarrow w=\sum_{i=1}^N\alpha_iy_ix_i\\ \frac{\partial}{\partial b}L(w,b,\alpha)=\sum_{i=1}^N\alpha_iy_i=0\Longrightarrow \sum_{i=1}^N\alpha_iy_i=0 \end{array}
将其带回原式 L 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

\begin{align} L(w,b,\alpha)&=\frac{1}{2}||w||^2-\sum_{i=1}^N\alpha_i[y_i(w^T\cdot x_i+b)-1]\\ &=\frac{1}{2}w^Tw-\sum_{i=1}^N\alpha_iy_iw^Tx_i-b\sum_{i=1}^Na_iy_i+\sum_{i=1}^N\alpha_i\\ &=-\frac{1}{2}w^T\sum_{i=1}^N\alpha_iy_ix_i+\sum_{i=1}^N\alpha_i\\ &=-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i^Tx_j)+\sum_{i=1}^N\alpha_i \end{align}
则对偶问题转化为:

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

\begin{array}{lcl} \min_\alpha&\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i^Tx_j)-\sum_{i=1}^N\alpha_i\\ s.t. &\sum_{i=1}^N\alpha_iy_i=0\\ &\alpha_i\ge0,i=1,2,\ldots,N \end{array}
该问题的优化有更高效的算法,我们假设优化出的解为 α∗=(α∗1,α∗2,…,α∗N)T \alpha^*=(\alpha_1^*,\alpha_2^*,\ldots,\alpha_N^*)^T 。则原始问题的解为:

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

\begin{array}{lcl} w^*=\sum_{i=1}^N\alpha_i^*y_ix_i\\ b^*=y_j-\sum_{i=1}^N\alpha_i^*y_i(x_i^T\cdot x_j) \end{array}
考虑到前面提到的KKT互补条件可知:

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

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

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

f(x)=sign(\sum_{i=1}^N\alpha_i^*y_i\langle x_i,x \rangle+b^*)
中间的内积 ⟨xi,x⟩ \langle x_i,x \rangle(此处 xi x_i 表示第 i i 个样本,而不是样本中的第ii 个特征) 与核函数形式相同,下面将进行具体介绍。

非线性支持向量机

线性不可分情况

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

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

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

\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1x_2+\theta_4x_1^2+\theta_5x_2^2=0
既然可以通过构建多项式进行非线性数据的分类, 那为什么还需要通过核技巧进行转换呢?一方面是因为有些样本本身包含大量特征(图像处理),难以直接构建多项式,也可能导致多项式构建不合理;另一方面是非线性优化问题往往不好求解,我们还是希望能够将非线性问题转化为线性分类问题,用线性问题的求解方法来求解非线性问题。
如果我们令 Z1=x1,Z2=x2,Z3=x1x2,Z4=x21,Z5=x22 Z_1=x_1,Z_2=x_2,Z_3=x_1x_2,Z_4=x_1^2,Z_5=x_2^2,那么以新的变量 Zi Z_i 为变量建立坐标系,则在新的坐标系中,该最优分类平面为:

∑i=15θiZi+θ0=0

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

核技巧

下面,先通过coursera上的两幅图直观感受核函数具体怎么实现特征提取的。简单的说,对于上面的非线性分类问题,我们分别选取正样本的点(红色) l(1),l(2) l^{(1)},l^{(2)} 和负样本点(蓝色圈) l(3) 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]

\begin{array}{lcl} f_1=similarity(x,l^{(1)})=\exp[-\frac{||x-l^{(1)}||^2}{2\sigma^2}]\\ f_2=similarity(x,l^{(2)})=\exp[-\frac{||x-l^{(2)}||^2}{2\sigma^2}]\\ f_3=similarity(x,l^{(3)})=\exp[-\frac{||x-l^{(3)}||^2}{2\sigma^2}] \end{array}
假定我们的通过高斯变换得到的决策边界为 θ0+θ1f1+θ2f2+θ3f3 \theta_0+\theta_1f_1+\theta_2f_2+\theta_3f_3,其中 θ0=−0.5,θ1=1,θ2=1,θ3=0 \theta_0=-0.5,\theta_1=1,\theta_2=1,\theta_3=0 ,如果一个点比较接近 l(1) l^{(1)}, 通过高斯变换我们可以知道 f1≈1,f2≈0,f3≈0 f_1\approx1,f_2\approx0,f_3\approx0 ,则 θ0+θ1f1+θ2f2+θ3f3=−0.5+1+1∗0+0=0.5≥0 \theta_0+\theta_1f_1+\theta_2f_2+\theta_3f_3=-0.5+1+1*0+0=0.5\ge0,预测为正样本1。而样本远离 l(1),l(2) l^{(1)},l^{(2)} 时,有 f1≈0,f2≈0,f3 f_1\approx0,f_2\approx0,f_3,则 −0.5+1∗0+1∗0+0=−0.5≤0 -0.5+1*0+1*0+0=-0.5\le0,预测为负样本-1。由此我们就可以看出,通过高斯核函数,我们将样本特征映射为样本之间的距离的度量,并由此得到如图所示的决策边界。靠近 l(1),l(2) l^{(1)},l^{(2)} 在决策边界内,为正样本,这也符合直观认识。

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

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

f(x)=sign(\sum_{i=1}^N\alpha_i^*y_i\langle x_i,x \rangle+b^*)
通过构建多项式进行高维映射得到如下结果:

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

f(x)=sign(\sum_{i=1}^N\alpha_i^*y_i\langle \phi(x_i),\phi(x) \rangle+b^*)
通过这样的映射函数,我们似乎也能够继续用线性可分支持向量机目标优化的方法来进行优化。但是,如上图所示的二维空间的样本 (x1,x2) (x_1,x_2) ,映射后变成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)

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

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

f(x)=sign(\sum_{i=1}^N\alpha_i^*y_i\kappa(x_i,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

\begin{array}{lcl} \min_\alpha&\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j\kappa(x_i,x)-\sum_{i=1}^N\alpha_i\\ s.t. &\sum_{i=1}^N\alpha_iy_i=0\\ &\alpha_i\ge0,i=1,2,\ldots,N \end{array}
这样一来,我们既解决了低维空间线性不可分的问题,又通过核函数巧妙的避开了直接在高维空间中直接进行计算带来的计算量问题。至于哪些函数可以作为核函数,在此就不做证明,我们简单介绍几种常用核函数:

  • 多项式核函数: κ(x,z)=(xT⋅z+R)p \kappa(x,z)=(x^T\cdot z+R)^p。
  • 高斯核: κ(x,z)=exp[−||x−z||22σ2] \kappa(x,z)=\exp[-\frac{||x-z||^2}{2\sigma^2}] 。高斯核比较灵活的核函数,能够将原始空间映射到无穷维(通过泰勒展开式可以观察)。另外,它还可以通过调节 σ \sigma 来决定分类函数的效果。具体调节将在后面模型应用中进行对比介绍。
  • 线性核: κ(x,z)=⟨x,z⟩ \kappa(x,z)=\langle x,z \rangle。线性核实际就是原始空间中的内积。

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

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

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

  1. 【机器学习基础】数学推导+纯Python实现机器学习算法8-9:线性可分支持向量机和线性支持向量机...

    Python机器学习算法实现 Author:louwill 前面两讲我们对感知机和神经网络进行了介绍.感知机作为一种线性分类模型,很难处理非线性问题.为了处理非线性的情况,在感知机模型的基础上有了两个 ...

  2. 支持向量机之线性可分支持向量机(一)

    简介 支持向量机(support vector machines,SVM)是一种二分类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使得它有别于感知机:支持向量机还包括核技巧 ...

  3. 线性支持向量机、线性可分支持向量机、非线性支持向量机是怎么区分的?

    SVM(Support Vector Machine)是一种二类分类模型. 它的基本模型是定义在特征空间上的间隔最大的线性分类器. 支持向量就是最大间隔或者分割超平面上的那几个临界点,具体入下图所示: ...

  4. 支持向量机专题——线性可分支持向量机

    原文 支持向量机(support vector machine, SVM)是一种经典的分类器,其主要思想是学习一个在特征空间上使间隔最大的分类器.支持向量机的学习可以看成是一个求解凸二次规划问题的过程 ...

  5. 支持向量机之线性可分问题

    支持向量机为一类二分类的广义线性分类器,属于监督学习的范畴.支持向量机算法不仅可以用于分类问题,还可以用于回归问题,擅长处理数据线性不可分的情况,主要通过引入核函数来实现.下边简述线性可分问题的思想过 ...

  6. 【机器学习】SVM基本线性可分与多分类

    上一篇讲了线性可分的SVM推导,现在讲一讲基本线性可分的情形,后面还会介绍多分类的使用以及核函数的使用. outlier 的处理 给定数据集  ,当样本数据大部分为线性可分的,存在少量异常值使得数据线 ...

  7. 【机器学习基础】数学推导+纯Python实现机器学习算法10:线性不可分支持向量机...

    Python机器学习算法实现 Author:louwill 本节笔者和大家讨论支持向量机的最后一种情况--非线性支持向量机.前面两节我们探讨了数据样例是完全线性可分情况和近似线性可分情况下的支持向量机 ...

  8. 统计学习方法笔记(五)-线性可分支持向量机原理及python实现

    支持向量机 支持向量机 线性可分支持向量机 最大间隔法 代码实现 案例地址 支持向量机 支持向量机(support vector machines,SVM)是一种二分类模型,它的基本类型是定义在特征空 ...

  9. 支持向量机——线性可分支持向量机

    文章目录 1 线性可分支持向量机 2 函数间隔和几何间隔 3 间隔最大化 4 学习的对偶算法 GitHub 简书 CSDN 1 线性可分支持向量机 支持向量机(Support vector machi ...

  10. 线性可分支持向量机、线性支持向量机、非线性支持向量机的区别

    线性可分支持向量机: 线性可分支持向量机处理的是严格线性可分的数据集. 其分类超平面为: 相应的决策函数为:或者 其学习的优化问题为: 线性支持向量机: 线性支持向量机处理的是线性不可分的数据集.对于 ...

最新文章

  1. 你们肯定都不相信每天能准时下班了
  2. javafx树视图加选框_JavaFX缺少的功能调查:表视图
  3. 在linux怎样删除文件夹里,linux删除文件夹(里头有文件)
  4. git-工作区与暂存区
  5. 那些在错误道路上一路狂奔的国产VR
  6. mediacodec 相关问题
  7. 更新 FF.PyAdmin v1.2
  8. 《算法设计与分析基础 第二版》pdf
  9. SHA256算法详解及python实现
  10. 【CPU】理解CPU
  11. Redis单机版和集群搭建部署
  12. 作为兼并重组的重要方式之一,企业合并、分立的具体形式?
  13. Windows 10安装Adobe XD出现白屏闪退问题
  14. godaddy 服务器位置,GoDaddy主机正确的网站根目录介绍 | Godaddy美国主机中文指南...
  15. NodeJs 面试题 2023
  16. 湖北武汉劳务员考试建筑施工企业的劳务实名制建筑七大员考试
  17. 孙海波:重新发现“同案”:构建案件相似性的判断标准
  18. 如何用项目甘特图,做好项目汇报
  19. asp毕业设计——基于asp+sqlserver的网上选课系统设计与实现(毕业论文+程序源码)——网上选课系统
  20. ESP8266 板子引脚与GPIO引脚对应关系-管脚定义

热门文章

  1. 【Cesium】计算模型的朝向四元数,实现模型运动中调整朝向
  2. 云服务器ecs是vps还是虚拟主机,云服务器ecs是vps还是虚拟主机
  3. 数字化转型定义及优秀案例
  4. CentOS7 搭建虚拟主机
  5. OpenCV基于dlib进行人脸关键点检测(摄像头)
  6. win8运行matlab7.0,Win8.1系统中matlab7.0不兼容的解决方法
  7. 导出excel时,弹出的下载窗口一闪而过
  8. root后没反应怎么办,没有root怎么办?
  9. PHP 各种金融利息的计算方法
  10. 在安卓应用开发过程中减小安卓应用大小的 9 种方法