理解SVM 的三层境界 —— 自学笔记01
主要参考资料为:
1: 结构之法算法之道blog(作者July)的 支持向量机通俗导论(理解SVM的三层境界)。
2: Convex Optimization(作者Stephen Boyd)
本文为以自己思路整理的笔记。
一、了解SVM
SVM,全称 Support Vector Machine \text{ Support\ Vector\ Machine} Support Vector Machine,中文名 支持向量机,是一种二分类模型,其中,支持向量表示的是距离超平面最近的向量,即当超平面移动时候,首先“穿过”的向量。
首先我们现在理解一下什么是 Logistic 回归:
Logistic 回归目的是从特征学习出一个 0/1 分类模型,将样本向量带入到 Logistic 函数(或者称作 sigmoid 函数)得到的函数值被认为是属于
y
=
1
y=1
y=1 这个类别的概率。 Logistic 函数表达式以及图像如下:
g
(
z
)
=
1
1
+
e
−
z
(1.1)
g(z) = \frac{1}{1+e^{-z}} \tag{1.1}
g(z)=1+e−z1(1.1)
![](https://gitee.com/PolarisF/Picgo_image/raw/master/20210205214032.png)
从而当我们新拿到一个样本的时候,通过 g ( z ) g(z) g(z) 就可以判断其属于哪一个类,若 g ( z ) > 0.5 g(z)>0.5 g(z)>0.5 就属于 y = 1 y=1 y=1 的类,反之属于 y = 0 y=0 y=0 的类。
Q: 为什么一个多维的样本可以用过这个一元函数进行分类呢,因为这里 z ∈ R z\in \R z∈R ?
A: 对一个多维的样本,我们可以通过超平面方程,将多维向量映射到实轴上,然后用过 g ( z ) g(z) g(z) 分类即可。
然后看一下什么是线性分类:
以二维平面举例,平面上有两种不同数据,分别用○和△标示,由于这些数据是线性可分的,所以可以用一条直线将这两类数据分开,在二维平面上中,这条直线的表达式为 a x + b y + c = 0 a x + b y + c=0 ax+by+c=0 ,当数据的维数为 n n n 维时候,这个“直线”称为超平面,可以表示为 f ( x ) = ω T x + b f(x) = \omega ^T x+b f(x)=ωTx+b ,这里 ω \omega ω 和 x x x 为一列向量, b b b 为常数。当数据刚好在平面上时候有 f ( x ) = 0 f(x)=0 f(x)=0 。超平面两边的数据点分别对应标签 y = 1 y=1 y=1 和 y = − 1 y=-1 y=−1 。
![](https://gitee.com/PolarisF/Picgo_image/raw/master/20210201221010.png)
Q: 为什么 SVM 中的标签 y y y 只取 1 和 -1 ?
A: 因为 y y y 是二分类的分类标签,相当于上述 Logistic 函数的上下界 0 / 1 0/1 0/1 ,我们只需要对 g ( z ) g(z) g(z) 进行上下平移和缩放即可得到想要的上下界,我们去 1 和 -1 是为了我们后面计算的方便性,因为超平面两侧的函数值符号相反,所以根据这个特点可以将判断是否正确分类样本的标准用 y ⋅ ( ω x + b ) > 0 y\cdot (\omega x+b)>0 y⋅(ωx+b)>0 统一表示。当然分类标签取 1 和 2 也是可以的,那就需要奖判断标准改为 ( y − 1.5 ) ⋅ ( ω x + b ) > 0 (y-1.5)\cdot (\omega x+b)>0 (y−1.5)⋅(ωx+b)>0 表示,显然前者更方便。
接下来,当我们需要对一些数据进行线性分类时候,只需要找到 一组 ω b \omega \ b ω b 确定一个平面。怎样确定最优的超平面呢,从直观上来讲,我们需要选择距离两边数据的距离间隔最大的超平面。
在二维空间中,我们有点到直线的距离公式 d = ∣ a x + b y + c ∣ a 2 + b 2 d = \frac{|ax+by+c|}{\sqrt{a^2+b^2}} d=a2+b2∣ax+by+c∣ ,类似的,在高维空间中,点到超平面的距离可以表示为 d = ∣ ω T x + b ∣ ∣ ∣ ω ∣ ∣ d=\frac{|\omega^Tx+b|}{||\omega||} d=∣∣ω∣∣∣ωTx+b∣ ,其中 ∣ ∣ ω ∣ ∣ = ω 1 2 + ω 1 2 + ⋯ + ω 1 2 ||\omega||=\sqrt{\omega_1^2+\omega_1^2+\cdots+\omega_1^2} ∣∣ω∣∣=ω12+ω12+⋯+ω12 ,表示向量 ω \omega ω 的二范数。对于支持向量对应的距离 d 0 d_0 d0 ,我们有 d 0 = min i ∈ [ 0 , n ] y i ( ω T x i + b ) ∣ ∣ ω ∣ ∣ d_0 = \min_{i\in[0,n]}\frac{y_i(\omega^Tx_i+b)}{||\omega||} d0=mini∈[0,n]∣∣ω∣∣yi(ωTxi+b) , 所以我们的优化问题可以描述为:
maximize d 0 subject to y i ( ω T x i + b ) ∣ ∣ ω ∣ ∣ ≥ d 0 , i = 1 , ⋯ , n (1.2) \begin{aligned} & \text{maximize}\quad d_0 \\ & \text{subject to} \quad \frac{y_i(\omega^Tx_i+b)}{||\omega||} \geq d_0,\ i = 1,\cdots,n \end{aligned} \tag{1.2} maximized0subject to∣∣ω∣∣yi(ωTxi+b)≥d0, i=1,⋯,n(1.2)
可以看到这个形式略显复杂,接下来考虑是否可以通过继续挖掘信息简化优化问题。
在公式(1.2)的约束条件中,可以看到不等式的两个分母 都是
∣
∣
ω
∣
∣
||\omega||
∣∣ω∣∣ ,所以我们只需要判断分子即可,分子表达式的意义可以理解为集合距离与超平面方程系数
∣
∣
ω
∣
∣
||\omega||
∣∣ω∣∣ 的乘积,显然针对一组样本数据,我们要得到超平面方程的两个参数,这样的最优参数有无数组,因为
w
T
x
+
b
w^Tx+b
wTx+b 和
a
(
ω
T
x
+
b
)
,
a
≠
0
a(\omega^Tx+b),a\neq0
a(ωTx+b),a=0 表示同一个平面,如果我们令目标\数中的分子
min
i
∈
[
0
,
n
]
y
i
(
ω
T
x
i
+
b
)
=
1
\min _{i\in[0,n]}y_i(\omega^Tx_i+b)=1
mini∈[0,n]yi(ωTxi+b)=1 ,这样就唯一确定了一组参数
ω
b
\omega \ b
ω b ,并且公示(1.2)可以简化为:
maximize
1
∣
∣
ω
∣
∣
subject to
y
i
(
ω
T
x
i
+
b
)
≥
1
,
i
=
1
,
⋯
,
n
(1.3)
\begin{aligned} & \text{maximize}\quad \frac{1}{||\omega||} \\ & \text{subject to} \quad y_i(\omega^Tx_i+b)\geq 1,\ i = 1,\cdots,n \end{aligned} \tag{1.3}
maximize∣∣ω∣∣1subject toyi(ωTxi+b)≥1, i=1,⋯,n(1.3)
![](https://gitee.com/PolarisF/Picgo_image/raw/master/20210205155103.png)
二、深入 SVM
三、 证明SVM
敬请期待~