SVM学习总结(一)

前言:git

​ 在学习机器学习的过程当中,我一直有总结的习惯,只不过是局限于纸张层面的,有利于平时拿过来就能看,还有一个缘由是:写博客时,手敲公式实在太麻烦。不过,前几天偶然发现一个写公式的神器(Mathpix Snipping Tool),终于有动力把笔记整理出来。github

​ 这篇写SVM的缘由是,我对SVM一直理解不太透彻,借助此次机会我又查了一些资料,但愿此次彻底解释清楚,错误之处欢迎指正,我会尽快修正。算法

​ 本章节内容主要参考于七月在线机器学习视频课程,七月在线题库七月在线陈老师课件,以及李航统计学习方法 。机器学习

1.如何理解分类

​ 分类的本质就是寻找决策边界,SVM的目的就是找到一个决策边界,分开正负样本,而且样本点到边界的距离越远越好。ide

​ 咱们能够先用Logistic回归来理解。函数

​ 给定训练数据集,若是用x表示数据点,用y表示类别(y能够取1或者0,分别表明两个不一样的类),Logistic回归中就是找到一个决策边界$$\theta^{T} x=0$$,带入x后,获得自由变量,因为自变量的取值范围是负无穷到正无穷。所以,使用logistic函数(或称做sigmoid函数)将自变量映射到(0,1)上:学习

$$ h_{\theta}(x)=g\left(\theta^{T} x\right)=\frac{1}{1+e^{-\theta^{T} x}} $$优化

其中x是n维特征向量,函数g就是logistic函数。spa

​ 从而,当咱们要判别一个新来的特征属于哪一个类时,只需求便可,若大于0.5就是y=1的类,反之属于y=0类。3d

​ 而后,咱们对logistic回归作个变形。首先,将使用的结果标签y = 0和y = 1替换为y = -1,y = 1,而后将

($\theta^{T} x=\theta_{0}+\theta_{1} x_{1}+\theta_{2} x_{2}+\cdots+\theta_{n} x_{n}$)中的$\theta_{0}$替换为b,最后将后面的($\theta_{1} x_{1}+\theta_{2} x_{2}+\dots+\theta_{n} x_{n}$)替换为($\theta_{1} x_{1}+\theta_{2} x_{2}+\dots+\theta_{n} x_{n}$)(即$w^{T} x$),这样就有了$\theta^{T} x=w^{T} x+b$,这里其实就是决策边界的另外一种表达方式。带入到变换中,获得的公式:$h_{w, b}(\mathrm{x})=g\left(w^{T} x+\mathrm{b}\right)$,将其映射到y上,以下:

$$ g(z)=\left{\begin{aligned} 1, & z \geq 0 \-1, & z<0 \end{aligned}\right. $$

2.另外一种分类

​ 在SVM中,边界函数就是$f(x)=w^{T} x+b$。表示,当f(x) 等于0的时候,x即是位于超平面上的点,而f(x)大于0的点对应 y=1 的数据点,f(x)小于0的点对应y=-1的点。

​ 在进行分类的时候,遇到一个新的数据点x,将x代入f(x) 中,若是f(x)小于0则将x的类别赋为0,若是f(x)大于0则将x的类别赋为1。

​ 线性可分支持向量机(硬间隔支持向量机):给定线性可分训练数据集,经过间隔最大化或等价地求解相应地凸二次规划问题学习获得分离超平面为$f(x)=w^{T} x+b$

​ 以及相应的分类决策函数

$$ \begin{align*} \& f \left( x \right) = sign \left( w^{T} \cdot x + b \right) \end{align*} $$

称为线型可分支持向量机。

3.函数间隔和几何间隔

​ 在超平面wx+b=0肯定的状况下,$\left|\mathrm{w}^{\star} x+b\right|$可以表示点x到距离超平面的远近,而经过观察wx+b的符号与类标记y的符号是否一致可判断分类是否正确,因此,能够用$\left(y^{*}\left(w^{\star} x+b\right)\right)$的正负性来断定或表示分类的正确性。

​ 于此,便引出了函数间隔的概念。

函数间隔用$\hat{\gamma}$表示,超平面关于样本点的函数间隔为

$$ \hat{\gamma}=y\left(w^{T} x+b\right)=y f(x) $$

​ 超平面(w,b)关于T中全部样本点(xi,yi)的函数间隔最小值(其中,x是特征,y是结果标签,i表示第i个样本),便为超平面(w, b)关于训练数据集T的函数间隔

$$ \hat{\gamma}=\min \hat{\gamma} \mathrm{i}(\mathrm{i}=1, \ldots \mathrm{n}) $$

即超平面关于训练集𝑇中全部样本点的函数间隔的最小值

超平面关于样本点的几何间隔为

$$ \begin{align*} \& \gamma_{i} = y_{i} \left( \dfrac{w}{| w |} \cdot x_{i} + \dfrac{b}{| w |} \right) \end{align*} $$

超平面关于训练集$T$的几何间隔:

$$ \begin{align*} \& \gamma = \min_{i = 1, 2, \cdots, N} \gamma_{i} \end{align*} $$

即超平面关于训练集$T​$中全部样本点的几何间隔的最小值。

下面介绍一下几何间隔是怎么来的:

​ 因为这样定义的函数间隔有问题,即若是成比例的改变w和b(如将它们改为2w和2b),则函数间隔的值f(x)却变成了原来的2倍(虽然此时超平面没有改变),因此只有函数间隔还远远不够。

​ 咱们能够对法向量w加些约束条件,从而引出真正定义点到超平面的距离--几何间隔(geometrical margin)的概念。

​ 假定对于一个点$x$ ,令其垂直投影到超平面上的对应点为 $x_{0}$,$w$是垂直于超平面的一个向量,$\gamma$为样本$x$到超平面的距离,

根据平面几何知识,有

$$ x=x_{0}+\gamma \frac{w}{|w|} $$

其中$\frac{w}{|w|}$是单位向量。

​ 又因为$\boldsymbol{w}^{T} \boldsymbol{x}+\boldsymbol{b}=0$ 是超平面上的点,代入超平面的方程$w^{T} x_{0}+b=0$,可得$w^{T} x_{0}+b=0$,即$w^{T} x_{0}=-b$。

​ 随即让此式$x=x_{0}+\gamma \frac{w}{|w|}$的两边同时乘以$w^{T}$,再根据$w^{T} x_{0}=-b$和$w^{T} w=|w|^{2}$,便可算出γ:

$$ \gamma=\frac{w^{T} x+b}{|w|}=\frac{f(x)}{|w|} $$

为了获得的$\gamma$绝对值,令$\gamma$乘上对应的类别 y,便可得出几何间隔(用$\tilde{\gamma}$表示)的定义:

$$ \tilde{\gamma}=y \gamma=\frac{\hat{\gamma}}{|w|} $$

​ 几何间隔就是函数间隔除以$$||w||$$,并且函数间隔y*(wx+b) = y*f(x)实际上就是$|f(x)|$,只是人为定义的一个间隔度量,而几何间隔$|f(x)|/||w||$才是直观上的点到超平面的距离

4.最大间隔分类器

​ 对一个数据点进行分类,当超平面离数据点的“间隔”越大,分类的确信度(confidence)也越大。因此,为了使得分类的确信度尽可能高,须要让所选择的超平面可以最大化这个“间隔”值。这个间隔就是下图中的Gap的一半。

​ 函数间隔不适合用来最大化间隔值,由于在超平面固定之后,能够等比例地缩放w的长度和b的值,这样可使得$f(x)=w^{T} x+b$的值任意大,就是说函数间隔$\hat{\gamma}$能够在超平面保持不变的状况下被取得任意大。但几何间隔由于除上了$|w|$,使得在缩放w和b的时候几何间隔的值$\tilde{\gamma}$是不会改变的,它只随着超平面的变更而变更,所以,这是更加合适的一个间隔。换言之,这里要找的最大间隔分类超平面中的“间隔”指的是几何间隔

(硬间隔)支持向量:训练数据集的样本点中与分离超平面距离最近的样本点的实例,即便约束条件等号成立的样本点

$$ \begin{align*} \ & y_{i} \left( w \cdot x_{i} + b \right) -1 = 0 \end{align*} $$

对$y_{i} = +1$的正例点,支持向量在超平面

$$ \begin{align*} \ & H_{1}:w \cdot x + b = 1 \end{align*} $$

对$y_{i} = -1$的正例点,支持向量在超平面

$$ \begin{align*} \ & H_{1}:w \cdot x + b = -1 \end{align*} $$

$H_{1}$和$H_{2}$称为间隔边界。

$H_{1}$和$H_{2}$之间的距离称为间隔,且$|H_{1}H_{2}| = \dfrac{1}{| w |} + \dfrac{1}{| w |} = \dfrac{2}{| w |}$。

最大间隔分离超平面等价为求解

$$ \begin{align*} \& \max_{w,b} \quad \gamma \ & s.t. \quad y_{i} \left( \dfrac{w}{| w |} \cdot x_{i} + \dfrac{b}{| w |} \right) \geq \gamma, \quad i=1,2, \cdots, N \end{align*} $$

​ 回顾下几何间隔的定义$\tilde{\gamma}=y \gamma=\frac{\hat{\gamma}}{|w|}$,可知:若是令函数间隔$\hat{\gamma}$等于1(这里的$\hat{\gamma}$指的是关于训练数据集T的函数间隔$min\hat{\gamma}_i=1$,之因此令$\hat{\gamma}$等于1,是为了方便推导和优化,且这样作对目标函数的优化没有影响),则有几何间隔$\tilde{\gamma}=1 /|w|$。

​ 从而上述目标函数转化成了$y_{i}\left(w^{T} x_{i}+b\right) \geq 1, i=1, \dots, n$

等价的,最大间隔分离超平面转换为:

$$ \begin{align*} \ & \max_{w,b} \quad \dfrac{1}{| w |} \ & s.t. \quad y_{i} \left( w \cdot x_{i} + b \right) \geq \hat \gamma, \quad i=1,2, \cdots, N \end{align*} $$

等价的

$$ \begin{align*} \ & \min_{w,b} \quad \dfrac{1}{2} | w |^{2} \ & s.t. \quad y_{i} \left( w \cdot x_{i} + b \right) -1 \geq 0, \quad i=1,2, \cdots, N \end{align*} $$

​ 以下图所示,中间的实线即是寻找到的最优超平面(Optimal Hyper Plane),其到两条虚线边界的距离相等,这个距离即是几何间隔,两条虚线间隔边界之间的距离等于2,而虚线间隔边界上的点则是支持向量。因为这些支持向量恰好在虚线间隔边界上,因此它们知足$y\left(w^{T} x+b\right)=1$ ,上节中:为了方便推导和优化的目的,咱们能够令$min\hat{\gamma}_i=1$,而对于全部不是支持向量的点,则显然有$y\left(w^{T} x+b\right)>1$。

5.SVM求解思路:

线性可分支持向量机学习算法(最大间隔法):

输入:线性可分训练数据集$T = \left{ \left( x_{1}, y_{1} \right), \left( x_{2}, y_{2} \right), \cdots, \left( x_{N}, y_{N} \right) \right}$,其中$x_{i} \in \mathcal{X} = R^{n}, y_{i} \in \mathcal{Y} = \left{ +1, -1 \right}, i = 1, 2, \cdots, N$

输出:最大间隔分离超平面和分类决策函数

  1. 构建并求解约束最优化问题

    $$ \begin{align*} \ & \min_{w,b} \quad \dfrac{1}{2} | w |^{2} \ & s.t. \quad y_{i} \left( w \cdot x_{i} + b \right) -1 \geq 0, \quad i=1,2, \cdots, N \end{align*} $$

    求得最优解$w^{}, b^{}$。

  2. 获得分离超平面

    $$ \begin{align*} \ & w^{} \cdot x + b^{} = 0 \end{align*} $$

    以及分类决策函数

    $$ \begin{align*} \& f \left( x \right) = sign \left( w^{} \cdot x + b^{} \right) \end{align*} $$

6.解SVM

对于目标函数:

$$ \begin{align*} \ & \min_{w,b} \quad \dfrac{1}{2} | w |^{2} \ & s.t. \quad y_{i} \left( w \cdot x_{i} + b \right) -1 \geq 0, \quad i=1,2, \cdots, N \end{align*} $$

​ 由于如今的**目标函数是二次的,约束条件是线性的,因此它是一个凸二次规划问题****。这个问题能够用现成的QP (Quadratic Programming) 优化包进行求解。一言以蔽之:在必定的约束条件下,目标最优,损失最小

​ 因为这个问题的特殊结构,还能够经过拉格朗日对偶性(Lagrange Duality)变换到对偶变量 (dual variable) 的优化问题,即经过求解与原问题等价的对偶问题(dual problem)获得原始问题的最优解,这就是线性可分条件下支持向量机的对偶算法,这样作的优势在于:一者对偶问题每每更容易求解;两者能够天然的引入核函数,进而推广到非线性分类问题

​ 那什么是拉格朗日对偶性呢?简单来说,经过给每个约束条件加上一个拉格朗日乘子(Lagrange multiplier),定义拉格朗日函数(经过拉格朗日函数将约束条件融合到目标函数里去,从而只用一个函数表达式便能清楚的表达出咱们的问题):

最优化问题的求解:

  1. 引入拉格朗日乘子$\alpha_{i} \geq 0, i = 1, 2, \cdots, N$构建拉格朗日函数

    $$ \begin{align*} \ & L \left( w, b, \alpha \right) = \dfrac{1}{2} | w |^{2} + \sum_{i=1}^{N} \alpha_{i} \left[- y_{i} \left( w \cdot x_{i} + b \right) + 1 \right] \ & = \dfrac{1}{2} | w |^{2} - \sum_{i=1}^{N} \alpha_{i} y_{i} \left( w \cdot x_{i} + b \right) + \sum_{i=1}^{N} \alpha_{i} \end{align*} $$

    其中,$\alpha = \left( \alpha_{1}, \alpha_{2}, \cdots, \alpha_{N} \right)^{T}$为拉格朗日乘子向量。

  2. 求$\min_{w,b}L \left( w, b, \alpha \right)$:

    $$ \begin{align*} \ & \nabla {w} L \left( w, b, \alpha \right) = w - \sum{i=1}^{N} \alpha_{i} y_{i} x_{i} = 0 \ & \nabla {b} L \left( w, b, \alpha \right) = -\sum{i=1}^{N} \alpha_{i} y_{i} = 0 \end{align*} $$

    $$ \begin{align*} \ & w = \sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}
    \ & \sum_{i=1}^{N} \alpha_{i} y_{i} = 0 \end{align*} $$

    代入拉格朗日函数,得

    $$ \begin{align*} \ & L \left( w, b, \alpha \right) = \dfrac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} \left( x_{i} \cdot x_{j} \right) - \sum_{i=1}^{N} \alpha_{i} y_{i} \left[ \left( \sum_{j=1}^{N} \alpha_{j} y_{j} x_{j} \right) \cdot x_{i} + b \right] + \sum_{i=1}^{N} \alpha_{i} \ & = - \dfrac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} \left( x_{i} \cdot x_{j} \right) - \sum_{i=1}^{N} \alpha_{i} y_{i} b + \sum_{i=1}^{N} \alpha_{i} \ & = - \dfrac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} \left( x_{i} \cdot x_{j} \right) + \sum_{i=1}^{N} \alpha_{i} \end{align*} $$

    $$ \begin{align*} \ & \min_{w,b}L \left( w, b, \alpha \right) = - \dfrac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} \left( x_{i} \cdot x_{j} \right) + \sum_{i=1}^{N} \alpha_{i} \end{align*} $$

    3.求$\max_{\alpha} \min_{w,b}L \left( w, b, \alpha \right)$:

    $$ \begin{align*} \ & \max_{\alpha} - \dfrac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} \left( x_{i} \cdot x_{j} \right) + \sum_{i=1}^{N} \alpha_{i}
    \ & s.t. \sum_{i=1}^{N} \alpha_{i} y_{i} = 0 \ & \alpha_{i} \geq 0, \quad i=1,2, \cdots, N \end{align*} $$

    等价的

    $$ \begin{align*} \ & \min_{\alpha} \dfrac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} \left( x_{i} \cdot x_{j} \right) - \sum_{i=1}^{N} \alpha_{i}
    \ & s.t. \sum_{i=1}^{N} \alpha_{i} y_{i} = 0 \ & \alpha_{i} \geq 0, \quad i=1,2, \cdots, N \end{align*} $$

    线性可分支持向量机(硬间隔支持向量机)学习算法:

    输入:线性可分训练数据集$T = \left{ \left( x_{1}, y_{1} \right), \left( x_{2}, y_{2} \right), \cdots, \left( x_{N}, y_{N} \right) \right}$,其中$x_{i} \in \mathcal{X} = R^{n}, y_{i} \in \mathcal{Y} = \left{ +1, -1 \right}, i = 1, 2, \cdots, N$

    输出:最大间隔分离超平面和分类决策函数

    1. 构建并求解约束最优化问题

      $$ \begin{align*} \ & \min_{\alpha} \dfrac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j} \left( x_{i} \cdot x_{j} \right) - \sum_{i=1}^{N} \alpha_{i}
      \ & s.t. \sum_{i=1}^{N} \alpha_{i} y_{i} = 0 \ & \alpha_{i} \geq 0, \quad i=1,2, \cdots, N \end{align*} $$

      求得最优解$\alpha^{} = \left( \alpha_{1}^{}, \alpha_{1}^{}, \cdots, \alpha_{N}^{} \right) $。

    2. 计算

      $$ \begin{align*} \ & w^{} = \sum_{i=1}^{N} \alpha_{i}^{} y_{i} x_{i} \end{align*} $$

      并选择$\alpha^{}$的一个正份量$\alpha_{j}^{} > 0$,计算

      $$ \begin{align*} \ & b^{} = y_{j} - \sum_{i=1}^{N} \alpha_{i}^{} y_{i} \left( x_{i} \cdot x_{j} \right) \end{align*} $$

    3. 获得分离超平面

      $$ \begin{align*} \ & w^{} \cdot x + b^{} = 0 \end{align*} $$

      以及分类决策函数

      $$ \begin{align*} \& f \left( x \right) = sign \left( w^{} \cdot x + b^{} \right) \end{align*} $$

7.线性支持向量机(软间隔支持向量机)

​ 以上分析的是硬间隔支持向量机,在间隔空间中没有样本,样本集是线性可分的。但若是给定线性不可分训练数据集,则须要增长松弛因子,再经过求解凸二次规划问题 ,获得分离超平面。

$$ \begin{align*} \ & \min_{w,b,\xi} \quad \dfrac{1}{2} | w |^{2} + C \sum_{i=1}^{N} \xi_{i} \ & s.t. \quad y_{i} \left( w \cdot x_{i} + b \right) \geq 1 - \xi_{i} \ & \xi_{i} \geq 0, \quad i=1,2, \cdots, N \end{align*} $$

学习获得分离超平面为

$$ \begin{align*} \& w^{} \cdot x + b^{} = 0 \end{align*} $$

以及相应的分类决策函数

$$ \begin{align*} \& f \left( x \right) = sign \left( w^{} \cdot x + b^{} \right) \end{align*} $$

称为线型支持向量机。

8.核函数

​ 大部分时候数据并非线性可分的,这个时候知足这样条件的超平面就根本不存在。在上文中,咱们已经了解到了SVM处理线性可分的状况,那对于非线性的数据SVM咋处理呢?对于非线性的状况,SVM 的处理方法是选择一个核函数 κ(⋅,⋅) ,经过将数据映射到高维空间,来解决在原始空间中线性不可分的问题 。

​ 具体来讲,在线性不可分的状况下,支持向量机首先在低维空间中完成计算,而后经过核函数将输入空间映射到高维特征空间,最终在高维特征空间中构造出最优分离超平面,从而把平面上自己很差分的非线性数据分开。如图所示,一堆数据在二维空间没法划分,从而映射到三维空间里划分:

经常使用核函数:

  1. 多项式核函数

    $$ \begin{align*} \& K \left( x, z \right) = \left( x \cdot z + 1 \right)^{p} \end{align*} $$

  2. 高斯核函数

    $$ \begin{align*} \& K \left( x, z \right) = \exp \left( - \dfrac{| x - z |^{2}}{2 \sigma^{2}} \right) \end{align*} $$

非线性支持向量机:从非线性分类训练集,经过核函数与软间隔最大化,学习获得分类决策函数

$$ \begin{align*} \& f \left( x \right) = sign \left( \sum_{i=1}^{N} \alpha_{i}^{} y_{i} K \left(x, x_{i} \right) + b^{} \right) \end{align*} $$

称为非线性支持向量机,$K \left( x, z \right)$是正定核函数。

相关文章
相关标签/搜索