前提:经过了感知器等基本概念的学习,我们以及知道如何训练出可以用于解决分类问题的超平面
说明:本文将讨论一个同样能够完成分类问题的较为复杂的想法——支持向量机 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+b≥0,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++b≥1,对于+样本ω⋅x−+b≤−1,对于−样本
- 这两类样本之间存在一个空白区域从-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)−1≥0,[∗公式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