文章目录
1 前言
1.1 SVM的基本思想
    
     
      
       
      
      
       \qquad
      
     
     支持向量机(Support Vector Machines)的核心思想是通过在特征空间上寻找一个线性超平面,将数据进行二分类且每类数据到超平面的间隔达到最大。其基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机。SVM的学习策略是将问题转化为凸二次规划问题并求解。
 
1.2 支持向量机的分类
\qquad 线性可分支持向量机:训练数据线性可分时,采用硬间隔最大化,学习一个线性分类器。
\qquad 线性支持向量机:训练数据近似可分,此时采用软间隔最大化,学习一个线性分类器。
    
     
      
       
      
      
       \qquad
      
     
     非线性支持向量机:训练数据完全线性不可分时,使用核技巧(kernel trick)及软间隔最大化,学习一个实质上的非线性支持向量机
 
2 线性可分支持向量机模型
2.1 模型概述
\qquad 假设给定一个特征空间上的训练数据集
T = { ( x ⃗ 1 , y 1 ) , ( x ⃗ 2 , y 2 ) , ⋯ , ( x ⃗ N , y N ) , } T=\{(\vec{x}_{1},y_{1}),(\vec{x}_{2},y_{2}), \cdots ,(\vec{x}_{N},y_{N}),\} T={(x1,y1),(x2,y2),⋯,(xN,yN),}
\qquad 其中,
x ⃗ i = ( x 1 , x 2 , x 3 ⋯ , x n ) T ∈ R n , y i ∈ { + 1 , − 1 } , i = 1 , 2 , 3 , ⋯ , N \vec{x}_i=(x_{1},x_{2},x_{3} \cdots ,x_{n})^{T} \in R^{n}, \\ \quad y_{i} \in \{+1,-1\}, \quad i=1,2,3, \cdots ,N \\ xi=(x1,x2,x3⋯,xn)T∈Rn,yi∈{+1,−1},i=1,2,3,⋯,N
x ⃗ i \qquad \vec{x}_i xi 是第i个特征向量,也称作实例, y i y_{i} yi 是实例 x ⃗ i \vec{x}_i xi 的标记,其中 + 1 +1 +1 表示为正例; − 1 -1 −1 表示为负例。假设数据集线性可分。
\qquad 线性可分支持向量机即是要在两组数据之间找到一个间隔超平面,将两组数据完美的划分开。此外,为了考虑模型的泛化效果,使得数据的扰动对于分类的结果影响尽可能的小,那么就需要超平面分别到两组数据的间隔达到最大,即对于距离超平面最近的点,也要能以尽可能高的确信度将它们分隔开,在间隔边界处的特征向量也被成为支持向量(Support Vector),如下图所示。

 
    
     
      
       
      
      
       \qquad
      
     
     线性可分支持向量机基本模型如下:
 
     
      
       
        
         {
        
        
         
          
           
            
           
          
          
           
            
             
              
               
                w
               
               
                ⃗
               
              
              
               T
              
             
             
              ⋅
             
             
              
               x
              
              
               ⃗
              
             
             
              +
             
             
              b
             
             
              =
             
             
              0
             
            
           
          
         
         
          
           
            
           
          
          
           
            
             
              f
             
             
              (
             
             
              
               x
              
              
               ⃗
              
             
             
              )
             
             
              =
             
             
              s
             
             
              i
             
             
              g
             
             
              n
             
             
              (
             
             
              
               
                w
               
               
                ⃗
               
              
              
               T
              
             
             
              ⋅
             
             
              
               x
              
              
               ⃗
              
             
             
              +
             
             
              b
             
             
              )
             
            
           
          
         
        
       
       
         \begin{cases} &\vec{w}^{T}\cdot \vec{x}+b=0 \\ &f(\vec{x})=sign(\vec{w}^{T}\cdot \vec{x}+b) \end{cases} 
       
      
     {wT⋅x+b=0f(x)=sign(wT⋅x+b)
 
    
     
      
       
      
      
       \qquad
      
     
     其中,
    
     
      
       
        
         
          w
         
         
          ⃗
         
        
        
         T
        
       
       
        ⋅
       
       
        
         x
        
        
         ⃗
        
       
       
        +
       
       
        b
       
       
        =
       
       
        0
       
      
      
       \vec{w}^{T} \cdot \vec{x}+b=0
      
     
    wT⋅x+b=0 是超平面方程,
    
     
      
       
        
         w
        
        
         ⃗
        
       
      
      
       \vec{w}
      
     
    w 是超平面的法向量,
    
     
      
       
        
         w
        
        
         ⃗
        
       
       
        =
       
       
        (
       
       
        
         w
        
        
         1
        
       
       
        ,
       
       
        
         w
        
        
         2
        
       
       
        ,
       
       
        ⋯
        
       
        ,
       
       
        
         w
        
        
         n
        
       
       
        
         )
        
        
         T
        
       
      
      
       \vec{w}=(w_{1},w_{2}, \cdots ,w_{n})^{T}
      
     
    w=(w1,w2,⋯,wn)T。
    
     
      
       
        f
       
       
        (
       
       
        x
       
       
        )
       
      
      
       f(x)
      
     
    f(x) 是得到的分类器,
    
     
      
       
        s
       
       
        i
       
       
        g
       
       
        n
       
       
        (
       
       
        x
       
       
        )
       
      
      
       sign(x)
      
     
    sign(x) 为符号函数,输出为正,则得到的是正例;输出为负,则得到的是反例。
 
2.2 函数间隔与几何间隔
函数间隔
\qquad 引入函数间隔,可用于定性表示分类的正确性以及确信程度。由于超平面方程为: w ⃗ T ⋅ x ⃗ + b = 0 \vec{w}^{T}\cdot \vec{x}+b=0 \quad wT⋅x+b=0 不在超平面上的实例点 ( x ⃗ i , y i ) (\vec{x}_{i},y_{i}) (xi,yi)代入超平面方程后会得到一个非零数 ( w ⃗ T ⋅ x ⃗ i + b ) (\vec{w}^{T}\cdot \vec{x}_{i}+b) (wT⋅xi+b),其与实例的标记 y i y_{i} yi的乘积定义为实例点到超平面的函数间隔,记作:
γ ^ i = y i ( w ⃗ T ⋅ x ⃗ i + b ) \hat{\gamma}_{i}=y_{i}(\vec{w}^{T}\cdot \vec{x}_{i}+b) γ^i=yi(wT⋅xi+b)
γ ^ i \qquad \hat{\gamma}_{i} γ^i 为正,则分类正确;反之,则分类错误。 γ ^ i \hat{\gamma}_{i} γ^i 的绝对值越大,表示分类结果的确信程度越高。
\qquad 因此,定义训练集与超平面的函数间隔即为所有实例点与超平面函数距离的最小值,记作:
γ ^ = min  i = 1 , 2 , 3 , ⋯ , N γ ^ i \hat{\gamma}=\min_{i=1,2,3, \cdots ,N}\hat{\gamma}_{i} γ^=i=1,2,3,⋯,Nminγ^i
几何间隔
    
     
      
       
      
      
       \qquad
      
     
     在二维平面直角坐标系中求点到直线的距离公式为:
 
     
      
       
        
         l
        
        
         =
        
        
         
          
           ∣
          
          
           a
          
          
           x
          
          
           +
          
          
           b
          
          
           y
          
          
           +
          
          
           c
          
          
           ∣
          
         
         
          
           
            
             a
            
            
             2
            
           
           
            +
           
           
            
             b
            
            
             2
            
           
          
         
        
       
       
         l=\frac{|ax+by+c|}{\sqrt{a^{2}+b^{2}}} 
       
      
     l=a2+b2∣ax+by+c∣
 
    
     
      
       
      
      
       \qquad
      
     
     那么,推广到更高维的超平面 
    
     
      
       
        H
       
       
        :
       
       
        
         
          w
         
         
          ⃗
         
        
        
         T
        
       
       
        ⋅
       
       
        
         x
        
        
         ⃗
        
       
       
        +
       
       
        b
       
       
        =
       
       
        0
       
      
      
       H:\vec{w}^{T}\cdot \vec{x}+b=0
      
     
    H:wT⋅x+b=0 上,可以得到更加一般性的距离公式:
L = ∣ w ⃗ T ⋅ x ⃗ + b ∣ ∥ w ⃗ ∥ L=\frac{|\vec{w}^{T}\cdot \vec{x}+b|}{\lVert \vec{w} \rVert} L=∥w∥∣wT⋅x+b∣
其中, ∥ w ⃗ ∥ \lVert \vec{w} \rVert ∥w∥ 是法向量 w ⃗ \vec{w} w 的二阶范数, ∥ w ⃗ ∥ = ∑ i = 1 n w i 2 \lVert \vec{w} \rVert=\sqrt{\sum_{i=1}^n{w}_i^{2}} ∥w∥=∑i=1nwi2 。
\qquad 由于在训练数据时,实例点的标记 y i ∈ { + 1 , − 1 } y_{i} \in \{+1,-1\} yi∈{+1,−1},则可以将距离公式中的绝对值符号去掉,用各个实例点的标记值替代,定义为实例点到超平面的几何间隔,记作:
γ i = y i ( w T ⋅ x ⃗ i + b ) ∥ w ⃗ ∥ \gamma_i=\frac{y_i(w^{T}\cdot \vec{x}_{i}+b)}{\lVert \vec{w} \rVert} γi=∥w∥yi(wT⋅xi+b)
\qquad 与函数间隔类似, γ i \gamma_i γi 为正,则分类正确;反之,则分类错误。 γ i \gamma_{i} γi 的绝对值越大,表示分类结果的确信程度越高。
\qquad 因此,定义训练集与超平面的几何间隔即为所有实例点与超平面几何距离的最小值,记作:
γ = min  i = 1 , 2 , ⋯ , N γ i \gamma=\min_{i=1,2,\cdots,N}\gamma_i γ=i=1,2,⋯,Nminγi
函数间隔与几何间隔的关系
\qquad 由上述定义得,
    
     
      
       
      
      
       \qquad
      
     
     函数间隔:
 
     
      
       
        
         
          
           γ
          
          
           ^
          
         
         
          i
         
        
        
         =
        
        
         
          y
         
         
          i
         
        
        
         (
        
        
         
          
           w
          
          
           ⃗
          
         
         
          T
         
        
        
         ⋅
        
        
         
          
           x
          
          
           ⃗
          
         
         
          i
         
        
        
         +
        
        
         b
        
        
         )
        
       
       
         \hat{\gamma}_{i}=y_{i}(\vec{w}^{T}\cdot \vec{x}_{i}+b) 
       
      
     γ^i=yi(wT⋅xi+b)
    
     
      
       
      
      
       \qquad
      
     
     几何间隔:
 
     
      
       
        
         
          γ
         
         
          i
         
        
        
         =
        
        
         
          
           
            y
           
           
            i
           
          
          
           (
          
          
           
            
             w
            
            
             ⃗
            
           
           
            T
           
          
          
           ⋅
          
          
           
            
             x
            
            
             ⃗
            
           
           
            i
           
          
          
           +
          
          
           b
          
          
           )
          
         
         
          
           ∥
          
          
           
            w
           
           
            ⃗
           
          
          
           ∥
          
         
        
       
       
         \gamma_i=\frac{y_i(\vec{w}^{T}\cdot \vec{x}_{i}+b)}{\lVert \vec{w} \rVert} 
       
      
     γi=∥w∥yi(wT⋅xi+b)
\qquad 得到二者之间的关系:
     
      
       
        
         
          γ
         
         
          i
         
        
        
         =
        
        
         
          
           
            γ
           
           
            i
           
          
          
           ^
          
         
         
          
           ∥
          
          
           
            w
           
           
            ⃗
           
          
          
           ∥
          
         
        
       
       
         \gamma_i=\frac{\hat{\gamma_i}}{\lVert \vec{w} \rVert} 
       
      
     γi=∥w∥γi^
 
\qquad 另外,函数间隔的定义规定了函数间隔不是一个确定的数,其可以随着超平面参数成比例地倍增而改变,是一个定性的衡量工具。
\qquad 例如,对于超平面 ( w ⃗ , b ) (\vec{w},b) (w,b),有: ( w ⃗ ′ , b ′ ) = 10 ( w ⃗ , b ) (\vec{w}^{'},b^{'})=10(\vec{w},b) (w′,b′)=10(w,b),则有:
w ⃗ ′ T ⋅ x ⃗ + b ′ = 10 w ⃗ T ⋅ x ⃗ + 10 b = 10 ( w ⃗ T ⋅ x ⃗ + b ) = 0 = w ⃗ T ⋅ x ⃗ + b \vec{w}^{'T} \cdot \vec{x}+b^{'}=10\vec{w}^{T} \cdot \vec{x}+10b=10(\vec{w}^{T} \cdot \vec{x}+b)=0=\vec{w}^{T} \cdot \vec{x}+b w′T⋅x+b′=10wT⋅x+10b=10(wT⋅x+b)=0=wT⋅x+b
\qquad 这表明超平面参数的倍增并不改变这一超平面, ( w ⃗ , b ) , ( w ⃗ ′ , b ′ ) (\vec{w},b),(\vec{w}^{'},b^{'}) (w,b),(w′,b′) 表示同一个超平面,故:
γ ^ i = y i ( w ⃗ T ⋅ x ⃗ i + b ) γ ^ i ′ = y i ( w ⃗ ′ T ⋅ x ⃗ i + b ′ ) \hat{\gamma}_{i}=y_{i}(\vec{w}^{T}\cdot \vec{x}_{i}+b) \\ \hat{\gamma}_{i}^{'}=y_{i}(\vec{w}^{'T}\cdot \vec{x}_{i}+b^{'}) γ^i=yi(wT⋅xi+b)γ^i′=yi(w′T⋅xi+b′)
γ ^ i \qquad \hat{\gamma}_{i} γ^i 和 γ ^ i ′ \hat{\gamma}_{i}^{'} γ^i′ 均可以表示实例点对同一超平面的函数间隔。
\qquad 对于几何间隔来说,由于分母位是法向量的二阶范数,在超平面参数倍增的同时, ∥ w ⃗ ∥ \lVert \vec{w} \rVert ∥w∥ 也以同样的倍数增加,仍以 ( w ⃗ ′ , b ′ ) = 10 ( w ⃗ , b ) (\vec{w}^{'},b^{'})=10(\vec{w},b) (w′,b′)=10(w,b) 为例,
γ i = y i ( w ⃗ T ⋅ x ⃗ i + b ) ∥ w ⃗ ∥ = y i ( 10 w ⃗ T ⋅ x ⃗ i + 10 b ) ∥ 10 w ⃗ ∥ = y i ( w ⃗ ′ T ⋅ x ⃗ i + b ′ ) ∥ w ⃗ ′ ∥ \gamma_i=\frac{y_i(\vec{w}^{T}\cdot \vec{x}_{i}+b)}{\lVert \vec{w} \rVert}=\frac{y_i(10\vec{w}^{T}\cdot \vec{x}_{i}+10b)}{\lVert 10\vec{w} \rVert}=\frac{y_i(\vec{w}^{'T}\cdot \vec{x}_{i}+b^{'})}{\lVert \vec{w}^{'} \rVert} γi=∥w∥yi(wT⋅xi+b)=∥10w∥yi(10wT⋅xi+10b)=∥w′∥yi(w′T⋅xi+b′)
    
     
      
       
      
      
       \qquad
      
     
     所以,对于确定的超平面和实例点来说几何间隔是一个确定的值,也即几何上与超平面之间的距离。
 










