不信邪,决定挑战下自己的能力,努力弄懂SVM
因为SVM的内容太多,求解较为复杂,分为几个部分来写,分步来搞定
第一个部分主要是介绍SVM的算法核心思想,再根据最简单的线性可分的数据集推导出原问题。
以下内容都是自己一个一个字码出来,图都是自己徒手画出来的,请尊重劳动成果。
1-1 SVM的简介
SVM(Support vector machine)中文名为支撑向量机,可以用于解决分类问题,也可以解决回归问题,采用核技术可以解决非线性问题,适用于小样本和高维特征。
核心思想在于最大化分类间隔,以提升分类器的泛化性能。
解决线性可分的SVM叫做Hard Margin SVM
解决非线性可分的SVM叫做Soft Margin SVM
对于SVM的具体算法的推导从解决最简单的问题开始:对线性可分的数据集进行分类,即推导Hard Margin SVM
1-2 线性分类器
对于线性可分的数据集,比如
比如这样一个样本数据是线性可分的,同时,用于分割样本的直线有无数条,所以这样的问题由称之为不适定问题。
但是不同的决策边界对应的泛化能力是不同的,明显我们会认为,直线1比直线2,在分类时的泛化能力更好。
这是因为,直线1不仅对所有的样本进行了分类,而且离两个类的样本尽可能的远。这就是SVM的核心思想,。
1-3 SVM中的名词解释
支撑向量
SVM的核心思想是最大化分离间隔,关键是远离那些靠近决策边界的点。
那些距离决策边界最近的样本,称为支撑向量。
图中被加深的两个向量就是支撑向量,也就是距离决策边界最近的向量
分类间隔(margin)
支撑向量定义了一个边界区域,这个边界区域的距离叫做分类间隔(margin),我们要找的决策边界就是位于这个区域中间的那根线。
通过示意图可以看出,决策边界到支撑向量之间的距离 d = 1 2 m a r g i n d=\frac{1}{2}margin d=21margin
SVM要做的就是最大化d(即支撑向量到决策边界的距离),其实也是最大化margin,所以在吴恩达老师的机器学习课程中也将SVM称之为最大间隔分类器。
1-4 Hard Margin SVM 原问题推导
根据上面的过程,我们已经知道,要找的分类边界的要满足2个要求:
要求1:分类边界要保证样本正确分类
要求2:分类边界是距离支撑向量最远的直线,也就是margin或者d最大的直线
理解好两个要求的几何含义后,我们接下来要做的就是将几何含义翻译成数学表达,写出SVM要求解的原问题。
先讲解两个补充知识:
- 超平面的表达式的小细节
- 在已知决策边界的前提下,我们如何进行样本的类别预测
超平面的表达式的小细节
在线性可分的问题中,我们的决策边界是一个超平面,所以决策边界的表达式是
ω
T
x
+
b
=
0
\bold{\omega}^T\bold{x}+b=0
ωTx+b=0,
其中
ω
\bold{\omega}
ω称为权重向量,b称为偏置项。
这个表达式存在一个小细节,也就是
如果将确定的
ω
\bold{\omega}
ω和b乘上一个系数k,即
k
ω
T
x
+
k
b
=
0
k\bold{\omega}^T\bold{x}+kb=0
kωTx+kb=0得到的还是同一个超平面,但是表达式不同的。
举个二维平面的例子,比如直线y=x+1与直线2y=2x+2,其实指的是同一条直线。
在这里我们先了解这样一个结论:
对于超平面的表达式,
ω
\bold{\omega}
ω和b乘上一个系数后,得到的仍是原来的超平面。
在已知决策边界的前提下,我们如何进行样本的类别预测呢?
在SVM问题中,我们将正样本用+1表示,负样本用-1表示,只需要将 x \bold{x} x中的特征向量带入决策边界中,如果计算结果>0,则分为正样本,如果计算结果<0,则分为负样本。
即:
{ ω T x + b ≥ 0 y = + 1 ( 正 样 本 ) ω T x + b < 0 y = − 1 ( 负 样 本 ) \left\{ \begin{array}{rcl} \bold{\omega}^T\bold{x}+b\ge0& &{y=+1(正样本)}\\ \bold{\omega}^T\bold{x}+b<0& & {y=-1(负样本)}\\ \end{array} \right. {ωTx+b≥0ωTx+b<0y=+1(正样本)y=−1(负样本)
要求2:让margin或者d最大
我们先将要求2翻译成数学语言。
既然要d最大,那我们就需要表示d的大小。
d是支撑向量到决策边界的距离,即点到直线的距离。
补充下点到直线的距离公式,以三维空间为例,
点(x0,y0,z0)到直线Ax+By+Cz+d=0的距离为:
d
=
∣
A
x
0
+
B
y
0
+
C
z
0
+
d
∣
A
2
+
B
2
+
C
2
d=\frac{|Ax_0+By_0+Cz_0+d|}{\sqrt{A^2+B^2+C^2}}
d=A2+B2+C2∣Ax0+By0+Cz0+d∣
这里{A,B,C}对应的是权重向量
ω
\bold{\omega}
ω,
d对应的是偏置项
由此我们可以推出更一般的情形下的距离表达:
分子是将点的坐标带入直线中的绝对值
分母是权重向量的膜
所以我们要求的d表示为:
d
=
∣
ω
T
x
支
撑
向
量
+
b
∣
∣
∣
w
∣
∣
d=\frac{|\bold{\omega^Tx_{支撑向量}}+b|}{||w||}
d=∣∣w∣∣∣ωTx支撑向量+b∣
其中x为支撑向量的值
我们要做的就是 max ω , b d \max \limits_{\bold{\omega},b}d ω,bmaxd
要求1:保证样本正确分类
刚才我们算的d是支撑向量到决策边界的距离,如果想要保证所有样本都分类正确的话,则所有样本到决策边界的距离要大于d。
即:
∣
ω
T
x
(
i
)
+
b
∣
∣
∣
w
∣
∣
⩾
∣
ω
T
x
支
撑
向
量
+
b
∣
∣
∣
w
∣
∣
=
d
i=1,2,...m
\frac{|\bold{\omega^Tx^{(i)}}+b|}{||w||} \geqslant \frac{|\bold{\omega^Tx_{支撑向量}}+b|}{||w||}=d \qquad \text{i=1,2,...m}
∣∣w∣∣∣ωTx(i)+b∣⩾∣∣w∣∣∣ωTx支撑向量+b∣=di=1,2,...m
我们如果分成正负分样本进行表达的话,则可以写为:
{
ω
T
x
(
i
)
+
b
∣
∣
w
∣
∣
⩾
d
∀
y
(
i
)
=
+
1
ω
T
x
(
i
)
+
b
∣
∣
w
∣
∣
⩽
−
d
∀
y
(
i
)
=
−
1
\left\{ \begin{array}{rcl} \frac{\bold{\omega^Tx^{(i)}}+b}{||w||} \geqslant d& &{\forall y^{(i)}=+1}\\ \frac{\bold{\omega^Tx^{(i)}}+b}{||w||} \leqslant -d& &{\forall y^{(i)}=-1}\\ \end{array} \right.
{∣∣w∣∣ωTx(i)+b⩾d∣∣w∣∣ωTx(i)+b⩽−d∀y(i)=+1∀y(i)=−1
同时我们也我们就找到了上下两条边界线的表达式:
上边界:
ω
T
x
+
b
∣
∣
w
∣
∣
=
d
\frac{\bold{\omega^Tx}+b}{||w||} =d
∣∣w∣∣ωTx+b=d
下边界:
ω
T
x
+
b
∣
∣
w
∣
∣
=
−
d
\frac{\bold{\omega^Tx}+b}{||w||} =-d
∣∣w∣∣ωTx+b=−d
上下边界的表达式可以这样理解,我们之前是根据点到直线的距离,表达出支撑向量到决策边界的距离d。如果我们把d看作是已知量,就可以求出到决策边界距离为d的所有点的表达式,这些点构成的就是上下边界。
为了看起来更方便,我们将上面的不等式左右同除以d,得到
{
ω
T
x
(
i
)
+
b
∣
∣
w
∣
∣
d
⩾
1
∀
y
(
i
)
=
+
1
i
=
1
,
2
,
.
.
.
m
ω
T
x
(
i
)
+
b
∣
∣
w
∣
∣
d
⩽
−
1
∀
y
(
i
)
=
−
1
i
=
1
,
2
,
.
.
.
m
\left\{ \begin{array}{rcl} \frac{\bold{\omega^Tx^{(i)}}+b}{||w||d} \geqslant 1& &{\forall y^{(i)}=+1}& &i=1,2,...m\\ \frac{\bold{\omega^Tx^{(i)}}+b}{||w||d} \leqslant -1& &{\forall y^{(i)}=-1}& &i=1,2,...m\\ \end{array} \right.
{∣∣w∣∣dωTx(i)+b⩾1∣∣w∣∣dωTx(i)+b⩽−1∀y(i)=+1∀y(i)=−1i=1,2,...mi=1,2,...m
于是,上下两条边界线的表达式也可以写成下面的形式:
上边界:
ω
T
x
+
b
∣
∣
w
∣
∣
d
=
1
\frac{\bold{\omega^Tx}+b}{||w||d} =1
∣∣w∣∣dωTx+b=1
下边界:
ω
T
x
+
b
∣
∣
w
∣
∣
d
=
−
1
\frac{\bold{\omega^Tx}+b}{||w||d} =-1
∣∣w∣∣dωTx+b=−1
实际上就是将原来的边界表达式同时除以d。
接下来的化简要用到前面说到的超平面表达式的小细节。
我们设
ω
d
=
ω
∣
∣
ω
∣
∣
d
\omega_d =\frac{\omega}{||\omega||d}
ωd=∣∣ω∣∣dω,
b
d
=
b
∣
∣
ω
∣
∣
d
b_d=\frac{b}{||\omega||d}
bd=∣∣ω∣∣db
也就是将我们原来假设决策边界时用到的参数
ω
\omega
ω和
b
b
b除以
∣
∣
ω
∣
∣
d
||\omega||d
∣∣ω∣∣d,并分别用
ω
d
\omega_d
ωd和
b
d
b_d
bd来表示。
你会发现,原来的决策边界表达式
ω
T
x
+
b
=
0
\bold{\omega}^T\bold{x}+b=0
ωTx+b=0和
ω
d
T
x
+
b
d
=
0
\bold{\omega_d}^T\bold{x}+b_d=0
ωdTx+bd=0其实表达的是用一个决策边界。而用
ω
d
\omega_d
ωd,
b
d
b_d
bd分别代替
ω
\omega
ω和
b
b
b的好处在于,刚才表达的上下边界就可以简写:
上边界:
ω
d
T
x
+
b
d
=
1
\bold{\omega_d}^T\bold{x}+b_d=1
ωdTx+bd=1
下边界:
ω
d
T
x
+
b
d
=
−
1
\bold{\omega_d}^T\bold{x}+b_d=-1
ωdTx+bd=−1
此时支持向量机的关键的三个表达式的示意图为:
为了方便后续的书写,我们直接用
ω
\omega
ω和
b
b
b代替上面的
ω
b
\omega_b
ωb和
b
d
b_d
bd
根据上图我们就可以总结出要求一:保证样本正确分类的数学表达式。
{
ω
T
x
(
i
)
+
b
⩾
1
∀
y
(
i
)
=
+
1
i
=
1
,
2
,
.
.
.
m
ω
T
x
(
i
)
+
b
⩽
−
1
∀
y
(
i
)
=
−
1
i
=
1
,
2
,
.
.
.
m
\left\{ \begin{array}{rcl} \bold{\omega}^T\bold{x^{(i)}}+b\ \geqslant1& &{\forall y^{(i)}=+1}& &i=1,2,...m\\ \bold{\omega}^T\bold{x^{(i)}}+b\leqslant -1& &{\forall y^{(i)}=-1}& &i=1,2,...m\\ \end{array} \right.
{ωTx(i)+b ⩾1ωTx(i)+b⩽−1∀y(i)=+1∀y(i)=−1i=1,2,...mi=1,2,...m
因为正样本都在上边界的上面,负样本都在下边界的下面
接下来,我们将上面的两个式子合并成一个表达式
y
(
i
)
(
ω
T
x
(
i
)
+
b
)
⩾
1
i=1,2,...m
y^{(i)}(\bold{\omega}^T\bold{x^{(i)}}+b)\geqslant1 \quad\text{i=1,2,...m}
y(i)(ωTx(i)+b)⩾1i=1,2,...m
可以自己验证下,还是蛮简单的,这就是要求一的最终表达。
总结出Hard Margin SVM的原问题
我们先梳理下我们已知的内容。
Hard Margin SVM要满足2个要求
要求1:保证样本正确分类,对应的数学表达式为
y
(
i
)
(
ω
T
x
(
i
)
+
b
)
⩾
1
i=1,2,...m
y^{(i)}(\bold{\omega}^T\bold{x^{(i)}}+b)\geqslant1 \quad\text{i=1,2,...m}
y(i)(ωTx(i)+b)⩾1i=1,2,...m
要求2:让margin或者d最大,对应的数学表达式为
max
ω
,
b
d
=
max
ω
,
b
∣
ω
T
x
支
撑
向
量
+
b
∣
∣
∣
w
∣
∣
\max \limits_{\bold{\omega},b}d=\max \limits_{\bold{\omega},b}\frac{|\bold{\omega^Tx_{支撑向量}}+b|}{||w||}
ω,bmaxd=ω,bmax∣∣w∣∣∣ωTx支撑向量+b∣
这个表达式还可以进一步简化。
简化过程:
在要求1的推导过程中,我们已经知道
上下边界的表达式
ω
T
x
+
b
=
±
1
\bold{\omega}^T\bold{x}+b=\pm1
ωTx+b=±1
而支撑向量就在上下边界上,所以把支撑向量的值带入 ω T x + b \omega^Tx+b ωTx+b中,等于 ± 1 \pm 1 ±1。也就是 ∣ ω T x 支 撑 向 量 + b ∣ = 1 |\bold{\omega^Tx_{支撑向量}}+b|=1 ∣ωTx支撑向量+b∣=1。
所以上式可以继续化简为
max
ω
,
b
1
∣
∣
w
∣
∣
\max \limits_{\bold{\omega},b}\frac{1}{||w||}
ω,bmax∣∣w∣∣1
求
max
ω
1
∣
∣
w
∣
∣
\max \limits_{\bold{\omega}}\frac{1}{||w||}
ωmax∣∣w∣∣1也就是求
min
ω
∣
∣
ω
∣
∣
\min \limits_{\bold{\omega}}||\omega||
ωmin∣∣ω∣∣,为了方便我们之后计算的方便,我们求
min
ω
∣
∣
ω
∣
∣
2
2
\min \limits_{\bold{\omega}}\frac{||\omega||^2}{2}
ωmin2∣∣ω∣∣2
最终总结下Hard Margin SVM的原问题就是在保证样本正确分类的前提下,最大化边界距离。翻译成对应的数学语言就是
min
ω
∣
∣
ω
∣
∣
2
2
\min \limits_{\bold{\omega}}\frac{||\omega||^2}{2}
ωmin2∣∣ω∣∣2
s
.
t
.
y
(
i
)
(
ω
T
x
(
i
)
+
b
)
⩾
1
i=1,2,...m
s.t.\quad y^{(i)}(\bold{\omega}^T\bold{x^{(i)}}+b)\geqslant1 \quad\text{i=1,2,...m}
s.t.y(i)(ωTx(i)+b)⩾1i=1,2,...m
我们会发现,这是一个带不等式约束的最小化问题,具体要如何求解,才能确定出 ω \omega ω和 b b b呢?这就涉及到解决不等式约束的最值问题的解决方法:拉格朗日乘子法、拉格朗日对偶、KKT条件…
等我学懂了,继续写下去