一、主要思想:
支持向量机(SVM)的基本模型线性支持支持向量机是定义在特征空间上的间隔最大的线性分类器,这使它有别于感知机。适用于高维小样本,且线性可分的数据。
二、找最大间隔:
2.1 距离:
距离是一种映射关系,满足:
{
D
(
x
,
y
)
≥
0
,
D
(
x
,
y
)
=
0
⇔
x
=
y
D
(
x
,
y
)
=
D
(
y
,
x
)
D
(
x
,
z
)
≠
D
(
x
,
y
)
+
D
(
y
,
z
)
\begin{cases}D(x,y)\ge0,\ D(x,y)=0\Leftrightarrow x=y\\D(x,y)=D(y,x)\\D(x,z)\ne D(x,y)+D(y,z)\end{cases}
⎩⎪⎨⎪⎧D(x,y)≥0, D(x,y)=0⇔x=yD(x,y)=D(y,x)D(x,z)=D(x,y)+D(y,z)
这里我们使用 2 范数来计算距离
2.2 间隔:
距超平面最近的点到平面的距离的两倍。由此我们可以推出间隔的计算公式:
γ
i
=
2
w
⃗
⋅
x
⃗
i
+
b
∥
w
⃗
∥
\gamma_i=2\frac{\vec w\cdot\vec x_i+b}{\parallel \vec w\parallel}
γi=2∥w∥w⋅xi+b
而其中距超平面最近的点的间隔是 γ = min i = 1 , 2 , 3 ⋯ γ i \gamma = \min\limits_{i=1,2,3\cdots}\gamma_i γ=i=1,2,3⋯minγi
我们要寻找合适的
(
w
⃗
,
b
)
(\vec w,b)
(w,b),使得间隔最大,也就是
max
w
⃗
,
b
γ
s
.
t
.
∀
i
(
w
⃗
x
⃗
i
+
b
)
y
i
>
0
\max\limits_{\vec w,\ b}\gamma\\s.t.\ \forall i\ (\vec w\vec x_i+b)y_i>0
w, bmaxγs.t. ∀i (wxi+b)yi>0
但是寻找的过程非常的麻烦,所以我们要对此进行优化。
2.2.1 优化目标函数
支持向量机的缩放引理:假设找到一组 ( w ⃗ , b ) (\vec w,b) (w,b),对于 ∀ r > 0 \forall r>0 ∀r>0, ( r w ⃗ , r b ) (r\vec {w},rb) (rw,rb) 仍是解
令引理中的 r = γ r=\gamma r=γ:
y i r i = y i ( w ⃗ ∥ w ⃗ ∥ ⋅ x i + b ∥ w ⃗ ∥ ) ≥ γ y i ( w ⃗ ∥ w ⃗ ∥ γ ⋅ x i + b ∥ w ⃗ ∥ γ ) ≥ 1 \begin{aligned}y_ir_i=y_i(\frac{\vec w}{\parallel\vec w\parallel}\cdot x_i+\frac{b}{\parallel\vec w\parallel})&\ge\gamma\\y_i(\frac{\vec w}{\parallel\vec w\parallel\gamma}\cdot x_i+\frac{b}{\parallel\vec w\parallel\gamma})&\ge1\end{aligned} yiri=yi(∥w∥w⋅xi+∥w∥b)yi(∥w∥γw⋅xi+∥w∥γb)≥γ≥1
其中 ∥ w ⃗ ∥ \parallel\vec w\parallel ∥w∥ 和 γ \gamma γ 都是标量,所以令:
w ⃗ ∗ = w ⃗ ∥ w ⃗ ∥ γ b ∗ = b ∥ w ⃗ ∥ γ \vec w^*=\frac{\vec w}{\parallel\vec w\parallel\gamma}\\b^*=\frac{b}{\parallel\vec w\parallel\gamma} w∗=∥w∥γwb∗=∥w∥γb
于是有:
y i ( w ⃗ ∗ x ⃗ i + b ∗ ) ≥ 1 y_i(\vec w^*\vec x_i+b^*)\ge1 yi(w∗xi+b∗)≥1
也就是说,我们总能通过放缩使得间隔为 1 并且解为 ( w ⃗ ∗ , b ∗ ) (\vec w^*,b^*) (w∗,b∗)
由于
(
w
⃗
∗
,
b
∗
)
(\vec w^*,b^*)
(w∗,b∗) 和
(
w
⃗
,
b
)
(\vec w,b)
(w,b) 是倍数关系,于是我们的目标就变成了:
max
w
⃗
∗
,
b
∗
γ
=
max
w
⃗
∗
,
b
∗
2
∥
w
⃗
∗
∥
min
i
(
w
⃗
∗
⋅
x
i
+
b
∗
)
=
max
w
⃗
∗
,
b
∗
2
∥
w
⃗
∗
∥
\max\limits_{\vec w^*,b^*}\gamma=\max\limits_{\vec w^*,b^*}\frac{2}{\parallel\vec w^*\parallel}\min\limits_i(\vec w^*\cdot x_i+b^*)=\max\limits_{\vec w^*,b^*}\frac{2}{\parallel\vec w^*\parallel}
w∗,b∗maxγ=w∗,b∗max∥w∗∥2imin(w∗⋅xi+b∗)=w∗,b∗max∥w∗∥2
取倒数使得求最大值变成求最小值,方便起见,我们把 ( w ⃗ ∗ , b ∗ ) (\vec w^*,b^*) (w∗,b∗) 写为 ( w ⃗ , b ) (\vec w,b) (w,b),此时,目标函数变成了:
min w ⃗ , b 1 2 ∥ w ⃗ ∥ s . t . y i ( w ⃗ ⋅ x ⃗ i + b ) ≥ 1 \min\limits_{\vec w,b}\frac{1}{2}\parallel\vec w\parallel\\s.t.\ y_i(\vec w\cdot\vec x_i+b)\ge1 w,bmin21∥w∥s.t. yi(w⋅xi+b)≥1
带有约束的最值问题,可以想到使用拉格朗日乘子法来求目标函数。
2.2.2 拉格朗日乘子法
L ( w ⃗ , b , α ⃗ ) = 1 2 ∥ w ⃗ ∥ − ∑ i = 1 N α i ( y i ( w ⃗ ⋅ x ⃗ i + b ) − 1 ) s . t . α i ≥ 0 L(\vec w,b,\vec\alpha)=\frac{1}{2}\parallel\vec w\parallel-\sum\limits_{i=1}^N\alpha_i(y_i(\vec w\cdot\vec x_i+b)-1)\\s.t.\ \alpha_i\ge0 L(w,b,α)=21∥w∥−i=1∑Nαi(yi(w⋅xi+b)−1)s.t. αi≥0
令 θ ( w ⃗ ) = max α i ≥ 0 L ( w ⃗ , b , α ⃗ ) \theta(\vec w)=\max\limits_{\alpha_i\ge0}L(\vec w,b,\vec\alpha) θ(w)=αi≥0maxL(w,b,α)
θ ( w ⃗ ) = { 1 2 ∥ w ⃗ ∥ 2 w ⃗ , b 满 足 约 束 ∞ w ⃗ , b 不 满 足 约 束 \theta(\vec w)=\begin{cases}\frac{1}{2}\parallel\vec w\parallel^2&\vec w,b\ 满足约束\\\infty&\vec w,b\ 不满足约束\end{cases} θ(w)={21∥w∥2∞w,b 满足约束w,b 不满足约束
于是原约束问题就等价于:
min
w
⃗
,
b
θ
(
w
⃗
)
=
min
w
⃗
,
b
max
α
i
≥
0
L
(
w
⃗
,
b
,
α
⃗
)
\min\limits_{\vec w,b}\theta(\vec w)=\min\limits_{\vec w,b}\max\limits_{\alpha_i\ge0}L(\vec w,b,\vec\alpha)
w,bminθ(w)=w,bminαi≥0maxL(w,b,α)
这样我们就把一个带有约束的最值问题转化成了无约束最值问题。但是求解这个新的约束问题过程非常复杂,所以我们需要使用拉格朗日函数的对偶性。
2.2.3 拉格朗日函数的对偶性
设:
min
w
⃗
,
b
max
α
i
≥
0
L
(
w
⃗
,
b
,
α
⃗
)
=
p
∗
\min\limits_{\vec w,b}\max\limits_{\alpha_i\ge0}L(\vec w,b,\vec\alpha)=p^*
w,bminαi≥0maxL(w,b,α)=p∗
把
min
\min
min 和
max
\max
max 互换一下:
max
α
i
≥
0
min
w
⃗
,
b
L
(
w
⃗
,
b
,
α
⃗
)
=
d
∗
\max\limits_{\alpha_i\ge0}\min\limits_{\vec w,b}L(\vec w,b,\vec\alpha)=d^*
αi≥0maxw,bminL(w,b,α)=d∗
通常情况下, p ∗ ≥ d ∗ p^*\ge d^* p∗≥d∗,要使等号成立,需要满足两个条件:
-
优化问题是凸优化问题
-
满足 K K T KKT KKT 条件
凸优化问题
凸优化问题 (Convex optimization problem) 要求目标函数为凸函数,而且定义域为凸集
凸函数:
若 f ′ ′ ( x ) ≥ 0 f^{\prime\prime}(x)\ge0 f′′(x)≥0,则 f ( x ) f(x) f(x) 为凸函数。
显然 θ ( w ⃗ ) \theta(\vec w) θ(w) 是凸函数
凸集:
当集合 C C C 中任意两点之间的线段上的点也在 C C C 内,则这个集合是凸集。
所以 θ ( w ⃗ ) \theta(\vec w) θ(w) 的定义域是一个凸集。
K K T KKT KKT 条件
-
主问题可行: y i ( w ⃗ ⋅ x ⃗ i + b ) − 1 ≥ 0 y_i(\vec w\cdot\vec x_i+b)-1\ge0 yi(w⋅xi+b)−1≥0
-
对偶问题可行: α i ≥ 0 \alpha_i\ge0 αi≥0
-
互补松弛: α i ( y i ( w ⃗ ⋅ x ⃗ i + b ) − 1 ) = 0 \alpha_i(y_i(\vec w\cdot\vec x_i+b)-1)=0 αi(yi(w⋅xi+b)−1)=0
等号成立,所以可以计算
d
∗
d^*
d∗,令
L
(
w
⃗
,
b
,
α
⃗
)
L(\vec w,b,\vec\alpha)
L(w,b,α) 对
w
⃗
\vec w
w 和
b
b
b 的偏导为 0 可得:
w
⃗
=
∑
i
=
1
N
α
i
y
i
x
⃗
i
∑
i
=
1
N
α
i
y
i
=
0
\vec w=\sum\limits_{i=1}^N\alpha_iy_i\vec x_i\\\sum\limits_{i=1}^N\alpha_iy_i=0
w=i=1∑Nαiyixii=1∑Nαiyi=0
带回
L
(
w
⃗
,
b
,
α
⃗
)
L(\vec w,b,\vec\alpha)
L(w,b,α):
min
w
⃗
,
b
L
(
w
⃗
,
b
,
α
⃗
)
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
⃗
i
⋅
x
⃗
j
)
+
∑
i
=
1
N
α
i
\min\limits_{\vec w,b}L(\vec w,b,\vec\alpha)=-\frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N\alpha_i\alpha_jy_iy_j(\vec x_i\cdot\vec x_j)+\sum\limits_{i=1}^N\alpha_i
w,bminL(w,b,α)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi
对上式求最大值,即:
min
α
i
≥
0
(
1
2
∑
i
=
1
N
∑
j
=
1
N
α
i
α
j
y
i
y
j
(
x
⃗
i
⋅
x
⃗
j
)
−
∑
i
=
1
N
α
i
)
s
.
t
.
∑
i
=
1
N
α
i
y
i
=
0
\min\limits_{\alpha_i\ge0}\left(\frac{1}{2}\sum\limits_{i=1}^N\sum\limits_{j=1}^N\alpha_i\alpha_jy_iy_j(\vec x_i\cdot\vec x_j)-\sum\limits_{i=1}^N\alpha_i\right)\\s.t. \sum\limits_{i=1}^N\alpha_iy_i=0
αi≥0min(21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαi)s.t.i=1∑Nαiyi=0
对于上式,可以使用序列最小最优化算法(SMO)求解 α ⃗ ∗ \vec\alpha^* α∗,进而求出 w ⃗ , b \vec w,b w,b。
通过以下条件:
{
K
K
T
条
件
w
⃗
=
∑
i
=
1
N
α
i
y
i
x
⃗
i
∑
i
=
1
N
α
i
y
i
=
0
\begin{cases}KKT\ 条件\\\vec w=\sum\limits_{i=1}^N\alpha_iy_i\vec x_i\\\sum\limits_{i=1}^N\alpha_iy_i=0\end{cases}
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧KKT 条件w=i=1∑Nαiyixii=1∑Nαiyi=0
由于
w
⃗
≠
0
\vec w\ne0
w=0,可以推知至少存在一个
α
i
∗
>
0
\alpha_i^*>0
αi∗>0 且对于此
i
i
i 有
y
i
(
w
⃗
∗
⋅
x
⃗
i
+
b
∗
)
=
1
y_i(\vec w^*\cdot\vec x_i+b^*)=1
yi(w∗⋅xi+b∗)=1
也就是说,对于任意训练样本 ( x ⃗ i , y i ) (\vec x_i,y_i) (xi,yi),总有 α i = 0 \alpha_i=0 αi=0 或者 y i ( w ⃗ ⋅ x ⃗ i + b ) = 1 y_i(\vec w\cdot\vec x_i+b)=1 yi(w⋅xi+b)=1 。而 y i ( w ⃗ ⋅ x ⃗ i + b ) = 1 y_i(\vec w\cdot\vec x_i+b)=1 yi(w⋅xi+b)=1 表示该点位于最 大间隔边界上,也就是说它是一个支持向量。
这显示出了支持向量机的一个重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
同步更新于:SP-FA 的博客
本文详细介绍了支持向量机(SVM)的主要思想,强调其作为间隔最大化的线性分类器特性。通过讨论距离和间隔的概念,展示了如何找到最大间隔,并通过优化目标函数、拉格朗日乘子法及对偶问题解决复杂的约束问题。同时,解释了凸优化问题和KKT条件在SVM中的应用,以及支持向量在模型中的关键作用。
2254

被折叠的 条评论
为什么被折叠?



