Support Vector Machines 支持向量机

本文详细介绍了支持向量机(SVM)的原理,包括如何确定分类决策边界,通过拉格朗日乘子优化间隔宽度,以及核函数在处理非线性可分数据的重要性。主要内容围绕线性可分样本、支持向量、内积表达和优化策略展开。
摘要由CSDN通过智能技术生成

前提:经过了感知器等基本概念的学习,我们以及知道如何训练出可以用于解决分类问题的超平面

说明:本文将讨论一个同样能够完成分类问题的较为复杂的想法——支持向量机 SVM(Support Vector Machines)

它由 美国计算机学家 Vladimir Vapnik 提出,用来确定分类问题的决策边界

参考:https://www.youtube.com/watch?v=_PwhiWxHK8o

Intro 引入

目前我们有很多方法能够画出各种决策边界

请添加图片描述

Vapnik 对此提出:

  • 对空间中的线性可分的两类样本,要画出决策边界,无非是一个超平面,但是选择哪一个边界是个问题。
  • 例如下图的例子,我们希望的是画出一个与两类样本间隔最宽的直线(下图虚线),把这个空白的间隔范围(两个橙色线之间)想象成一个沟渠

请添加图片描述

  • 其中, ω ⃗ \vec{\omega} ω 是垂直于决策边界的任意长度向量, v ⃗ \vec{v} v 是我们想判断分类的样本点

  • 如果 w ⃗ ⋅ u ⃗ ≥ C \vec{w}\cdot\vec{u}\geq C w u C 那么样本很明显是在直线右侧的一类(+)

  • 换个方式来描述这个分类规则, 令 C = − b C=-b C=b,有 :

  • w ⃗ ⋅ u ⃗ + b ≥ 0 , T H E N ( + ) , [ ∗ 公式 1 ] \vec{w}\cdot\vec{u}+b\geq 0 , THEN (+) , [*公式1] w u +b0,THEN(+),[公式1]

    • $\vec{u} $ 是我们已知,待分类的样本
    • ω ⃗ \vec{\omega} ω b b b ,分别是我们需要进一步确定的 权值 和 偏置
    • 由于我们希望确定一个唯一的最优结果,所以我们要考虑这个优化问题的限制。

Support Vector 支持向量

对于我们已知的训练集,它包含两类样本,分别是 x + x_+ x+ x − x_- x
ω ⃗ ⋅ x + ⃗ + b ≥ 1 , 对于 + 样本 ω ⃗ ⋅ x − ⃗ + b ≤ − 1 , 对于 − 样本 \vec{\omega}\cdot\vec{x_+}+b \geq 1 , 对于+样本\\ \vec{\omega}\cdot\vec{x_-}+b \leq -1, 对于-样本 ω x+ +b1,对于+样本ω x +b1,对于样本

  • 这两类样本之间存在一个空白区域从-1到1

我们引入一个变量 y i y_i yi来明确第 i i i个样本属于哪一类:
y i = + 1 , 对于 + 样本 y i = − 1 , 对于 − 样本 y_i=+1, 对于+样本\\ y_i=-1, 对于-样本 yi=+1,对于+样本yi=1,对于样本
这样我们将得到
y i ( w ⃗ ⋅ x i ⃗ + b ) ≥ 1 y_i(\vec{w} \cdot \vec{x_i}+b) \geq 1 yi(w xi +b)1
把1移到左边
y i ( w ⃗ ⋅ x i ⃗ + b ) − 1 ≥ 0 , [ ∗ 公式 2 ] y_i(\vec{w} \cdot \vec{x_i}+b) -1\geq 0, [*公式2] yi(w xi +b)10,[公式2]
如果 y i ( w ⃗ ⋅ x i ⃗ + b ) − 1 = 0 y_i(\vec{w} \cdot \vec{x_i}+b) -1= 0 yi(w xi +b)1=0, 这个样本 x i ⃗ \vec{x_i} xi 在沟渠边界,其实就是支持向量,如下图在两个边界上的点

请添加图片描述

  • 这个间隔的宽度等于正负边界上的支持向量的差 ( x + ⃗ − x − ⃗ ) (\vec{x_+}-\vec{x_-}) (x+ x )乘上垂直于边界的单位方向向量,在前面我们有 ω ⃗ \vec{\omega} ω 是垂直于决策边界的任意长度向量,那么它除以自身的模就是单位向量了,因此有:
    W i d t h = ( x + ⃗ − x − ⃗ ) ⋅ w ⃗ ∣ ∣ w ⃗ ∣ ∣ Width = (\vec{x_+}-\vec{x_-})\cdot \frac{\vec{w}}{||\vec{w}||} Width=(x+ x )∣∣w ∣∣w

Max the width 最大间隔问题

  • 从**[*公式2]**可以知道对于一个支持向量 x + ⃗ \vec{x_+} x+ 有:

    • y i ( w ⃗ ⋅ x + ⃗ + b ) − 1 = 0 y_i(\vec{w} \cdot \vec{x_+}+b) -1= 0 yi(w x+ +b)1=0
    • $ y_i=+1, 对于+样本$
    • 因此: w ⃗ ⋅ x + ⃗ = 1 − b \vec{w} \cdot \vec{x_+}=1-b w x+ =1b
  • 类似的对于支持向量 x − ⃗ \vec{x_-} x

    • y i ( w ⃗ ⋅ x − ⃗ + b ) − 1 = 0 y_i(\vec{w} \cdot \vec{x_-}+b) -1= 0 yi(w x +b)1=0
    • y i = − 1 , 对于 − 样本 y_i=-1, 对于-样本 yi=1,对于样本
    • 因此: w ⃗ ⋅ x − ⃗ = − 1 − b \vec{w} \cdot \vec{x_-}=-1-b w x =1b
    • w ⃗ ⋅ x + ⃗ − w ⃗ ⋅ x − ⃗ = 1 − b − ( − 1 − b ) = 2 \vec{w} \cdot \vec{x_+}-\vec{w} \cdot \vec{x_-}=1-b-(-1-b)=2 w x+ w x =1b(1b)=2
  • 所以宽度公式可以进一步表示为
    W i d t h = ( x + ⃗ − x − ⃗ ) ⋅ w ⃗ ∣ ∣ w ⃗ ∣ ∣ = 2 ∣ ∣ w ⃗ ∣ ∣ , [ ∗ 公式 3 ] Width = (\vec{x_+}-\vec{x_-})\cdot \frac{\vec{w}}{||\vec{w}||}=\frac{2}{||\vec{w}||},[*公式3] Width=(x+ x )∣∣w ∣∣w =∣∣w ∣∣2,[公式3]

  • 我们的问题就在于如何得到最大的间隔宽度 W i d t h Width Width

  • 忽略掉常数,我们需要最大化 1 ∣ ∣ w ⃗ ∣ ∣ \frac{1}{||\vec{w}||} ∣∣w ∣∣1,也就是要最小化 ∣ ∣ w ⃗ ∣ ∣ {||\vec{w}||} ∣∣w ∣∣

  • 更进一步,最小化 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 \frac{1}{2}{||\vec{w}||}^2 21∣∣w ∣∣2, 这种形式方便我们直接套用数学上的优化问题的解决方法——拉格朗日公式

Lagrange mutipliers 拉格朗日乘子

  • 对于一个有限制(边界条件)的函数,用拉格朗日乘子可以求函数的极值

  • L = 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 − ∑ α i [ y i ( w ⃗ ⋅ x i ⃗ + b ) − 1 ] L=\frac{1}{2}{||\vec{w}||}^2-\sum\alpha_i[y_i(\vec{w} \cdot \vec{x_i}+b) -1] L=21∣∣w ∣∣2αi[yi(w xi +b)1]

    • L 表示我们要最大化的量
    • α i \alpha_i αi 是拉格朗日乘子,支持向量对应的是1,其他的是0
    • y i ( w ⃗ ⋅ x i ⃗ + b ) − 1 y_i(\vec{w} \cdot \vec{x_i}+b) -1 yi(w xi +b)1是限制条件
    • 如果需要进一步了解可以参考https://zhuanlan.zhihu.com/p/542402242
  • 要求一个函数的极值,我们可以先求导来判断
    ∂ L ∂ w ⃗ = w ⃗ − ∑ α i y i x i ⃗ = 0 \frac{\partial L}{\partial \vec{w}}=\vec{w}-\sum\alpha_iy_i\vec{x_i}=0 w L=w αiyixi =0

    • 对于向量的求导我们不做展开说明,其基本形式与标量类似,特殊情况我们再做说明。

    • w ⃗ = ∑ α i y i x i ⃗ , [ ∗ 公式 4 ] \vec{w}=\sum\alpha_iy_i\vec{x_i},[*公式4] w =αiyixi ,[公式4]

  • 接下来我们对 b b b求偏导

∂ L ∂ b = − ∑ α i y i = 0 \frac{\partial L}{\partial b}=-\sum\alpha_iy_i=0 bL=αiyi=0

  • ∑ α i y i = 0 , [ ∗ 公式 5 ] \sum\alpha_iy_i=0,[*公式5] αiyi=0,[公式5]

  • 我们把[*公式4]带入到拉格朗日公式里得到

L = 1 2 ( w ⃗ ) 2 − ∑ α i y i x i ⃗ ( w ⃗ ) − ∑ α i y i b + ∑ α i = 1 2 ( ∑ α i y i x i ⃗ ) ⋅ ( ∑ α j y j x j ⃗ ) ① − ( ∑ α i y i x i ) ⋅ ( ∑ α j y j x j ⃗ ) ② − ∑ α i y i b ③ + ∑ α i ④ L=\frac{1}{2}{(\vec{w})}^2-\sum\alpha_iy_i\vec{x_i}(\vec{w})-\sum\alpha_iy_ib+\sum\alpha_i\\ =\frac{1}{2}{(\sum\alpha_iy_i\vec{x_i})}\cdot{(\sum\alpha_jy_j\vec{x_j})} ①\\-(\sum\alpha_iy_ix_i)\cdot(\sum\alpha_jy_j\vec{x_j})②\\-\sum\alpha_iy_ib③+\sum\alpha_i④ L=21(w )2αiyixi (w )αiyib+αi=21(αiyixi )(αjyjxj )(αiyixi)(αjyjxj )αiyib+αi

  • 上面的结果一共有①-④项,我们来分析一下

    • ①和②是同类项,合并后系数为 − 1 2 -\frac{1}{2} 21
    • ③中b对于求和来说是常数,可以提出来,由 ∑ α i y i = 0 , [ 公式 5 ] \sum\alpha_iy_i=0,[公式5] αiyi=0,[公式5]发现③项等于0
    • ④项保留
  • L = − 1 2 ( ∑ α i y i x i ⃗ ) ⋅ ( ∑ α j y j x j ⃗ ) + ∑ α i L=-\frac{1}{2}{(\sum\alpha_iy_i\vec{x_i})}\cdot{(\sum\alpha_jy_j\vec{x_j})} +\sum\alpha_i L=21(αiyixi )(αjyjxj )+αi

  • 最终得到

  • L = ∑ α i − 1 2 ∑ i ∑ j α i α j y i y j x i ⃗ ⋅ x j ⃗ , [ ∗ 公式 6 ] L=\sum\alpha_i-\frac{1}{2}\sum_i\sum_j\alpha_i\alpha_jy_iy_j \vec{x_i}\cdot\vec{x_j}, [*公式6] L=αi21ijαiαjyiyjxi xj ,[公式6]

    至此,我们所有的问题都转化为了,求[*公式6]这个表达式的最大值

这个形式清楚的表达了,这个最大值与这些样本向量(训练集)的关系。

我们发现这个最优值取决于这些样本,它们两两之间的内积,也就是** x i ⃗ ⋅ x j ⃗ \vec{x_i}\cdot \vec{x_j} xi xj **

  • 同样带入[公式4]我们的决策条件(分类规则)[*公式1]也变成了:

  • ∑ α i y i x i ⃗ ⋅ u ⃗ + b ≥ 0 , T H E N ( + ) \sum\alpha_iy_i\vec{x_i}\cdot\vec{u}+b\geq 0 , THEN (+) αiyixi u +b0,THEN(+)

分类规则也同样取决于训练集的样本(支持向量)和测试样本之间的内积, x i ⃗ ⋅ u ⃗ \vec{x_i}\cdot \vec{u} xi u

Kernel Function 核函数

在当前维度,如果样本线性不可分,可以使用核(Kernel)来把样本映射到更高维的空间,使样本线性可分。
x ⃗ → ϕ ( x ⃗ ) \vec{x} \rightarrow \phi(\vec{x}) x ϕ(x )
上一小节我们得出结论:无论是优化问题还是分类规则都与样本向量两两间的内积有关,因此我们可以考虑映射后的内积的表达

  • 对于 L L L, 需要求:

ϕ ( x i ⃗ ) ⋅ ϕ ( x j ⃗ ) \phi(\vec{x_i})\cdot\phi(\vec{x_j}) ϕ(xi )ϕ(xj )

  • 对于分类规则,需要:

ϕ ( x i ⃗ ) ⋅ ϕ ( u ⃗ ) \phi(\vec{x_i})\cdot\phi(\vec{u}) ϕ(xi )ϕ(u )

因此我们定义核函数为:
K ( x i ⃗ , x j ⃗ ) = ϕ ( x i ⃗ ) ⋅ ϕ ( x j ⃗ ) K(\vec{x_i},\vec{x_j})=\phi(\vec{x_i})\cdot\phi(\vec{x_j}) K(xi ,xj )=ϕ(xi )ϕ(xj )
我们甚至无需确定映射的规则( ϕ ( x ⃗ ) \phi(\vec{x}) ϕ(x ) 的表达式),只需要知道核函数 K ( x i ⃗ , x j ⃗ ) K(\vec{x_i},\vec{x_j}) K(xi ,xj ) 的表达式足矣

  • 几种常用的核函数:

    • K ( u , v ) = ( u T ⋅ v + 1 ) n K(u,v)=(u^T\cdot v+1)^n K(u,v)=(uTv+1)n

    • K ( u , v ) = u T ⋅ v K(u,v)=u^T\cdot v K(u,v)=uTv

    • K ( u , v ) = e − ∣ ∣ u − v ∣ ∣ σ K(u,v)=e^{-\frac{||u-v||}{\sigma}} K(u,v)=eσ∣∣uv∣∣

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值