机器学习——支持向量机SVM

打印 上一主题 下一主题

主题 1811|帖子 1811|积分 5433

一、介绍

1.概述

1.1 概念

支持向量机(SVM) 是一类按监视学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面,可以将问题化为一个求解凸二次规划的问题。与逻辑回归和神经网络相比,支持向量机在学习复杂的非线性方程时提供了一种更为清楚、更增强大的方式。
详细来说:在线性可分时,在原空间寻找两类样本的最优分类超平面。在线性不可分时,加入松驰变量并通过利用非线性映射将低维度输入空间的样本映射到高维度空间,使其变成线性可分,如许就可以在该特征空间中寻找最优分类超平面。
   

  • 当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机。
  • 当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机。
  • 当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机。
  1.2 SVM的优缺点



  • 优点
    (1)效果好,尤其在小样本情况下。 【在样本数目有限但特征维度较高的场景下(如文本分类、生物信息学),SVM通常表现优越 】
    (2)适用于高维数据。【SVM擅优点置惩罚维数宏大于样本数目的情况,并可有效克制“维度劫难” 】
    (3)具有精良的泛化能力。【通过最大化间隔(margin),SVM在训练集和测试集之间通常能保持较好的性能 】
    (4)支持非线性分类。【利用核函数(Kernel trick),SVM可以在原始特征空间中构造复杂的非线性决策边界 】
    (5)可以用于分类和回归使命。【除了分类(C-SVC、Nu-SVC),SVM还有回归版本(SVR、Nu-SVR) 】
  • 缺点
    (1)对大规模数据训练耗时高。【SVM的训练时间复杂度通常为                                             O                                           (                                               n                                     2                                              )                                                 O\left ( n^{2} \right )                        O(n2)到                                             O                                           (                                               n                                     3                                              )                                                 O\left ( n^{3} \right )                        O(n3),不得当上百万样本级别的数据 】
    (2)参数选择困难(C 和核函数参数)。【SVM模子依赖符合的超参数(如正则化参数C、核参数γ等),调参过程复杂且耗时 】
    (3)对缺失值和噪声敏感。【尤其在软间隔模子中,假如噪声或异常值较多,支持向量可能不稳定 】
    (4)对多分类问题支持不直接。【SVM本质是二分类模子,多分类需借助一对多(One-vs-All)或一对一(One-vs-One)策略实现,复杂度提高 】
    (5)结果不易解释。【与决策树等模子相比,SVM的决策边界和支持向量很难明释,不具备可解释性优势 】
2.硬间隔

只考虑二分类问题,假设有                                    n                              n                  n 个训练的                                              x                            i                                       x_{i}                  xi​ ,每个训练点有一个指标                                              y                            i                                       y_{i}                  yi​ 。训练集即为:                                   T                         =                                   {                                       (                                           x                                  1                                          ,                                           y                                  1                                          )                                      ,                                       (                                           x                                  2                                          ,                                           y                                  2                                          )                                            .                         .                         .                                   (                                       x                               n                                      ,                                       y                               n                                      )                                  }                              T=\left \{ \left ( x_{1},y_{1} \right ),\left ( x_{2},y_{2} \right )\right.... \left (x_{n},y_{n} \right )\}                  T={(x1​,y1​),(x2​,y2​)...(xn​,yn​)} 其中                                              x                            i                                  ∈                                   R                            N                                       x_{i}\in R_{N}                  xi​∈RN​为输入变量,其分量称为特征或属性。                                             y                            i                                  ∈                         Y                         =                                   {                            1                            ,                            −                            1                            }                                       y_{i}\in Y=\left \{ 1,-1 \right \}                  yi​∈Y={1,−1}是输出指标。
【问题】 给定新的输入                                   x                              x                  x,怎样推断它的输入是                                   y                         =                         1                              y=1                  y=1 还是                                    y                         =                         −                         1                              y=-1                  y=−1
【方案】 找到一个函数                                    g                         :                                   R                            N                                  →                         R                              g:R_{N} \rightarrow R                  g:RN​→R,然后定义下面的决策函数实现输出。
                                         f                            (                            x                            )                            =                            s                            i                            g                            n                            (                            g                            (                            x                            )                            )                                  f(x)=sign(g(x))                     f(x)=sign(g(x))
其中                                    s                         i                         g                         n                         (                         z                         )                              sign(z)                  sign(z) 是激活函数,也就是当                                    z                         ⩾                         0                              z\geqslant 0                  z⩾0 时取值+1,否则取值-1。确定                                    g                         (                         )                              g()                  g() 的算法称为分类机。假如                                    g                         (                         x                         )                         =                                   w                            T                                  x                         +                         b                              g(x)=w^{T}x+b                  g(x)=wTx+b,则确定                                    w                              w                  w 和                                    b                              b                  b 的算法称为线性分类机。
【线性可分】 考虑训练集                                    T                              T                  T,若存在                                    w                         ∈                                   R                            n                                       w\in R^{n}                  w∈Rn ,                                   b                         ∈                         R                              b\in R                  b∈R 和                                    ε                         >                         0                              \varepsilon >0                  ε>0 使得:对所有的                                              y                            i                                  =                         1                              y_{i} = 1                  yi​=1 的指标                                    i                              i                  i,有                                              w                            T                                            x                            i                                  +                         b                         ⩾                         ε                              w^{T}x_{i} + b \geqslant \varepsilon                  wTxi​+b⩾ε ;而对所有的                                              y                            i                                  =                         −                         1                              y_{i} = -1                  yi​=−1 的指标                                    j                              j                  j,有                                             w                            T                                            x                            i                                  +                         b                         ⩽                         ε                              w^{T}x_{i} + b \leqslant \varepsilon                  wTxi​+b⩽ε 则称训练集                                    T                              T                  T 线性可分。

⭐ 假如数据是完全的线性可分的,那么学习到的模子可以称为硬间隔支持向量机 。换个说法,硬间隔指的就是完全分类正确,不能存在分类错误的情况。软间隔,就是答应肯定量的样本分类错误。
2.1 求解间隔

求解目标:假设两类数据可以被                                    H                         =                                   {                            x                            :                                       w                               T                                      x                            +                            b                            ⩾                            ε                            }                                       H = \left \{ x:w^{T}x+b\geqslant \varepsilon \right \}                  H={x:wTx+b⩾ε} 分离,垂直于法向量                                    w                              w                  w,移动                                    H                              H                  H 直到碰到某个训练点,可以得到两个超平面                                              H                            1                                       H_{1}                  H1​ 和                                              H                            2                                       H_{2}                  H2​ ,两个平面称为支持超平面,它们分别支持两类数据。而位于                                              H                            1                                       H_{1}                  H1​ 和                                              H                            2                                       H_{2}                  H2​ 正中心的超平面是分离这两类数据最好的选择。

法向量                                    w                              w                  w 有很多中选择,超平面                                              H                            1                                       H_{1}                  H1​ 和                                              H                            2                                       H_{2}                  H2​ 之间的间隔称为间隔,这个间隔是                                    w                              w                  w 的函数,目的就是寻找如许的                                    w                              w                  w 使得间隔达到最大。
几何间隔:假设分别超平面的线性方程为:                                             w                            T                                  x                         +                         b                         =                         0                              w^{T}x+b=0                  wTx+b=0,其中                                    w                         =                         (                                   w                            1                                  ,                                   w                            2                                  ,                         .                         .                         .                         ,                                   w                            n                                  )                              w=(w_{1},w_{2},...,w_{n})                  w=(w1​,w2​,...,wn​) 为法向量,决定了超平面的方向;                                   b                              b                  b 为位移项,决定了超平面与源点之间的间隔。显然分别超平面可被法向量                                    w                              w                  w 和位移                                    b                              b                  b 决定。
   

  • 样本到超平面                                                          w                                  T                                          x                               +                               b                               =                               0                                      w^{T}x+b=0                        wTx+b=0 的间隔:                                             r                               =                                                        ∣                                                   w                                        T                                                                x                                        i                                                  +                                     b                                     ∣                                                           ∣                                     ∣                                     w                                     ∣                                     ∣                                                      =                                                                      y                                        i                                                  (                                                   w                                        T                                                                x                                        i                                                  +                                     b                                     )                                                           ∣                                     ∣                                     w                                     ∣                                     ∣                                                             r=\frac{|w^{T}x_i+b|}{||w||}=\frac{y_i(w^{T}x_i+b)}{||w||}                        r=∣∣w∣∣∣wTxi​+b∣​=∣∣w∣∣yi​(wTxi​+b)​
  • 样本集到超平面                                                          w                                  T                                          x                               +                               b                               =                               0                                      w^{T}x+b=0                        wTx+b=0 的间隔:                                             ρ                               =                                                                      m                                        i                                        n                                                                (                                                       x                                           i                                                      ,                                                       y                                           i                                                      )                                        ∈                                        S                                                                                                          y                                        i                                                  (                                                   w                                        T                                                                x                                        i                                                  +                                     b                                     )                                                           ∣                                     ∣                                     w                                     ∣                                     ∣                                                      =                                           a                                               ∣                                     ∣                                     w                                     ∣                                     ∣                                                             \rho = \underset{(x_i,y_i)\in S}{min}\frac{y_i(w^{T}x_i+b)}{||w||}=\frac{a}{||w||}                        ρ=(xi​,yi​)∈Smin​∣∣w∣∣yi​(wTxi​+b)​=∣∣w∣∣a​
  • 优化目标:                                                                                    m                                        a                                        x                                                                w                                        ,                                        b                                                                                 a                                               ∣                                     ∣                                     w                                     ∣                                     ∣                                                         s                               .                               t                               .                                              y                                  i                                          (                                           w                                  T                                                      x                                  i                                          +                               b                               )                               ⩾                               a                               ,                               ∀                               i                                      \underset{w,b}{max}\, \, \frac{a}{||w||}\, \, \, s.t.\, \, \, y_i(w^Tx_i+b)\geqslant a,\forall i                        w,bmax​∣∣w∣∣a​s.t.yi​(wTxi​+b)⩾a,∀i
  • 令                                                          w                                  ^                                          =                                           w                                  a                                          ,                                           b                                  ^                                          =                                           b                                  a                                                 \hat{w}=\frac{w}{a},\hat{b}=\frac{b}{a}                        w^=aw​,b^=ab​,则;
  • 优化目标转变:                                                                                    m                                        a                                        x                                                                w                                        ,                                        b                                                                               1                                               ∣                                     ∣                                                   w                                        ^                                                  ∣                                     ∣                                                            s                               .                               t                               .                                              y                                  i                                          (                                                        w                                     ^                                              T                                                      x                                  i                                          +                                           b                                  ^                                          )                               ⩾                               1                               ,                                  ∀                               i                                      \underset{w,b}{max}\frac{1}{||\hat{w}||}\, \, \,\, \, \, s.t.\, \, \, y_{i}(\hat{w}^{T}x_{i}+\hat{b})\geqslant 1,\, \, \, \forall i                        w,bmax​∣∣w^∣∣1​s.t.yi​(w^Txi​+b^)⩾1,∀i
  • 转变后的目标函数不会影响模子的猜测性能:
  •                                              h                               (                               x                               )                               =                               s                               g                               n                               (                                           w                                  T                                          x                               +                               b                               )                               =                               s                               g                               n                               (                               a                                                        w                                     ^                                              T                                          x                               +                               a                                           b                                  ^                                          )                               =                               s                               g                               n                               (                                                        w                                     ^                                              T                                          x                               +                                           b                                  ^                                          )                               ≅                                           h                                  ^                                          (                               x                               )                               (                               a                               >                               0                               )                                      h(x)=sgn(w^Tx+b)=sgn(a \hat{w}^Tx+a\hat{b})=sgn(\hat{w}^Tx+\hat{b})\cong \hat{h}(x)(a>0)                        h(x)=sgn(wTx+b)=sgn(aw^Tx+ab^)=sgn(w^Tx+b^)≅h^(x)(a>0)
  • 为后续求导方便,改进为:
  •                                                                                     m                                        a                                        x                                                                w                                        ,                                        b                                                                               2                                               ∣                                     ∣                                                   w                                        ^                                                  ∣                                     ∣                                                            s                               .                               t                               .                                              y                                  i                                          (                                                        w                                     ^                                              T                                                      x                                  i                                          +                                           b                                  ^                                          )                               ⩾                               1                               ,                                  ∀                               i                                      \underset{w,b}{max}\frac{2}{||\hat{w}||}\, \, \,\, \, \, s.t.\, \, \, y_{i}(\hat{w}^{T}x_{i}+\hat{b})\geqslant 1,\, \, \, \forall i                        w,bmax​∣∣w^∣∣2​s.t.yi​(w^Txi​+b^)⩾1,∀i
  • 解释:求                                              x                                      x                        x 的最大值等同于求解                                              2                               x                                      2x                        2x 的最大值。
  • 假设超平面                                                          w                                  T                                          x                               +                               b                               =                               0                                      w^{T}x+b=0                        wTx+b=0 能将训练样本正确分类,取                                              a                               =                               1                                      a=1                        a=1,对于                                              (                                           x                                  i                                          ,                                           y                                  i                                          )                               ∈                               D                                      (x_{i}, y_{i})\in D                        (xi​,yi​)∈D,则有:
  •                                              {                                                                                                                      w                                                 T                                                                               x                                                 i                                                              +                                              b                                              ⩾                                              +                                              1                                              ,                                              y                                              =                                              +                                              1                                                                                                                                                                                                                                                                                                   w                                                 T                                                                               x                                                 i                                                              +                                              b                                              ⩽                                              −                                              1                                              ,                                              y                                              =                                              −                                              1                                                                                                       \left\{\begin{matrix} w^{T}x_{i}+b\geqslant +1, y=+1 & & \\ w^{T}x_{i}+b\leqslant -1, y=-1 \end{matrix}\right.                        {wTxi​+b⩾+1,y=+1wTxi​+b⩽−1,y=−1​
  • 间隔超平面近来的这几个训练样本点使上述不等式中等号可以成立,被称为支持向量,两个异类支持向量到超平面间隔之和为                                                          2                                               ∣                                     ∣                                                   w                                        ^                                                  ∣                                     ∣                                                             \frac{2}{||\hat{w}||}                        ∣∣w^∣∣2​。
  最大化间隔(为了方便后续用                                         w                                  w                     w 当做                                                    w                               ^                                            \hat{w}                     w^)
   

  • 因此最大化间隔问题就是求解一个凸二次规划问题
  •                                                                                     m                                        a                                        x                                                                w                                        ,                                        b                                                                               2                                               ∣                                     ∣                                     w                                     ∣                                     ∣                                                            s                               .                               t                               .                                              y                                  i                                          (                                           w                                  T                                                      x                                  i                                          +                               b                               )                               ⩾                               1                               ,                                  i                               =                               1                               ,                               2                               ,                               .                               .                               .                               ,                               n                                      \underset{w,b}{max}\frac{2}{||w||}\, \, \,\, \, \, s.t.\, \, \, y_{i}(w^{T}x_{i}+b)\geqslant 1,\, \, \, i=1,2,...,n                        w,bmax​∣∣w∣∣2​s.t.yi​(wTxi​+b)⩾1,i=1,2,...,n
  • 显然,为了最大化间隔,仅需要最大化                                              ∣                               ∣                               w                               ∣                                           ∣                                               −                                     1                                                             ||w||^{-1}                        ∣∣w∣∣−1,这等价于最小化                                              ∣                               ∣                               w                               ∣                                           ∣                                  2                                                 ||w||^{2}                        ∣∣w∣∣2。于是上式可写为:
  •                                                                                     m                                        i                                        n                                                                w                                        ,                                        b                                                                               1                                  2                                          ∣                               ∣                               w                               ∣                                           ∣                                  2                                                s                               .                               t                               .                                              y                                  i                                          (                                           w                                  T                                                      x                                  i                                          +                               b                               )                               ⩾                               1                               ,                                  i                               =                               1                               ,                               2                               ,                               .                               .                               .                               ,                               n                                      \underset{w,b}{min}\frac{1}{2}||w||^{2}\, \, \,\, \, \, s.t.\, \, \, y_{i}(w^{T}x_{i}+b)\geqslant 1,\, \, \, i=1,2,...,n                        w,bmin​21​∣∣w∣∣2s.t.yi​(wTxi​+b)⩾1,i=1,2,...,n
  • 这就是支持向量机的基本型。
  2.2 对偶问题

利用拉格朗日优化方法可以把2.1中的最大间隔问题转换为比力简单的对偶问题,起首定义凸二次规划的拉格朗日函数:


  •                                         L                            (                            w                            ,                            b                            ,                            α                            )                            =                                       1                               2                                      ∣                            ∣                            w                            ∣                                       ∣                               2                                      −                                       ∑                                           i                                  =                                  1                                          n                                                 α                               i                                      [                                       y                               i                                      (                                       w                               T                                                 x                               i                                      +                            b                            )                            −                            1                            ]                                  L(w,b,\alpha )=\frac{1}{2}||w||^2-\sum_{i=1}^{n}\alpha_i[y_i(w^Tx_i+b)-1]                     L(w,b,α)=21​∣∣w∣∣2−∑i=1n​αi​[yi​(wTxi​+b)−1]
其中                                    α                         =                         (                                   α                            1                                  ,                                   α                            2                                  ,                         .                         .                         .                         ,                                   α                            n                                  )                              \alpha =(\alpha_1, \alpha_2,...,\alpha_n)                  α=(α1​,α2​,...,αn​) 为拉格朗日乘子且                                              α                            i                                  ⩾                         0                              \alpha_i\geqslant 0                  αi​⩾0。令                                    L                         (                         w                         ,                         b                         ,                         a                         )                              L(w,b,a)                  L(w,b,a) 对                                    w                              w                  w 和                                    b                              b                  b 的偏导为0(凸优化研究的是只有一个山顶的问题。别的,一阶偏导为0,是可微多元函数取极值的须要条件)即可:


  •                                                                        ∂                                     L                                                           ∂                                     w                                                      =                               0                               →                               w                               =                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                                      y                                  i                                                      x                                  i                                                 \frac{\partial L}{\partial w}=0\rightarrow w=\sum_{i=1}^{n}\alpha_iy_ix_i                        ∂w∂L​=0→w=∑i=1n​αi​yi​xi​
  •                                                                        ∂                                     L                                                           ∂                                     b                                                      =                               0                               →                                           ∑                                               i                                     =                                     1                                              n                                                      a                                  i                                                      y                                  i                                          =                               0                                      \frac{\partial L}{\partial b}=0\rightarrow \sum_{i=1}^{n}a_iy_i=0                        ∂b∂L​=0→∑i=1n​ai​yi​=0
  •                                               ∀                               i                                              α                                  i                                          [                                           y                                  i                                          (                                           w                                  T                                                      x                                  i                                          +                               b                               )                               −                               1                               ]                               =                               0                                      \forall i\, \, \, \alpha_i[y_i(w^Tx_i+b)-1]=0                        ∀iαi​[yi​(wTxi​+b)−1]=0(束缚条件)
将结果带入                                    L                         (                         w                         ,                         b                         ,                         a                         )                         =                                   1                            2                                  ∣                         ∣                         w                         ∣                                   ∣                            2                                  −                                   ∑                                       i                               =                               1                                      n                                            α                            i                                  [                                   y                            i                                  (                                   w                            T                                            x                            i                                  +                         b                         )                         −                         1                         ]                              L(w,b,a)=\frac{1}{2}||w||^2-\sum_{i=1}^{n}\alpha_i[y_i(w^Tx_i+b)-1]                  L(w,b,a)=21​∣∣w∣∣2−∑i=1n​αi​[yi​(wTxi​+b)−1] 中可将w和b消除,得到:


  •                                                                                      i                                        n                                        f                                        L                                                                w                                        ,                                        b                                                                   (                               w                               ,                               b                               ,                               α                               )                               =                                           1                                  2                                                      w                                  T                                          w                               +                                           ∑                                               i                                     =                                     1                                              m                                                      α                                  i                                          −                                           ∑                                               i                                     =                                     1                                              m                                                      a                                  i                                                      y                                  i                                                      w                                  T                                                      x                                  i                                          −                                           ∑                                               i                                     =                                     1                                              m                                                      a                                  i                                                      y                                  i                                          b                                      \underset{w,b}{inf L}(w,b,\alpha )=\frac{1}{2}w^Tw+\sum_{i=1}^{m}\alpha_i-\sum_{i=1}^{m}a_iy_iw^Tx_i-\sum_{i=1}^{m}a_iy_ib                        w,binfL​(w,b,α)=21​wTw+∑i=1m​αi​−∑i=1m​ai​yi​wTxi​−∑i=1m​ai​yi​b
  •                                               =                                           1                                  2                                                      w                                  T                                                      ∑                                               i                                     =                                     1                                              m                                                      a                                  i                                                      y                                  i                                                      x                                  i                                          −                                           w                                  T                                                      ∑                                               i                                     =                                     1                                              m                                                      a                                  i                                                      y                                  i                                                      x                                  i                                          +                                           ∑                                               i                                     =                                     1                                              m                                                      α                                  i                                          −                               b                                           ∑                                               i                                     =                                     1                                              m                                                      a                                  i                                                      y                                  i                                                 =\frac{1}{2}w^T\sum_{i=1}^{m}a_iy_ix_i-w^T\sum_{i=1}^{m}a_iy_ix_i+\sum_{i=1}^{m}\alpha_i-b\sum_{i=1}^{m}a_iy_i                        =21​wT∑i=1m​ai​yi​xi​−wT∑i=1m​ai​yi​xi​+∑i=1m​αi​−b∑i=1m​ai​yi​
  •                                               =                               −                                           1                                  2                                                      w                                  T                                                      ∑                                               i                                     =                                     1                                              m                                                      a                                  i                                                      y                                  i                                                      x                                  i                                          +                                           ∑                                               i                                     =                                     1                                              m                                                      α                                  i                                          −                               b                                           ∑                                               i                                     =                                     1                                              m                                                      a                                  i                                                      y                                  i                                                 =-\frac{1}{2}w^T\sum_{i=1}^{m}a_iy_ix_i+\sum_{i=1}^{m}\alpha_i-b\sum_{i=1}^{m}a_iy_i                        =−21​wT∑i=1m​ai​yi​xi​+∑i=1m​αi​−b∑i=1m​ai​yi​
由于                                              ∑                                       i                               =                               1                                      n                                            a                            i                                            y                            i                                  =                         0                              \sum_{i=1}^{n}a_iy_i=0                  ∑i=1n​ai​yi​=0 ,以是上式子末了一项可化为0,于是得


  •                                                                                      i                                        n                                        f                                        L                                                                w                                        ,                                        b                                                                   (                               w                               ,                               b                               ,                               α                               )                               =                               −                                           1                                  2                                                      w                                  T                                                      ∑                                               i                                     =                                     1                                              m                                                      a                                  i                                                      y                                  i                                                      x                                  i                                          +                                           ∑                                               i                                     =                                     1                                              m                                                      α                                  i                                                 \underset{w,b}{inf L}(w,b,\alpha )=-\frac{1}{2}w^T\sum_{i=1}^{m}a_iy_ix_i+\sum_{i=1}^{m}\alpha_i                        w,binfL​(w,b,α)=−21​wT∑i=1m​ai​yi​xi​+∑i=1m​αi​
  •                                               =                               −                                           1                                  2                                          (                                           ∑                                               i                                     =                                     1                                              m                                                      a                                  i                                                      y                                  i                                                      x                                  i                                                      )                                  T                                                      ∑                                               i                                     =                                     1                                              m                                                      a                                  i                                                      y                                  i                                                      x                                  i                                          +                                           ∑                                               i                                     =                                     1                                              m                                                      α                                  i                                                 =-\frac{1}{2}(\sum_{i=1}^{m}a_iy_ix_i)^T\sum_{i=1}^{m}a_iy_ix_i+\sum_{i=1}^{m}\alpha_i                        =−21​(∑i=1m​ai​yi​xi​)T∑i=1m​ai​yi​xi​+∑i=1m​αi​
只有                                              x                            i                                       x_i                  xi​ 是向量,因此:


  •                                         =                            −                                       1                               2                                                 ∑                                           i                                  =                                  1                                          m                                                 a                               i                                                 y                               i                                                 x                               i                               T                                                 ∑                                           i                                  =                                  1                                          m                                                 a                               i                                                 y                               i                                                 x                               i                                      +                                       ∑                                           i                                  =                                  1                                          m                                                 α                               i                                            =-\frac{1}{2}\sum_{i=1}^{m}a_iy_ix_i^T\sum_{i=1}^{m}a_iy_ix_i+\sum_{i=1}^{m}\alpha_i                     =−21​∑i=1m​ai​yi​xiT​∑i=1m​ai​yi​xi​+∑i=1m​αi​
根据矩阵乘法分配律和标量乘法团结律可得:


  •                                                    ∑                                           i                                  =                                  1                                          m                                                 a                               i                                                 y                               i                                                 x                               i                               T                                                 ∑                                           i                                  =                                  1                                          m                                                 a                               i                                                 y                               i                                                 x                               i                                      =                                       ∑                                           i                                  =                                  1                                          m                                                 ∑                                           j                                  =                                  1                                          m                                                 α                               i                                                 α                               j                                                 y                               i                                                 y                               j                                                 x                               i                               T                                                 x                               j                                            \sum_{i=1}^{m}a_iy_ix_i^T\sum_{i=1}^{m}a_iy_ix_i=\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha _i\alpha _jy_iy_jx_i^Tx_j                     ∑i=1m​ai​yi​xiT​∑i=1m​ai​yi​xi​=∑i=1m​∑j=1m​αi​αj​yi​yj​xiT​xj​
即:


  •                                         =                                       ∑                                           i                                  =                                  1                                          m                                                 α                               i                                      −                                       1                               2                                                 ∑                                           i                                  =                                  1                                          m                                                 ∑                                           j                                  =                                  1                                          m                                                 α                               i                                                 α                               j                                                 y                               i                                                 y                               j                                                 x                               i                               T                                                 x                               j                                            =\sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha _i\alpha _jy_iy_jx_i^Tx_j                     =∑i=1m​αi​−21​∑i=1m​∑j=1m​αi​αj​yi​yj​xiT​xj​
即:


  •                                                                                      m                                        a                                        x                                                  a                                                                  ∑                                               i                                     =                                     1                                              m                                                      α                                  i                                          −                                           1                                  2                                                      ∑                                               i                                     =                                     1                                              n                                                      ∑                                               j                                     =                                     1                                              n                                                      α                                  i                                                      α                                  j                                                      y                                  i                                                      y                                  j                                                      x                                  i                                  T                                                      x                                  j                                                 \underset{a}{max}\sum_{i=1}^{m}\alpha _i-\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha_i\alpha_jy_iy_jx_i^Tx_j                        amax​∑i=1m​αi​−21​∑i=1n​∑j=1n​αi​αj​yi​yj​xiT​xj​
  •                                               s                               .                               t                               .                                             ∑                                               i                                     =                                     1                                              n                                                      y                                  i                                                      α                                  i                                          =                               0                                      s.t.\, \,\sum_{i=1}^{n}y_i\alpha_i=0                        s.t.∑i=1n​yi​αi​=0
  •                                               α                               >                               0                                      \alpha > 0                        α>0
其中                                              ∑                                       i                               =                               1                                      n                                            y                            i                                            α                            i                                  =                         0                              \sum_{i=1}^{n}y_i\alpha_i=0                  ∑i=1n​yi​αi​=0 为                                    L                         (                         w                         ,                         b                         ,                         a                         )                              L(w,b,a)                  L(w,b,a) 对                                    b                              b                  b 的偏导为 0 的结果,作为束缚。
这是一个不等式束缚下的二次函数极值问题,存在唯一解。根据 KKT条件,解中将只有一部门(通常是很小的一部门)不为零,这些不为0的解所对应的样本就是支持向量。
假设                                              α                            ∗                                       \alpha ^{*}                  α∗ 是上面凸二次规划问题的最优解,则                                              α                            ∗                                  ≠                         0                              \alpha ^{*}\neq 0                  α∗=0 。假设满足                                              α                            ∗                                  >                         0                              \alpha ^{*}>0                  α∗>0 ,按下面方式计算出的解为原问题的唯一最优解:


  •                                                           w                                  ∗                                          =                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                  ∗                                                      y                                  i                                                      x                                  i                                                 w^*=\sum_{i=1}^{n}\alpha_i^{*}y_ix_i                        w∗=∑i=1n​αi∗​yi​xi​
  •                                                           b                                  ∗                                          =                                           y                                  i                                          −                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                  ∗                                                      y                                  i                                                      x                                  i                                  T                                                      x                                  i                                                 b^*=y_i-\sum_{i=1}^{n}\alpha_i^*y_ix_i^Tx_i                        b∗=yi​−∑i=1n​αi∗​yi​xiT​xi​
3.软间隔

3.1 松驰变量

线性不可分即指部门训练样本不能满足                                              y                            i                                  (                                   w                            T                                            x                            i                                  +                         b                         )                         ⩾                         1                              y_i(w^Tx_i+b)\geqslant 1                  yi​(wTxi​+b)⩾1 的条件。由于本来的优化问题的表达式要考虑所有的样本点,在此底子上寻找正负类之间的最大几何间隔,而几何间隔自己代表的是间隔,是非负的,像如许有噪声的情况会使整个问题无解。
办理办法比力简单,即利用松弛变量答应一些点到分类平面的间隔不满足原先的要求。详细束缚条件中增加一个松弛项参数                                              ε                            i                                  ⩾                         0                              \varepsilon _i\geqslant 0                  εi​⩾0 ,变成:


  •                                                    y                               i                                      (                                       w                               T                                                 x                               i                                      +                            b                            )                            ⩾                            1                            −                                       ε                               i                                            i                            =                            1                            ,                            2                            ,                            .                            .                            .                            ,                            n                                  y_i(w^Tx_i+b)\geqslant 1-\varepsilon_i\, \, \, \, \, \, i=1,2,...,n                     yi​(wTxi​+b)⩾1−εi​i=1,2,...,n
显然当                                              ε                            i                                  ⩾                         0                              \varepsilon _i\geqslant 0                  εi​⩾0 足够大时,训练点就可以满足以上条件。虽然得到的分类间隔越大越好。但需要克制                                              ε                            i                                       \varepsilon_i                  εi​ 取太大的值。以是在目标函数中加入惩罚项                                    C                              C                  C,得到下面的优化问题:


  •                                               m                               i                               n                                           (                                               1                                     2                                              ∣                                  ∣                                  w                                  ∣                                               ∣                                     2                                              +                                  C                                               ∑                                                   i                                        =                                        1                                                  n                                                           ε                                     i                                              )                                                 min\left ( \frac{1}{2}||w||^2+C\sum_{i=1}^{n}\varepsilon_i \right )                        min(21​∣∣w∣∣2+C∑i=1n​εi​)
  •                                               s                               .                               t                               .                                              y                                  i                                          (                                           w                                  T                                                      x                                  i                                          +                               b                               )                               ⩾                               1                               −                                           ε                                  i                                             i                               =                               1                               ,                               2                               ,                               .                               .                               .                               ,                               n                                      s.t. \, \, \, y_i(w^Tx_i+b)\geqslant 1-\varepsilon_i\, \, \, i=1,2,...,n                        s.t.yi​(wTxi​+b)⩾1−εi​i=1,2,...,n
  •                                                           ε                                  i                                          ⩾                               0                                   i                               =                               1                               ,                               2                               ,                               .                               .                               .                               ,                               n                                      \varepsilon_i\geqslant 0\, \, \, \, i=1,2,...,n                        εi​⩾0i=1,2,...,n
其中                                    ε                         ∈                                   R                            n                                       \varepsilon \in R^n                  ε∈Rn ,                                   C                              C                  C 是一个惩罚参数。目标函数意味着要最小化                                    ∣                         ∣                         w                         ∣                                   ∣                            2                                       ||w||^2                  ∣∣w∣∣2 (即最大间隔化),又要最小化                                              ∑                                       i                               =                               1                                      n                                            ε                            i                                       \sum_{i=1}^{n} \varepsilon_i                  ∑i=1n​εi​ (即束缚条件的                                              y                            i                                  (                                   w                            T                                            x                            i                                  +                         b                         )                         ⩾                         1                              y_i(w^Tx_i+b)\geqslant 1                  yi​(wTxi​+b)⩾1 的粉碎程度),参数                                    C                              C                  C 体现了两者总体的一个权衡。
3.2 对偶问题

求解这一优化问题的方法与求解线性问题最优分类面时所用的方法几乎相同,都是转换为一个二次函数极值问题,只是在凸二次规划中条件变为:                                    0                         ⩽                                   α                            i                                  ⩽                         C                         ,                         i                         =                         1                         ,                         2                         ,                         .                         .                         .                         ,                         n                              0\leqslant \alpha_i\leqslant C, i=1,2,...,n                  0⩽αi​⩽C,i=1,2,...,n。
定义拉格朗日函数:


  •                                         L                            (                            w                            ,                            b                            ,                            α                            ,                            ε                            ,                            β                            )                            =                                       1                               2                                      ∣                            ∣                            w                            ∣                                       ∣                               2                                      +                            C                                       ∑                                           i                                  =                                  1                                          n                                                 ε                               i                                      +                                       ∑                                           i                                  =                                  1                                          n                                                 α                               i                                      [                            1                            −                                       ε                               i                                      −                                       y                               i                                      (                                       w                               T                                                 x                               i                                      +                            b                            )                            ]                            −                                       ∑                                           i                                  =                                  1                                          n                                                 β                               i                                                 ε                               i                                            L(w,b,\alpha ,\varepsilon ,\beta )=\frac{1}{2}||w||^2+C\sum_{i=1}^{n}\varepsilon_i +\sum_{i=1}^{n}\alpha_i[1-\varepsilon_i-y_i(w^Tx_i+b)]-\sum_{i=1}^{n}\beta_i\varepsilon_i                     L(w,b,α,ε,β)=21​∣∣w∣∣2+C∑i=1n​εi​+∑i=1n​αi​[1−εi​−yi​(wTxi​+b)]−∑i=1n​βi​εi​
其中                                              α                            i                                  ⩾                         0                         ,                                   β                            i                                  ⩾                         0                              \alpha_i\geqslant 0,\beta_i \geqslant 0                  αi​⩾0,βi​⩾0 是拉格朗日乘子。
令                                    L                         (                         w                         ,                         b                         ,                         α                         ,                         ε                         ,                         β                         )                              L(w,b,\alpha ,\varepsilon ,\beta )                  L(w,b,α,ε,β) 对                                    w                              w                  w,                                    b                              b                  b,                                    ε                              \varepsilon                  ε 求偏导为0可得:


  •                                                                        ∂                                     L                                                           ∂                                     w                                                      =                               0                               →                               w                               =                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                                      y                                  i                                                      x                                  i                                                 \frac{\partial L}{\partial w}=0\rightarrow w=\sum_{i=1}^{n}\alpha_iy_ix_i                        ∂w∂L​=0→w=∑i=1n​αi​yi​xi​
  •                                                                        ∂                                     L                                                           ∂                                     b                                                      =                               0                               →                                           ∑                                               i                                     =                                     1                                              n                                                      a                                  i                                                      y                                  i                                          =                               0                                      \frac{\partial L}{\partial b}=0\rightarrow \sum_{i=1}^{n}a_iy_i=0                        ∂b∂L​=0→∑i=1n​ai​yi​=0
  •                                                                        ∂                                     L                                                           ∂                                     ε                                                      =                               0                               →                               C                               =                                           α                                  i                                          +                                           β                                  i                                                 \frac{\partial L}{\partial \varepsilon }=0\rightarrow C=\alpha_i+\beta_i                        ∂ε∂L​=0→C=αi​+βi​
带入拉格朗日函数,可以消除                                    w                              w                  w,                                    b                              b                  b ,再消去                                              β                            i                                       \beta_i                  βi​ 得到对偶问题:


  •                                               L                               (                               w                               ,                               b                               ,                               α                               ,                               ε                               ,                               β                               )                               =                                           1                                  2                                          ∣                               ∣                               w                               ∣                                           ∣                                  2                                          +                               C                                           ∑                                               i                                     =                                     1                                              n                                                      ε                                  i                                          +                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                          [                               1                               −                                           ε                                  i                                          −                                           y                                  i                                          (                                           w                                  T                                                      x                                  i                                          +                               b                               )                               ]                               −                                           ∑                                               i                                     =                                     1                                              n                                                      β                                  i                                                      ε                                  i                                                 L(w,b,\alpha ,\varepsilon ,\beta )=\frac{1}{2}||w||^2+C\sum_{i=1}^{n}\varepsilon_i +\sum_{i=1}^{n}\alpha_i[1-\varepsilon_i-y_i(w^Tx_i+b)]-\sum_{i=1}^{n}\beta_i\varepsilon_i                        L(w,b,α,ε,β)=21​∣∣w∣∣2+C∑i=1n​εi​+∑i=1n​αi​[1−εi​−yi​(wTxi​+b)]−∑i=1n​βi​εi​
  •                                               =                                           1                                  2                                          ∣                               ∣                               w                               ∣                                           ∣                                  2                                          +                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                          [                               1                               −                                           y                                  i                                          (                                           w                                  T                                                      x                                  i                                          +                               b                               )                               ]                               +                               C                                           ∑                                               i                                     =                                     1                                              n                                                      ε                                  i                                          −                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                                      ε                                  i                                          −                                           ∑                                               i                                     =                                     1                                              n                                                      β                                  i                                                      ε                                  i                                                 =\frac{1}{2}||w||^2+\sum_{i=1}^{n}\alpha_i[1-y_i(w^Tx_i+b)]+C\sum_{i=1}^{n}\varepsilon_i -\sum_{i=1}^{n}\alpha_i\varepsilon_i-\sum_{i=1}^{n}\beta_i\varepsilon_i                        =21​∣∣w∣∣2+∑i=1n​αi​[1−yi​(wTxi​+b)]+C∑i=1n​εi​−∑i=1n​αi​εi​−∑i=1n​βi​εi​
  •                                               =                                           1                                  2                                                      w                                  T                                          w                               +                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                          −                                           ∑                                               i                                     =                                     1                                              n                                                      a                                  i                                                      y                                  i                                                      w                                  T                                                      x                                  i                                          −                                           ∑                                               i                                     =                                     1                                              n                                                      a                                  i                                                      y                                  i                                          b                               +                               C                                           ∑                                               i                                     =                                     1                                              n                                                      ε                                  i                                          −                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                                      ε                                  i                                          −                                           ∑                                               i                                     =                                     1                                              n                                                      β                                  i                                                      ε                                  i                                                 =\frac{1}{2}w^Tw+\sum_{i=1}^{n}\alpha_i-\sum_{i=1}^{n}a_iy_iw^Tx_i-\sum_{i=1}^{n}a_iy_ib+C\sum_{i=1}^{n}\varepsilon_i -\sum_{i=1}^{n}\alpha_i\varepsilon_i-\sum_{i=1}^{n}\beta_i\varepsilon_i                        =21​wTw+∑i=1n​αi​−∑i=1n​ai​yi​wTxi​−∑i=1n​ai​yi​b+C∑i=1n​εi​−∑i=1n​αi​εi​−∑i=1n​βi​εi​
  •                                               =                                           1                                  2                                                      w                                  T                                                      ∑                                               i                                     =                                     1                                              n                                                      a                                  i                                                      y                                  i                                                      x                                  i                                          −                                           w                                  T                                                      ∑                                               i                                     =                                     1                                              n                                                      a                                  i                                                      y                                  i                                                      x                                  i                                          +                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                          −                               b                                           ∑                                               i                                     =                                     1                                              n                                                      a                                  i                                                      y                                  i                                          +                               C                                           ∑                                               i                                     =                                     1                                              n                                                      ε                                  i                                          −                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                                      ε                                  i                                          −                                           ∑                                               i                                     =                                     1                                              n                                                      β                                  i                                                      ε                                  i                                                 =\frac{1}{2}w^T\sum_{i=1}^{n}a_iy_ix_i-w^T\sum_{i=1}^{n}a_iy_ix_i+\sum_{i=1}^{n}\alpha_i-b\sum_{i=1}^{n}a_iy_i+C\sum_{i=1}^{n}\varepsilon_i -\sum_{i=1}^{n}\alpha_i\varepsilon_i-\sum_{i=1}^{n}\beta_i\varepsilon_i                        =21​wT∑i=1n​ai​yi​xi​−wT∑i=1n​ai​yi​xi​+∑i=1n​αi​−b∑i=1n​ai​yi​+C∑i=1n​εi​−∑i=1n​αi​εi​−∑i=1n​βi​εi​
  •                                               =                               −                                           1                                  2                                                      ∑                                               i                                     =                                     1                                              n                                                      a                                  i                                                      y                                  i                                                      x                                  i                                  T                                                      ∑                                               i                                     =                                     1                                              n                                                      a                                  i                                                      y                                  i                                                      x                                  i                                          +                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                          −                               b                                           ∑                                               i                                     =                                     1                                              n                                                      a                                  i                                                      y                                  i                                          +                               C                                           ∑                                               i                                     =                                     1                                              n                                                      ε                                  i                                          −                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                                      ε                                  i                                          −                                           ∑                                               i                                     =                                     1                                              n                                                      β                                  i                                                      ε                                  i                                                 =-\frac{1}{2}\sum_{i=1}^{n}a_iy_ix_i^T\sum_{i=1}^{n}a_iy_ix_i+\sum_{i=1}^{n}\alpha_i-b\sum_{i=1}^{n}a_iy_i+C\sum_{i=1}^{n}\varepsilon_i -\sum_{i=1}^{n}\alpha_i\varepsilon_i-\sum_{i=1}^{n}\beta_i\varepsilon_i                        =−21​∑i=1n​ai​yi​xiT​∑i=1n​ai​yi​xi​+∑i=1n​αi​−b∑i=1n​ai​yi​+C∑i=1n​εi​−∑i=1n​αi​εi​−∑i=1n​βi​εi​
  •                                               =                               −                                           1                                  2                                                      ∑                                               i                                     =                                     1                                              n                                                      a                                  i                                                      y                                  i                                                      x                                  i                                  T                                                      ∑                                               i                                     =                                     1                                              n                                                      a                                  i                                                      y                                  i                                                      x                                  i                                          +                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                          +                               C                                           ∑                                               i                                     =                                     1                                              n                                                      ε                                  i                                          −                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                                      ε                                  i                                          −                                           ∑                                               i                                     =                                     1                                              n                                                      β                                  i                                                      ε                                  i                                                 =-\frac{1}{2}\sum_{i=1}^{n}a_iy_ix_i^T\sum_{i=1}^{n}a_iy_ix_i+\sum_{i=1}^{n}\alpha_i+C\sum_{i=1}^{n}\varepsilon_i -\sum_{i=1}^{n}\alpha_i\varepsilon_i-\sum_{i=1}^{n}\beta_i\varepsilon_i                        =−21​∑i=1n​ai​yi​xiT​∑i=1n​ai​yi​xi​+∑i=1n​αi​+C∑i=1n​εi​−∑i=1n​αi​εi​−∑i=1n​βi​εi​
  •                                               =                               −                                           1                                  2                                                      ∑                                               i                                     =                                     1                                              n                                                      a                                  i                                                      y                                  i                                                      x                                  i                                  T                                                      ∑                                               i                                     =                                     1                                              n                                                      a                                  i                                                      y                                  i                                                      x                                  i                                          +                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                          +                               (                               C                               −                                           α                                  i                                          −                                           β                                  i                                          )                                           ∑                                               i                                     =                                     1                                              n                                                      ε                                  i                                                 =-\frac{1}{2}\sum_{i=1}^{n}a_iy_ix_i^T\sum_{i=1}^{n}a_iy_ix_i+\sum_{i=1}^{n}\alpha_i+(C-\alpha_i-\beta_i)\sum_{i=1}^{n}\varepsilon_i                        =−21​∑i=1n​ai​yi​xiT​∑i=1n​ai​yi​xi​+∑i=1n​αi​+(C−αi​−βi​)∑i=1n​εi​
  •                                               =                                           ∑                                               i                                     =                                     1                                              n                                                                   α                                     i                                              −                                               1                                     2                                                           ∑                                                   i                                        =                                        1                                                  n                                                           ∑                                                   j                                        =                                        1                                                  n                                                           α                                     i                                                           α                                     j                                                           y                                     i                                                           y                                     j                                                           x                                     i                                     T                                                           x                                     j                                     ′                                                             =\sum_{i=1}^{n} \displaystyle \alpha_i-\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha _i\alpha _jy_iy_jx_i^Tx_j'                        =∑i=1n​αi​−21​i=1∑n​j=1∑n​αi​αj​yi​yj​xiT​xj′​
对偶问题:


  •                                                                                      m                                        a                                        x                                                  α                                                                  ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                          −                                           1                                  2                                                      ∑                                               i                                     =                                     1                                              n                                                      ∑                                               j                                     =                                     1                                              n                                                      α                                  i                                                      α                                  j                                                      y                                  i                                                      y                                  j                                                      x                                  i                                  T                                                      x                                  j                                                 \underset{\alpha }{max}\sum_{i=1}^{n}\alpha_i-\frac{1}{2}\sum_{i=1}^{n}\sum_{j=1}^{n}\alpha _i\alpha _jy_iy_jx_i^Tx_j                        αmax​∑i=1n​αi​−21​∑i=1n​∑j=1n​αi​αj​yi​yj​xiT​xj​
  •                                               s                               .                               t                               .                                              ∑                                               i                                     =                                     1                                              n                                                      a                                  i                                                      y                                  i                                          =                               0                                      s.t.\: \: \: \sum_{i=1}^{n}a_iy_i=0                        s.t.∑i=1n​ai​yi​=0
  •                                               0                               <                               α                               <                               C                               ,                               i                               =                               1                               ,                               2                               ,                               .                               .                               .                               ,                               n                                      0< \alpha < C,i=1,2,...,n                        0<α<C,i=1,2,...,n
假设                                              α                            ∗                                       \alpha ^{*}                  α∗ 是上面凸二次规划问题的最优解,则                                              α                            ∗                                  ≠                         0                              \alpha ^{*}\neq 0                  α∗=0 。假设满足                                              α                            ∗                                  >                         0                              \alpha ^{*}>0                  α∗>0 ,按下面方式计算出的解为原问题的唯一最优解:


  •                                                    w                               ∗                                      =                                       ∑                                           i                                  =                                  1                                          n                                                 α                               i                               ∗                                                 y                               i                                                 x                               i                                            w^*=\sum_{i=1}^{n}\alpha_i^{*}y_ix_i                     w∗=∑i=1n​αi∗​yi​xi​
在KKT条件下我们盼望带入一个支持向量的值来求出                                              b                            ∗                                       b^*                  b∗,但是求解                                    b                              b                  b 的值需要                                    ε                              \varepsilon                  ε 的资助而想要求出                                    ε                              \varepsilon                  ε 的值需要                                              b                            ∗                                       b^*                  b∗ 的资助如许的话就形成了死锁什么值都求不出来。恰恰我们有别的一个条件的支持向量(                                   α                         ⩽                         C                              \alpha \leqslant C                  α⩽C 的情况下,称之为自由支持向量),这种支持向量的                                    ε                              \varepsilon                  ε 值为0。如许我们可以利用自由支持向量来求出                                              b                            ∗                                       b^*                  b∗的值。


  •                                               0                               <                                           α                                  ∗                                          <                               C                                      0< \alpha^* < C                        0<α∗<C:这时                                              ε                                      \varepsilon                        ε 的值为0,可以通过下式计算                                                          b                                  ∗                                          =                                           y                                  i                                          −                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                  ∗                                                      y                                  i                                                      x                                  i                                  T                                                      x                                  i                                                 b^*=y_i-\sum_{i=1}^{n}\alpha_i^*y_ix_i^Tx_i                        b∗=yi​−∑i=1n​αi∗​yi​xiT​xi​。
  •                                                           α                                  ∗                                          =                               0                                      \alpha^*=0                        α∗=0:不是支持向量机,无法计算。
  •                                                           α                                  ∗                                          =                               C                                      \alpha^* =C                        α∗=C:这个时候                                                          b                                  ∗                                          =                                           y                                  i                                          −                                           ∑                                               i                                     =                                     1                                              n                                                      α                                  i                                  ∗                                                      y                                  i                                                      x                                  i                                  T                                                      x                                  i                                          −                                           ε                                  i                                                 b^*=y_i-\sum_{i=1}^{n}\alpha_i^*y_ix_i^Tx_i-\varepsilon_i                        b∗=yi​−∑i=1n​αi∗​yi​xiT​xi​−εi​,求解                                                          b                                  ∗                                                 b^*                        b∗ 需要                                              ε                                      \varepsilon                        ε ,产生死锁。
4.核函数

4.1 概念

支持向量机算法分类和回归方法的中都支持线性性和非线性类型的数据类型。非线性类型通常是二维平面不可分,为了使数据可分,需要通过一个函数将原始数据映射到高维空间,从而使得数据在高维空间很轻易可分,需要通过一个函数将原始数据映射到高维空间,从而使得数据在高维空间很轻易区分,如许就达到数据分类或回归的目的,而实现这一目标的函数称为核函数。


4.2 常见的核函数

线性核(Linear Kernel)


  •                                         k                            (                                       x                               i                                      ,                                       x                               j                                      )                            =                                       x                               i                               T                                                 x                               j                                            k(x_i,x_j)=x_i^Tx_j                     k(xi​,xj​)=xiT​xj​
多项式核(Polynomial Kernel)


  •                                         k                            (                                       x                               i                                      ,                                       x                               j                                      )                            =                            (                                       x                               i                               T                                                 x                               j                                                 )                               d                                            k(x_i,x_j)=(x_i^Tx_j)^d                     k(xi​,xj​)=(xiT​xj​)d
高斯核(Gaussian Kernel)


  •                                         k                            (                                       x                               i                                      ,                                       x                               j                                      )                            =                            e                            x                            p                            (                            −                                                   ∣                                  ∣                                               x                                     i                                              −                                               x                                     j                                              ∣                                               ∣                                     2                                                                  2                                               σ                                     2                                                             )                                  k(x_i,x_j)=exp(-\frac{||x_i-x_j||^2}{2\sigma^2})                     k(xi​,xj​)=exp(−2σ2∣∣xi​−xj​∣∣2​)
拉普拉斯核(Laplacian Kernel)


  •                                         k                            (                                       x                               i                                      ,                                       x                               j                                      )                            =                            e                            x                            p                            (                            −                                                   ∣                                  ∣                                               x                                     i                                              −                                               x                                     j                                              ∣                                  ∣                                                      2                                  σ                                                 )                                  k(x_i,x_j)=exp(-\frac{||x_i-x_j||}{2\sigma})                     k(xi​,xj​)=exp(−2σ∣∣xi​−xj​∣∣​)
Sigmoid核(Sigmoid Kernel)


  •                                         k                            (                                       x                               i                                      ,                                       x                               j                                      )                            =                            tanh                            ⁡                            (                            β                                       x                               i                               T                                                 x                               j                                      +                            θ                            )                                  k(x_i,x_j)=\tanh(\beta x_i^Tx_j+\theta )                     k(xi​,xj​)=tanh(βxiT​xj​+θ)
二、代码实战

1.实验要求

实战要求:利用SVM建立自己的垃圾邮件过滤器。起首需要将每个邮件x变成一个n维的特征向量,并训练一个分类器来分类给定的电子邮件x是否属于垃圾邮件                                    (                         y                         =                         1                         )                              (y=1)                  (y=1) 或者非垃圾邮件                                    (                         y                         =                         0                         )                              (y=0)                  (y=0) 。
数据集:emailSample1.txt, vocab.txt, spamTrain.mat, spamTest.mat
2.详细实现

2.1 词汇表加载

从 vocab.txt 文件中读取词汇表,每行是 编号\t单词 格式,返回一个 dict[word] = index。
  1. def load_vocab(vocab_path='vocab.txt'):
  2.     vocab = {}
  3.     try:
  4.         with open(vocab_path, 'r', encoding='utf-8') as f:
  5.             for line in f:
  6.                 idx, word = line.strip().split('\t')
  7.                 vocab[word] = int(idx)
  8.     except FileNotFoundError:
  9.         print(f"错误:找不到词汇表文件 {vocab_path}")
  10.     return vocab
复制代码
2.2 邮件预处置惩罚函数

功能:


  • 读取邮件内容并小写化
  • 正则表达式洗濯文本:去除HTML、网址、邮箱、数字、$符号等
  • 分词(利用标点符号和空缺符切分)
  • 过滤长度 <=1 的 token
  • 把词转换成词汇表中的索引,返回索引列表
  1. def process_email(email_path, vocab):
  2.     try:
  3.         with open(email_path, 'r', encoding='utf-8') as f:
  4.             email = f.read().lower()
  5.     except FileNotFoundError:
  6.         print(f"错误:找不到邮件文件 {email_path}")
  7.         return []
  8.     email = re.sub('<[^<>]+>', ' ', email)
  9.     email = re.sub(r'(http|https)://[^\s]+', 'httpaddr', email)
  10.     email = re.sub(r'[^\s]+@[^\s]+', 'emailaddr', email)
  11.     email = re.sub(r'[0-9]+', 'number', email)
  12.     email = re.sub(r'[$]+', 'dollar', email)
  13.     tokens = re.split(r'[\s{}]+'.format(re.escape(string.punctuation)), email)
  14.     tokens = [t for t in tokens if len(t) > 1]
  15.     word_indices = [vocab[token] for token in tokens if token in vocab]
  16.     return word_indices
  17.    
复制代码
2.3词索引转换为特征向量

返回一个 vocab_size 维的 0-1 向量,表示当前邮件中是否包罗词汇表中的词。
  1. def email_to_feature_vector(word_indices, vocab_size=1899):
  2.     features = np.zeros(vocab_size)
  3.     for idx in word_indices:
  4.         if 1 <= idx <= vocab_size:
  5.             features[idx - 1] = 1
  6.     return features
复制代码
2.4 SVM 模子训练

封装 SVM 训练函数:


  • 支持 linear、poly(多项式)、rbf(高斯核)
  • 隐藏告诫信息(训练时可能会出现收敛告诫)
  1. def train_svm(X, y, kernel='linear', C=1.0, degree=3):
  2.     if kernel == 'linear':
  3.         clf = LinearSVC(C=C, max_iter=5000, random_state=42)
  4.     else:
  5.         clf = SVC(kernel=kernel, C=C, degree=degree, max_iter=5000, random_state=42)
  6.     with warnings.catch_warnings():
  7.         warnings.simplefilter("ignore")
  8.         clf.fit(X, y)
  9.     return clf
复制代码
2.5 绘制决策边界



  • 利用 PCA 降维后的数据绘制 SVM 的决策边界
  • 绘制 margin 线(±1)和支持向量间隔
  • 可视化赤色点(非垃圾邮件)和蓝色点(垃圾邮件)
  1. def plot_decision_boundary(clf, X, y, title):
  2.     x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
  3.     y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
  4.     xx, yy = np.meshgrid(np.linspace(x_min, x_max, 500),
  5.                          np.linspace(y_min, y_max, 500))
  6.     if hasattr(clf, "decision_function"):
  7.         Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
  8.     else:
  9.         Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])[:, 1]
  10.     Z = Z.reshape(xx.shape)
  11.     plt.figure(figsize=(8, 6))
  12.     plt.contour(xx, yy, Z, levels=[-1, 0, 1], linestyles=['--', '-', '--'], colors='k')
  13.     plt.scatter(X[y == 0, 0], X[y == 0, 1], c='red', label='非垃圾邮件', edgecolors='k')
  14.     plt.scatter(X[y == 1, 0], X[y == 1, 1], c='blue', label='垃圾邮件', edgecolors='k')
  15.     plt.title(title)
  16.     plt.xlabel('PCA 特征1')
  17.     plt.ylabel('PCA 特征2')
  18.     plt.legend()
  19.     plt.show()
复制代码
2.6 主函数 main()

主要流程为:

  • 加载词汇表和数据文件(.mat)
  • 提取训练和测试数据
  • PCA降维用于可视化
  • 多种核函数下的模子训练和评估
  • 对示例邮件进行分类测试
  1. def main():
  2.     vocab = load_vocab('vocab.txt')
  3.     if not vocab:
  4.         return
  5.     try:
  6.         train_data = loadmat('spamTrain.mat')
  7.         test_data = loadmat('spamTest.mat')
  8.     except FileNotFoundError:
  9.         print("错误:数据文件不存在。请确认 spamTrain.mat 和 spamTest.mat 在当前目录。")
  10.         return
  11.     X_train = train_data['X']
  12.     y_train = train_data['y'].ravel()
  13.     X_test = test_data['Xtest']
  14.     y_test = test_data['ytest'].ravel()
  15.     # PCA降维到2维,用于可视化
  16.     pca = PCA(n_components=2, random_state=42)
  17.     X_train_pca = pca.fit_transform(X_train)
  18.     X_test_pca = pca.transform(X_test)
  19.     kernels = {
  20.         '线性核': 'linear',
  21.         '多项式核': 'poly',
  22.         '高斯核': 'rbf'
  23.     }
  24.     models = {}
  25.     for name, kernel in kernels.items():
  26.         print(f"\n训练 {name} SVM (C={C})...")
  27.         if kernel == 'poly':
  28.             clf = train_svm(X_train_pca, y_train, kernel=kernel, degree=3, C=C)
  29.         else:
  30.             clf = train_svm(X_train_pca, y_train, kernel=kernel, C=C)
  31.         models[name] = clf
  32.         train_acc = clf.score(X_train_pca, y_train)
  33.         test_acc = clf.score(X_test_pca, y_test)
  34.         print(f"{name} 训练集准确率: {train_acc * 100:.2f}%")
  35.         print(f"{name} 测试集准确率: {test_acc * 100:.2f}%")
  36.         plot_decision_boundary(clf, X_train_pca, y_train, f"{name} SVM 决策边界 (PCA降维)")
  37.     # 示例邮件测试
  38.     word_indices = process_email('emailSample1.txt', vocab)
  39.     if not word_indices:
  40.         print("示例邮件处理失败,退出")
  41.         return
  42.     print("示例邮件词索引(前10个):", word_indices[:10])
  43.     email_features = email_to_feature_vector(word_indices)
  44.     email_features_pca = pca.transform(email_features.reshape(1, -1))
  45.     print("\n示例邮件预测结果:")
  46.     for name, clf in models.items():
  47.         pred = clf.predict(email_features_pca)[0]
  48.         print(f"{name}: {'垃圾邮件' if pred == 1 else '非垃圾邮件'}")
复制代码
3.完整代码

  1. import numpy as npimport reimport stringfrom scipy.io import loadmatfrom sklearn.svm import LinearSVC, SVCfrom sklearn.decomposition import PCAimport matplotlib.pyplot as pltfrom matplotlib.font_manager import FontPropertiesimport warnings# === 可调参数 ===C = 10.0  # 修改这里的 C 即可改变模子复杂度# === 字体设置(支持中文显示)===font_path = "C:/Windows/Fonts/simhei.ttf"font_prop = FontProperties(fname=font_path)plt.rcParams['font.family'] = font_prop.get_name()plt.rcParams['axes.unicode_minus'] = Falsedef load_vocab(vocab_path='vocab.txt'):
  2.     vocab = {}
  3.     try:
  4.         with open(vocab_path, 'r', encoding='utf-8') as f:
  5.             for line in f:
  6.                 idx, word = line.strip().split('\t')
  7.                 vocab[word] = int(idx)
  8.     except FileNotFoundError:
  9.         print(f"错误:找不到词汇表文件 {vocab_path}")
  10.     return vocab
  11. def process_email(email_path, vocab):    try:        with open(email_path, 'r', encoding='utf-8') as f:            email = f.read().lower()    except FileNotFoundError:        print(f"错误:找不到邮件文件 {email_path}")        return []    email = re.sub('<[^<>]+>', ' ', email)    email = re.sub(r'(http|https)://[^\s]+', 'httpaddr', email)    email = re.sub(r'[^\s]+@[^\s]+', 'emailaddr', email)    email = re.sub(r'[0-9]+', 'number', email)    email = re.sub(r'[$]+', 'dollar', email)    tokens = re.split(r'[\s{}]+'.format(re.escape(string.punctuation)), email)    tokens = [t for t in tokens if len(t) > 1]    word_indices = [vocab[token] for token in tokens if token in vocab]    return word_indicesdef email_to_feature_vector(word_indices, vocab_size=1899):
  12.     features = np.zeros(vocab_size)
  13.     for idx in word_indices:
  14.         if 1 <= idx <= vocab_size:
  15.             features[idx - 1] = 1
  16.     return features
  17. def train_svm(X, y, kernel='linear', C=1.0, degree=3):
  18.     if kernel == 'linear':
  19.         clf = LinearSVC(C=C, max_iter=5000, random_state=42)
  20.     else:
  21.         clf = SVC(kernel=kernel, C=C, degree=degree, max_iter=5000, random_state=42)
  22.     with warnings.catch_warnings():
  23.         warnings.simplefilter("ignore")
  24.         clf.fit(X, y)
  25.     return clf
  26. def plot_decision_boundary(clf, X, y, title):
  27.     x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
  28.     y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
  29.     xx, yy = np.meshgrid(np.linspace(x_min, x_max, 500),
  30.                          np.linspace(y_min, y_max, 500))
  31.     if hasattr(clf, "decision_function"):
  32.         Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
  33.     else:
  34.         Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])[:, 1]
  35.     Z = Z.reshape(xx.shape)
  36.     plt.figure(figsize=(8, 6))
  37.     plt.contour(xx, yy, Z, levels=[-1, 0, 1], linestyles=['--', '-', '--'], colors='k')
  38.     plt.scatter(X[y == 0, 0], X[y == 0, 1], c='red', label='非垃圾邮件', edgecolors='k')
  39.     plt.scatter(X[y == 1, 0], X[y == 1, 1], c='blue', label='垃圾邮件', edgecolors='k')
  40.     plt.title(title)
  41.     plt.xlabel('PCA 特征1')
  42.     plt.ylabel('PCA 特征2')
  43.     plt.legend()
  44.     plt.show()
  45. def main():
  46.     vocab = load_vocab('vocab.txt')
  47.     if not vocab:
  48.         return
  49.     try:
  50.         train_data = loadmat('spamTrain.mat')
  51.         test_data = loadmat('spamTest.mat')
  52.     except FileNotFoundError:
  53.         print("错误:数据文件不存在。请确认 spamTrain.mat 和 spamTest.mat 在当前目录。")
  54.         return
  55.     X_train = train_data['X']
  56.     y_train = train_data['y'].ravel()
  57.     X_test = test_data['Xtest']
  58.     y_test = test_data['ytest'].ravel()
  59.     # PCA降维到2维,用于可视化
  60.     pca = PCA(n_components=2, random_state=42)
  61.     X_train_pca = pca.fit_transform(X_train)
  62.     X_test_pca = pca.transform(X_test)
  63.     kernels = {
  64.         '线性核': 'linear',
  65.         '多项式核': 'poly',
  66.         '高斯核': 'rbf'
  67.     }
  68.     models = {}
  69.     for name, kernel in kernels.items():
  70.         print(f"\n训练 {name} SVM (C={C})...")
  71.         if kernel == 'poly':
  72.             clf = train_svm(X_train_pca, y_train, kernel=kernel, degree=3, C=C)
  73.         else:
  74.             clf = train_svm(X_train_pca, y_train, kernel=kernel, C=C)
  75.         models[name] = clf
  76.         train_acc = clf.score(X_train_pca, y_train)
  77.         test_acc = clf.score(X_test_pca, y_test)
  78.         print(f"{name} 训练集准确率: {train_acc * 100:.2f}%")
  79.         print(f"{name} 测试集准确率: {test_acc * 100:.2f}%")
  80.         plot_decision_boundary(clf, X_train_pca, y_train, f"{name} SVM 决策边界 (PCA降维)")
  81.     # 示例邮件测试
  82.     word_indices = process_email('emailSample1.txt', vocab)
  83.     if not word_indices:
  84.         print("示例邮件处理失败,退出")
  85.         return
  86.     print("示例邮件词索引(前10个):", word_indices[:10])
  87.     email_features = email_to_feature_vector(word_indices)
  88.     email_features_pca = pca.transform(email_features.reshape(1, -1))
  89.     print("\n示例邮件预测结果:")
  90.     for name, clf in models.items():
  91.         pred = clf.predict(email_features_pca)[0]
  92.         print(f"{name}: {'垃圾邮件' if pred == 1 else '非垃圾邮件'}")
  93. if __name__ == "__main__":    main()
复制代码
4.运行结果

4.1 线性核SVM决策边界(PCA降维)


4.2 多项式核SVM决策边界(PCA降维)


4.3 高斯核SVM决策边界(PCA降维)


4.4 分类结果


4.5 对 C 不同取值的分析



  • 线性核为例,利用不同的C值进行分析:
  • 在函数中通过定义 C_list = [0.01, 0.1, 1, 10, 100] 进行遍历不同的 C 值。
  • 得到以下的运行结果



  • 分析:当C取值较小值时,可能会出现欠拟合的情形,泛化能力较差;当C取值中等时,拟合精良,泛化能力最佳;当C取较大值时,可能会出现欠拟合的情形,泛化能力较差。
三、感受

在本次关于支持向量机(SVM)的实验中,我对SVM的基本原理、数学推导以及实际应用有了更深入的理解。通过理论学习与动手实践相团结的方式,我把握了硬间隔与软间隔的概念,并能开端利用SVM进行线性与非线性分类问题建模。
实验过程中,通过构建最大间隔超平面,我深刻体会到支持向量对分类边界的重要性,以及怎样通过优化目标函数提升模子的泛化能力。此外,核函数的引入也让我理解了SVM在高维空间处置惩罚非线性问题的强大之处,尤其是利用核技巧将低维不可分问题映射为高维线性可分问题的数学头脑。
虽然SVM具有较强的分类能力,但实验中我也意识到其对参数敏感(如惩罚参数C和核参数γ),在样本量较大时计算复杂度也较高,因此在实际应用中需要团结交叉验证和调参技巧来提升性能。
总体而言,本次实验不但提升了我对机器学习算法的理解,更增强了我将数学理论应用于实际数据分析场景的能力。未来我盼望能进一步探索SVM与其他模子(如逻辑回归、神经网络)在不同使命中的表现差异,以选择更得当的办理方案。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81429

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表