机器学习知识点总结 - SVM

SVM是第一个开始深入学习并大部分理解的算法。趁着2018年的最后一天,抓紧时间,总结一下自己学到的东西,和大家分享一下!

参考资料:周志华老师的《机器学习》+李航老师的《统计学习方法》

SVM是一种监督学习的二分类算法。基本SVM可以用来解决样本空间中线性可分的问题。通过引入核函数,可以将在原始样本空间线性不可分的问题,转换成为在高维特征空间中线性可分的问题,进而得以解决。另外,针对那些在样本空间线性不可分,也未找到合适的核函数将其转换到线性可分的特征空间的问题,可以通过引入“软间隔”的思想来进行解决。

接下来,将从以下几个方面进行介绍:

  1. 基本概念
  2. SVM的基本原理 - 硬间隔SVM:用来解决样本空间中线性可分的问题
  3. 核函数: 用来解决样本空间非线性可分,但特征空间线性可分的问题
  4. 软间隔SVM:用来解决在样本空间/特征空间中均费线性可分,但近似线性可分的问题
  5. SVR:用来解决回归问题
  6. SMO求解算法详细介绍:略

1. 基本概念

线性可分:存在一个超平面,能够将不同类别的样本完全划分开

线性不可分:不存在一个超平面,将不同类别的样本完全划分开

硬间隔:存在一个超平面,能够将不同类别的样本完全划分开,将所有样本都划分正确

软间隔:对于划分超平面,不要求将所有样本划分正确,反而允许某些样本未被划分正确的思想,成为软间隔

2. SVM的基本原理 - 硬间隔SVM

给定训练样本集合D = \left \{ (x_1,y_1),(x_2,y_2),...,(x_m,y_m) \right \}, y_i\in \left\{-1,+1\right\}

支持向量机(Support Vector Machine, SVM)的基本思想就是:基于训练集D在样本空间中找到一个 “最优”超平面,将不同类别的样本分开,使得训练集上正负样本的间隔最大。

图1.1 描述了多个分割超平面,这些超平面都可以将样本划分开,但是哪个才是最好的呢?最好的超平面需要满足的要求是:这个超平面产生的分类结果是最鲁棒的,对从未出现的样本的泛化能力最强。故而,图1.1中,红色的超平面应该是最优的超平面。

机器学习知识点总结 - SVM_第1张图片
图1.1 多个分割超平面对数据集进行划分

接下来,我们从公式的推倒过程中探寻SVM的原理。

  • 划分超平面可以用线性方程来表示:
w^{T}x+b=0 公式(1.1)

       其中,w = (w_1,w_2,...,w_d)^{T}为法向量,决定了超平面的方向;b为位移项,决定了超平面与原点之间的距离。超平面可以被(w,b)唯一确定。

  • 几何间隔:给定超平面(w,b),样本空间任意的点(x_i,y_i)到该超平面(w,b)的距离

r = \frac{|w^{T}x+b|}{\left \| w \right \|} 公式(1.2)
  •  函数间隔

       公式(1.3)给出了样本点(x_i,y_i)到超平面(w,b)的函数间隔:

\hat{\gamma_i}=y_i(w^{T}x_i+b) 公式(1.3)

       公式(1.4)给出了超平面(w,b)关于训练集合D的函数间隔,即:超平面(w,b)关于D中所有样本点的函数间隔的最小值。

\gamma=min_{(i=1,...,N)}\hat{\gamma_i} 公式(1.4)

       函数间隔可以表示分类的正确性和确信度。

       |w^{T}x+b|反应了样本点到超平面的距离的远近;而y_i的符号与 w^{T}x+b的符号是否一致则反应了预测是否正确。     

  • 支持向量 (support vector)

       假设超平面对样本能够分类正确,即对于(x_i,y_i)\in D,若y_i=1,则有w^{T}x_i+b>0; 若y_i=-1,则有w^{T}x_i+b<0。可写成公式(1.5)。

公式(1.5)

       另外,公式(1.5)可以被简写为公式(1.6)。

y_i(w^{T}x_i+b)\geqslant1 公式(1.6)

       之所以在公式(1.5)和(1.6)的右侧使用1作为阈值,而不是其他的数值,是因为即便使用其他的数值,也可以通过约分化简为距离1。而公式(1.6)的左侧就是点到超平面的函数间隔的定义。

       接下来,我们给出支持向量的定义。如图1.2所示,距离超平面最近的几个样本点,能够使得公式(1.5)和公式(1.6)等号成立。这些样本点被称为“支持向量”

     

机器学习知识点总结 - SVM_第2张图片
图1.2 支持向量与间隔

     回顾前面介绍的函数距离的定义可知,支持向量代表对应的就是在不同类别的样本集合中具有最小函数距离的样本点

     两个异类支持向量到超平面的距离之和可表示为公式为(1.7),该公式被称为“距离”。

\gamma = \frac{2}{\left \| w \right \|} 公式(1.7)

至此,我们可以知道,SVM的目标就是找到具有“最大间隔”的划分超平面。

  • 目标函数

      根据上面的推倒,可知SVM的目标函数可以写成公式(1.8),即求导满足公式(1.8)中约束的参数。

max_{(w,b)} \frac{2}{\left \| w \right \|} 

       s.t.    y_i(w_i^{T} x+b)\geqslant 1, i=1,2,...,m

公式(1.8)

    由于在优化算法中,通常是对最小值进行求解。故而,我们可以将公式(1.8)转换成下列公式:

min_{(w,b)} \frac{1}{2}\left \| w^2 \right \|   

      s.t.    y_i(w_i^{T} x+b)\geqslant 1, i = 1,2,...,m

公式(1.8)

    到此,这就是SVM的基本算法原型。

    由于该种情况要求样本集合线性可分,要求SVM能够找到一个超平面对所有的样本都划分正确,故而基本SVM也就是“硬间隔SVM”。

  • 目标函数的求解

       SVM的目标函数求解属于凸优化问题,我们可以利用拉格朗日乘子法进行求解。拉格朗日乘子法的详细介绍可以参考我的上一篇文章:《机器学习知识点总结 - 拉格朗日乘子法(Lagrange Multiplier Method)详解》。

   (1)构造拉格朗日函数L

   L(w,b,\alpha) = \frac{1}{2}\left \| w^2 \right \|+\sum_{i=1}^{m} \alpha(1-y_i(w^Tx_i+b))

公式(1.9)

           其中,\alpha = (\alpha_2,\alpha_2,...,\alpha_m)^T\alpha_i\geqslant 0.

   (2)令L(w,b,\alpha )wb的偏导为零,可得:

   w = \sum_{i=1}^{m}\alpha_i y_i x_i

公式(1.10)
   0 = \sum_{i=1}^{m}\alpha_i y_i 公式(1.11)

   (3)将公式(1.10),带入公式(1.9),即可将L(w,b,\alpha )中的wb消去;再结合公式(1.11)中的约束,可以得到对偶问题。并可解得\alpha

   max_\alpha \sum_{i=1}^{m}\alpha_i - \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i \alpha_j y_i y_j x_i^Tx_j

         s.t.    \alpha_i\geqslant 0, \sum_{i=1}^{m}\alpha_i y_i = 0, i=1,2,...,m

公式(1.12)

 

可以利用SMO(序列最小化算法)对公式(1.12)中的未知变量\alpha进行求解。解出\alpha后,求出wb即可得到SVM模型。

   f(x) = w^T x + b = \sum_{i=1}^{m}\alpha_i y_i x_i^T x_j+b

公式(1.13)

2. 核函数

在上节中,我们仅介绍了SVM如何对样本空间线性可分的情况进行超平面求解。但是在实际中,原始样本空间也许不存在一个能够正确划分样本的超平面,例如经典的”异或“问题,如图2.1左侧图所示。

对于这种问题,可以引入核函数,将样本从原始空间映射到一个更高维度的特征空间,使得样本在这个特征空间上线性可分。如下图所示。

                                           图2.1 异或问题与非线性映射

如果样本的原始空间是有限维,那么一定会存在一个高维线性空间使得样本线性可分。

接下来,我们将首先进行入带核函数的SVM的推导,然后介绍一下核函数需要满足的条件及常用的核函数

2.1 Kernel-SVM的公式表示和推导

首先,我们对带核函数的svm的表示进行推导。

  • \phi (x)表示将x映射后的特征向量。于是,在特征空间上的线性模型可以表示为:

   f(x) = w^T \phi (x)+b

公式(2.1)

       其中w,b是模型参数,分别代表法向量和位移项。

  • 目标函数, 与上一节推倒类似,可以得到目标函数。

   min_{(w,b)} \frac{1}{2}\left \| w^2 \right \|   

      s.t.    y_i(w_i^{T} \phi (x)+b)\geqslant 1, i = 1,2,...,m

公式(2.2)
  • 对偶问题,利用拉个朗日乘子法构造拉格朗日方程并令w,b的偏导数为0,可以构造其对偶问题。

   max_\alpha \sum_{i=1}^{m}\alpha_i - \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i \alpha_j y_i y_j \phi (x_i)^T \phi (x_j)

         s.t.    \alpha_i\geqslant 0, \sum_{i=1}^{m}\alpha_i y_i = 0, i=1,2,...,m

公式(2.2)
  • 核函数定义的引出

公式(2.2)中,涉及到计算\phi (x_i)^T \phi (x_j),这是样本x_i, x_j到特征空间的内积。由于特征空间维度可能很高,所以直接计算该内积是困难的。

为此,我们引出这样一个函数该函数满足公式(2.3)所给的条件,即:我们可以通过k(x_i,x_j)直接求得样本点在特征空间的内积,进而降低计算难度。这个函数k(x_i,x_j)就是我们所说的核函数

   k(x_i,x_j) = <\phi(x_i),\phi(x_j)>=\phi (x_i)^T \phi (x_j)

公式(2.3)

这样,我们可以将公式(2.2)的对偶函数改写成:

   max_\alpha \sum_{i=1}^{m}\alpha_i - \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i \alpha_j y_i y_j k(x_i,x_j)

         s.t.    \alpha_i\geqslant 0, \sum_{i=1}^{m}\alpha_i y_i = 0, i=1,2,...,m

公式(2.4)
  • 目标函数的求解

根据拉格朗日方程中对w的偏导等于0,可以求出w,并将其带入超平面的公式,可以得到目标函数的解。

   f(x) = w^T x + b = \sum_{i=1}^{m}\alpha_i y_i \phi(x_i)^T \phi(x_j)+b = \sum_{i=1}^{m}\alpha_i y_i k(x_i,x_j) +b

公式(2.5)

2.2 核函数的一些基本概念

  • 什么样的函数可以成为核函数?

         答:令\chi为输入空间,k(\cdot, \cdot)是定义在\chi\times \chi上的对称函数,则当满足对任意数据集D=\left \{ x_1,x_2,...,x_m \right \}”核矩阵“K都是半正定的,那么k(\cdot, \cdot)就可以作为一个核函数。其中,K的定义为:

机器学习知识点总结 - SVM_第3张图片 公式(2.6)

任何一个核函数都隐式的定义了一个成为”再生希尔伯特空间“的特征空间。

  • 常见的核函数

       机器学习知识点总结 - SVM_第4张图片

  • 核函数的基本定理
    • 两个核函数k_1,k_2,对于任意正数a_1,a_2,他们的线性组合a_1k_1+a_2k_2仍然是核函数
    • 两个核函数k_1,k_2的直积k_1\otimes k_2(x,z)=k_1(x,z)k_2(x,z)仍然是核函数
    • k_1为核函数,则对于任意函数g(x)k(x,z) = g(x)k_1(x,z)g(z)也是核函数

3. 软间隔SVM

在前面的章节中,我们一直建立在训练样本在样本空间特征空间中是线性可分的,即:存在一个超平面能够将不同类别的样本完全分开。但是,现实中,很难找到一个合适的核函数能够使得训练样本在特征空间中线性可分。

为此,我们引入了”软间隔“,即:允许支持向量机在一些样本上出错。换句话说,允许某些样本不满足公式(1.6)的约束条件: y_i(w^{T}x_i+b)\geqslant1

所以,我们的目标函数应该是:最大化间隔的同时,使得不满足约束条件的样本尽可能的少。于是,优化目标可以写成:

min_{(w,b)} \frac{1}{2}\left \| w^2 \right \| + C\sum_{i=1}^{m}l_{0/1}(y_i(w^{T}x_i+b)-1)    

公式(3.1)

其中,C是一个大于0的常数,l_{0/1}是”0/1损失函数“

l_{0/1}(z) = \left \{ \begin{matrix} 1 & if z> 0\\ 0 & if z\leqslant 0 \end{matrix} \right.    

公式(3.2)

于是,当C无穷大时,迫使全部样本均满足公式(1.6)的约束,即问题转变为”硬间隔“SVM;当C取有限值时,公式(3.2)允许一部分样本不满足公式(1.6)的约束条件。

由于l_{0/1}是非凸,非连续的函数,数学性质不好。故而,常常用一些替代损失函数来替代它。比较常用的有:

Hinge损失

   l_{hinge}(z) = max(0,1-z)    

公式(3.3)
指数损失    l_{exp}(z) = exp(-z) 公式(3.4)
对率损失    l_{log}(z) = log(1+exp(-z))    公式(3.5)

若采用hinge损失,则可将公式(3.1)重写成:

min_{(w,b)} \frac{1}{2}\left \| w^2 \right \| + C\sum_{i=1}^{m}max(0,1-y_i(w^Tx_i+b))    

公式(3.6)

引入松弛变量\xi _i\geqslant 0, 可将公式(3.6)重写成:

min_{(w,b)} \frac{1}{2}\left \| w^2 \right \| + C\sum_{i=1}^{m}\xi _i     

s.t. y_i(w^Tx_i+b)\geq 1-\xi_i,

      \xi_i \geqslant 0

公式(3.7)

接下来,可以利用拉格朗日乘子法构造拉格朗日方程,进行求解。

公式(3.7)对应的拉格朗日方程为:

      L(w,b,\alpha,\xi,\mu ) = \frac{1}{2} \left \| w \right \|^2+C\sum_{i=1}^{m}\xi_i + \sum_{i=1}^{m}\alpha_i(1-\xi_i-y_i(w^Tx_i+b)) - \sum_{i=1}^{m}\mu_i\xi_i

公式(3.8)

其中拉格朗日乘子\alpha_i\geqslant 0, \xi_i\geqslant 0

L(w,b,\alpha,\xi,\mu )w,b,\xi_i求偏导数,并令偏导数为0,可以得出:

   w = \sum_{i=1}^{m}\alpha_i y_i x_i

公式(3.9)
   0 = \sum_{i=1}^{m}\alpha_i y_i 公式(3.10)
   C = \alpha_i + \mu_i 公式(3.11)

将公式(3.9 - 3.11)带入公式(3.8),可以得到对偶问题。然后利用SMO算法可以求解。

   max_\alpha \sum_{i=1}^{m}\alpha_i - \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i \alpha_j y_i y_j x_i^Tx_j

         s.t.    C\geqslant \alpha_i\geqslant 0, \sum_{i=1}^{m}\alpha_i y_i = 0, i=1,2,...,m

公式(3.12)

4. SVR - 支持向量回归

回归问题就是基于模型输出f(x)与真实输出y之间的差别来计算损失,当且仅当f(x)y之间完全相同时,损失才为0。 

支持向量回归假设我们能容忍f(x)y之间最多有\varepsilon的偏差,于是,SVR可以形式化表示为:

min_{(w,b)} \frac{1}{2}\left \| w^2 \right \| + C\sum_{i=1}^{m}l_{\epsilon}(f(x_i)-y_i)

where,        l_\epsilon = \left \{ \begin{matrix} 0 &, if \left | z \right | \leqslant 0 \\ \left | z \right | - \epsilon &,otherwise \end{matrix} \right.    

公式(4.1)

引入松弛变量\xi _i\hat{\xi _i},可将式(4.1)重写为:

min_{(w,b)} \frac{1}{2}\left \| w^2 \right \| + C\sum_{i=1}^{m}(\xi_i+\hat{\xi_i})

s.t.     

 \begin{matrix} f(x_i)-y_i\leqslant \epsilon +\xi_i\\ y_i-f(x_i)\geqslant \epsilon +\hat{\xi_i}\\ \xi_i\geqslant 0, \hat{\xi_i}\geqslant 0, i=1,2,...,m \end{matrix}    

公式(4.2)

类似的,可以利用拉个朗日乘子法构造拉格朗日函数,进行求解。在此不再赘述。

5. SMO求解算法: 略

你可能感兴趣的:(机器学习,SVM,硬间隔,几何距离,函数距离,SVR)