liner-classifiers-SVM

1支持向量机

参考看了这篇文章你还不懂SVM你就来打我
第一遍看完确实有想打死作者的冲动,但是多看几遍之后,真香~
【SVM---这可能是最直白的推导了】
个人觉得这篇文章讲的很清楚,条理清晰,数学推导也很明白,因此基于此做笔记,当然也参考周志华老师机器学习以及其他大佬的博客等。

1.1 SVM定义

  • SVM与logistic一样就是一种二类分类模型,它的基本模型是的定义在特征空间上的间隔最大的线性分类器,SVM的学习策略就是间隔最大化
  • 维基百科的官方解释:有点多

支持向量机(英语:support vector machine,常简称为SVM,又名支持向量网络)是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。

1.1.1 直观解释

  • 通过上图凭直观感受应该觉得是H3分类更好。首先H1不能把类别分开,这个分类器肯定是不行的;H2可以,但分割线与最近的数据点只有很小的间隔,如果测试数据有一些噪声的话可能就会被H2错误分类(即对噪声敏感、泛化能力弱)。H3以较大间隔将它们分开,这样就能容忍测试数据的一些噪声而正确分类,是一个泛化能力不错的分类器。
  • 对于支持向量机来说,数据点若是p维向量,我们用p-1维的超平面来分开这些点。但是可能有许多超平面可以把数据分类。最佳超平面的一个合理选择就是以最大间隔把两个类分开的超平面。因此,SVM选择能够使离超平面最近的数据点的到超平面距离最大的超平面。
  • 以上介绍的SVM只能解决线性可分的问题,为了解决更加复杂的问题,支持向量机学习方法有一些由简至繁的模型:

1.1.2 线性可分SVM

当训练数据线性可分时,通过硬间隔(hard margin,什么是硬、软间隔下面会讲)最大化可以学习得到一个线性分类器,即硬间隔SVM,如上图的的H3

1.1.3 线性SVM

当训练数据不能线性可分但是可以近似线性可分时,通过软间隔(soft margin)最大化也可以学习到一个线性分类器,即软间隔SVM。

1.1.4 非线性SVM

当训练数据线性不可分时,通过使用核技巧(kernel trick)和软间隔最大化,可以学习到一个非线性SVM。

1.1.5 SVM三宝

  • 最大间隔
  • 对偶问题
  • 核函数

1.2 线性可分SVM——硬间隔

  • 线性可分:假设有猪狗两类样本,若在特征空间中存在一个超平面将猪狗完全准确分开,那么就称这个猪狗样本集线性可分。在二维空间时,超平面就是一条直线。SVM的任务就是找到最佳啊超平面。
    有一个线性可分的训练集:
    \(\left(X_{1}, y_{1}\right),\left(X_{2}, y_{2}\right), \dots,\left(X_{n}, y_{n}\right)\)
    其中\(X_{i}\)是一个含有\(d\)个元素的列向量, 即\(X_{i} \in \mathbf{R}^{d}\);\(y_{i}\)是标量,\(y \in+1,-1, y_{i}=+1\),\(y_{i}=+1\)时表示\(X_{i}\)属于正类别,\(y_{i}=-1\)时表示\(X_{i}\)属于负类别.

\(X,X_{i},W\)都是列向量

  • 回忆一下感知机的目标: 找到一个超平面使其能正确地将每个样本正确分类。感知机使用误分类最小的方法求得超平面,不过此时解有无穷多个(例如图1.1的H2和H3以及它俩的任意线性组合)。而线性可分支持向量机利用间隔最大化求最优分离超平面,这时解是唯一的

1.2.1 超平面与间隔

  • 最佳超平面必须具有更好的泛化能力,对噪声更为不敏感,即更好的鲁棒性。从几何角度来说,两样本到超平面的间隔越大,抗干扰能力越强,所以最佳超平面就是以最大间隔把样本分开的超平面,也称之为最大间隔超平面知乎学者

  • 间隔是两侧样本到超平面的距离之和,即margin = d1+d2,多个样本就有多个间隔值,那是不是每个间隔对超平面的贡献都一样的呢?答案是否定的,离超平面越近的样本越容易划分错误,因此离超平面越近的样本对超平面的影响越大,所以为了找到最大间隔超平面,首先要找到两侧离超平面最近的样本点,求出其到超平面的距离之和,即margin = min(d1+d2)。然后不同超平面,margin不同,为了找到最佳超平面,我们需要最大化margin,可以理解为泛化能力最大的那个超平面,即max margin

  • 一个超平面由法向量\(W\)和截距\(b\)决定,其方程为\(X^{T}W+b=0\), 可以规定法向量指向的一侧为正类,另一侧为负类。下图画出了三个平行的超平面,法方向取左上方向

    -为了找到最大间隔超平面,我们可以先选择分离两类数据的两个平行超平面,使得它们之间的距离尽可能大。在这两个超平面范围内的区域称为“间隔(margin)”,最大间隔超平面是位于它们正中间的超平面(最大间隔的超平面是唯一的)。这个过程如上图所示.

1.2.2 最大间隔

以上叙述转为数学表达,即max margin = max min(d1+d2)
点到直线的距离d:点W(\(X_{w},Y_{w}\))到直线AX+BY+C=0的距离等于
\(d=\frac{\left|A X_{w}+B Y_{w}+C\right|}{\sqrt{A^{2}+B^{2}}}\)
现在假设在样本集中,存在一个超平面 \(W^{T}X+b=0\) ,使得样本集线性可分,那么样本到超平面的距离d为:
\(d=\frac{\left|W^{T} X+b\right|}{\|W\|}\),其中\(\|W\|=\sqrt{w_{0}^{2}+w_{1}^{2}+\ldots+w_{n}^{2}}\),
所以,maxmargin \(=\max _{w, b} \min _{x_{i}}\left(2 * \frac{\left|W^{T} X_{i}+b\right|}{\|W\|}\right)\)
因为\(\frac{\left|W^{T} X_{i}+b\right|}{\|W\|}>0\),即\(\left|W^{T} X_{i}+b\right|>0\),所以一定存在一个k>0,使得\(\left|W^{T} X_{i}+b\right|=k\)

k取多少对超平面是没有影响的,因为只是平移 \(W_{T}X+b=0\)的k个单位,因此为了方便后面的计算,使|\(W_{T}X+b=1\)|,那么
maxmargin\(=\max _{W, b} \min _{x_{i}}\left(2 * \frac{1}{\|W\|}\right)=\max _{W, b}\left(2 * \frac{1}{\|W\|}\right)\)
就这样,将寻找最大间隔超平面的问题转化为数学优化问题,但这里有一个前提,就是这个超平面能把样本正确分类,这个大前提的数学表达式为
\(\left\{\begin{array}{l}{W^{T} X_{i}+b \leq-1, y_{i}=-1} \\ {W^{T} X_{i}+b \geq 1, y_{i}=1}\end{array} \Rightarrow y_{i}\left(W^{T} X_{i}+b\right) \geq 1\right.\)

另外求优化问题时,我们更喜欢转为凸优化,因为\(\max \frac{1}{\|W\|} \Leftrightarrow \min \|W\|\),且||W||是个带根号的值,为了方便运算,将||W||等同于 \({||W||}^2\) , 且乘上系数 1/2方便求导,因此最终优化问题表达式为:
\(\min _{W, b} \frac{1}{2}\|W\|^{2}\),约束条件,\(y i\left(W^{T} x_{i}+b\right) \geq 1\)

1.3 支持向量

在线性可分的情况下,训练数据集的样本点中与分离超平面距离最近的数据点称为支持向量(support vector),支持向量是使\(X_{i}^{T} W+b \geq+1, y_{i}=+1\)\(X_{i}^{T} W+b \leq-1, y_{i}=-1\)中的约束条件取等的点,即满足

在决定最佳超平面时只有支持向量起作用,而其他数据点并不起作用。如果移动非支持向量,甚至删除非支持向量都不会对最优超平面产生任何影响。也即支持向量对模型起着决定性的作用,这也是“支持向量机”名称的由来

1.4 对偶问题

那么怎么求解呢?对于高维数据、样本量非常大的时候,无法通过简单运算求解,这时候就会通过对偶、核技巧等方法求解。在求解之前先简单介绍一下带约束与不带约束的凸优化问题都是怎么求解的

  • 1) 不带约束条件:
    不带约束条件的求解是很容易得到的,直接求导求最小值就可以了。
  • 2) 带等式约束条件:
    带等式约束条件的一般会先通过拉格朗日乘子法转化为无约束后,再通过求导求解。

给定约束条件 \(h_{x}=0\),求min f(x) 的问题,可以先定义如下拉格朗日函数(λ为拉格朗日乘子): \(L(x, \lambda)=f(x)+\lambda h(x)\) ,即将等式约束转为无约束了,求解时分别对x,λ求导即可。

  • 3) 带不等式的约束条件
    带不等式的约束条件的优化问题,一般会先转化为带等式约束,再通过拉格朗日乘子法求解。如:给定约束条件 \(g(x)=0\) ,求min f(x) 的问题,首先定义一个k值,使得
    \(h(x, k)=g(x)+k^{2}=0\),接着定义如下拉格朗日函数(λ为拉格朗日乘子)\(L(x, \lambda, k)=f(x)+\lambda h(x, k)=f(x)+\lambda g(x)+\lambda k^{2}, \lambda \geq 0\)即将不等式约束转为无约束了,最后分别对各个参数求导即可.

1.4.1带不等式的约束条件时怎么求解的

这里我直接放个图

最终得到的条件也称为不等式约束优化问题的KKT条件,也是强对偶的必要条件
另外,从上图星号的公式也可以知道,当时, \({\lambda}_i}=0\)\(1-y_{i}\left(W^{T} x_{i}+b\right)<0\)此时约束条件是不起约束作用,只有当\({\lambda}_i}>0\)时, \(1-y_{i}\left(W^{T} x_{i}+b\right)=0\) ,约束条件才起约束作用,此时点 \((x_{i},y_{i})\) 称为支持向量。这也是为什么这个算法叫支持向量机的原因,真正对最佳超平面起作用的点只有支持向量,因此大大降低了的运算消耗。

1.4.2 强对偶能解决什么问题呢

强对偶可以根据计算的难度、复杂度在minmax与 maxmin之间转换


那么对偶问题是怎么应用到我们的优化问题当中的呢?现在我们的优化问题可以写成:

公式推导到这里 :
\(\max _{\lambda}\left(-\frac{1}{2} \sum_{i=0}^{n} \sum_{j=0}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=0}^{n} \lambda_{i}\right), \# \mapsto \sum_{i=0}^{n} \lambda_{i} y_{i}=0, \lambda_{i} \geq 0\)
可以看出来其实这是个二次规划问题,常用SMO序列最小算法解析算法求解,最终得出最佳参数\(\lambda^{*}\)
在已知 \(W^{*}\)(KKT条件), \(\lambda^{*}\) 的前提下,因为对最佳超平面起作用的只有支持向量,那么设点 \((x_{k},y_{k})\) 是一个支持向量,则 \(y_{k}\left(W^{* T} X_{k}+b\right)=1\),求得 \(b^*\)
最终最佳超平面的表达式为

\(f(x)=\operatorname{sign}\left(W^{* T} X+b^{*}\right)\)
\(W^{*}=\sum_{i=0}^{n} \lambda_{i} y_{i} x_{i}, b^{*}=y_{k}-\sum_{i=0}^{n} \lambda_{i} y_{i} x_{i} x_{k}\)

1.4.3 为何转化为对偶问题

  • 对偶问题更易求解,由下文知对偶问题只需优化一个变量\(\alpha\)且约束条件更简单;
  • 能更加自然地引入核函数,进而推广到非线性问题

以上都是解决线性问题or近似线性问题的

1.5 核函数

非线性SVM的解决方式
将线性支持向量机推广到非线性支持向量机。需要注意的是,不仅仅是SVM,很多线性模型都可以用核技巧推广到非线性模型,例如核线性判别分析(KLDA)

1.5.1 核函数的定义

支持向量机通过某非线性变换 φ( x) ,将输入空间映射到高维特征空间。特征空间的维数可能非常高。如果支持向量机的求解只用到内积运算,而在低维输入空间又存在某个函数 K(x, x′) ,它恰好等于在高维空间中这个内积,即K( x, x′) =<φ( x) ⋅φ( x′) > 。那么支持向量机就不用计算复杂的非线性变换,而由这个函数 K(x, x′) 直接得到非线性变换的内积,大大简化了计算。这样的函数 K(x, x′) 称为核函数。

官方解释真的复杂😢

1.5.2 非线性变换

定理:高维空间比低维空间更容易线性可分

前面提到当数据样本完全线性可分时,可以得到一个最佳超平面,那么当数据样本不是线性可分时,还可以得到一个最佳超平面吗?根据定理,在当前维度不能线性可分时,把样本通过非线性变化映射到更高维度,是有可能线性可分的。举个例子

1.5.3 内积运算

SVM最终优化的问题是
\(\max _{\lambda}\left(-\frac{1}{2} \sum_{i=0}^{n} \sum_{j=0}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=0}^{n} \lambda_{i}\right), \# \mapsto \sum_{i=0}^{n} \lambda_{i} y_{i}=0, \lambda_{i} \geq 0\)

当 φ( x)维度高到一定程度甚至无限维时,计算量会随着维度的增大而增大,而且计算完φ( x)后,还需要计算 \(\left(\varphi\left(x_{i}\right) \cdot \varphi\left(x_{j}\right)\right)\),这时可能会因为计算量过大而出现无法计算的情况,这时候就需要核函数拯救世界了。

1.5.4 核函数

核函数是指在低维输入空间中存在一个函数 K(x, x′) ,它恰好等于在高维空间中这个内积,即K( x, x′) =<φ( x) ⋅φ( x′) >,此时将会大大减小计算消耗,这就是为什么很多人将核函数也称为核技巧的原因,因为其相当于是一个计算技巧。
emmmmm。。还是有点懵逼!
常见的核函数有线性核函数、多项式核函数、高斯核函数等。

1.5.5 软件间隔

完全线性可分在现实中是很少的,大部分都并不是完全线性可分,有两种情况,一是需要通过非线性变化后才可能线性可分,二是在低维空间可以线性可分,但有一定量的错误。对于第二种情况,我们会使用软间隔划分,说白了就是没那么苛刻的硬间隔。

这里引入一个松弛变量 \(\xi\),优化问题:
\(\min _{W, b} \frac{1}{2}\|W\|^{2}+C \sum_{i=0}^{n} \xi_{i}\)
约束条件:\(y i\left(W^{T} x_{i}+b\right) \geq 1-\xi_{i}, \xi_{i} \geq 0\)
有点像加入正则化的感觉,因此这里的确是、对错误划分样本的惩罚

  • \(\xi_{i}\) 时,点落在最大间隔边上,点划分正确;

  • 当 0<\(\xi_{i}\)<1 时,点落在最大间隔内,点划分正确;

  • \(\xi_{i}=1\) 时,点落在超平面上,点划分正确;

  • \(\xi_{i}>1\) 时,点划分错误;

接下来的求解过程跟上述类似,先构建拉格朗日乘子函数:
\(L(w, b, \xi, \lambda, u)=\frac{1}{2}\|W\|^{2}+C \sum_{i=0}^{n} \xi_{i}+\sum_{i=0}^{n} \lambda_{i}\left(1-\xi_{i}-y i\left(W^{T} x_{i}+b\right)\right)-\sum_{i=0}^{n} u_{i} \xi_{i}\)

接下来的求解过程跟上述类似,先构建拉格朗日乘子函数:
其中 \(\lambda_{i} \geq 0, u_{i} \geq 0\)

可能有朋会问为啥最后那一项是减而不是加,这里提醒一下,拉格朗日乘子法的约束条件是小于等于0的。然后还是强对偶转换,求导代入,最后得到:
\(\max _{\lambda}\left(-\frac{1}{2} \sum_{i=0}^{n} \sum_{j=0}^{n} \lambda_{i} \lambda_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=0}^{n} \lambda_{i}\right)\)

其中\(\sum_{i=0}^{n} \lambda_{i} y_{i}=0, \lambda_{i} \geq 0, \quad C-\lambda_{i}-u_{i}=0\)
对比一下硬间隔和软间隔,最终得到的优化问题是一致的,不同的地方在于软间隔增加了一个约束条件\(\quad C-\lambda_{i}-u_{i}=0\)

posted @ 2020-02-17 17:46  高文星星  阅读(442)  评论(0编辑  收藏  举报