支持向量机SVM是一种二分类模型,可分为 三种,硬间隔SVM(或者是线性可分SVM)、软间隔SVM(线性SVM)、核SVM(非线性SVM)。这三种分别对应由简到繁三种数据集的情况:线性可分数据集;存在一些误差点outlier的线性可分数据集;非线性可分数据集。
按照《统计学习方法》书的思路,每一种机器学习的方法都可由模型+策略+算法组成,本文也会按照该思路总结。
(文章中的
x
,
w
x,w
x,w均为向量,加粗编公式太繁琐了)
硬间隔支持向量机(线性可分SVM)
1. 模型
数据集表示
假设给定数据集为
T
=
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
…
,
(
x
N
,
y
N
)
}
T = \{(x_1,y_1), (x_2,y_2),\dots, (x_N,y_N)\}
T={(x1,y1),(x2,y2),…,(xN,yN)},其中
x
i
∈
X
=
R
n
x_i\in\mathcal{X}={\mathbb R}^n
xi∈X=Rn,
y
=
{
+
1
,
−
1
}
,
i
=
1
,
2
,
…
,
N
y = \{+1,-1\},\ i=1,2,\dots, N
y={+1,−1}, i=1,2,…,N。
x
i
x_i
xi为第
i
i
i个样本(总共有
N
N
N个样本,每一个向量的维数为n,也就是有n个特征)。
y
=
+
1
y=+1
y=+1是正类,
y
=
−
1
y=-1
y=−1是负类。
假设条件:
硬间隔SVM要求数据集是严格线性可分的。
线性可分数据集的定义是:
对于以上给定的数据集T,如果存在一个超平面
S
S
S:
w
T
x
+
b
=
0
w^Tx+b=0
wTx+b=0能够将数据集中的正类点和负类点完全正确地划分到超平面的两侧,也就是
w
T
x
i
+
b
>
0
,
y
i
=
+
1
w^Tx_i+b>0,\ y_i=+1
wTxi+b>0, yi=+1,
w
T
x
i
+
b
<
0
,
y
i
=
−
1
w^Tx_i+b<0,\ y_i=-1
wTxi+b<0, yi=−1
SVM的思路以及模型表达
线性SVM的通过进行最大化“间隔的”方式学习一个超平面,使正类负类能够完全被分开。
其中学习得到的分类超平面为:
w
∗
T
x
+
b
=
0
w^{*T}x+b = 0
w∗Tx+b=0
以及分类决策函数为:
f
(
x
)
=
sign
(
w
∗
T
x
+
b
)
f(x) = \text{sign}(w^{*T}x+b)
f(x)=sign(w∗Tx+b)
2. 策略
上一节提到,线性可分SVM的策略是通过进行最大化“间隔的”方式学习一个超平面,使正类负类能够完全被分开。本节将其转化为数学公式和优化问题 max i = 1 , . . . , N Margin \max_{i=1,...,N}\text{Margin} i=1,...,NmaxMargin
函数间隔和几何间隔
由于二分类问题中
y
=
{
+
1
,
−
1
}
y=\{+1,-1\}
y={+1,−1},所以我们将
x
,
y
x,y
x,y融合到一起,也就得到函数间隔:
γ
i
=
y
i
(
w
T
x
i
+
b
)
\gamma_i= y_i(w^Tx_i+b)
γi=yi(wTxi+b)数据集T中所有样本中函数间隔的最小值为:
γ
^
=
min
i
=
1
,
2
,
…
,
N
y
i
(
w
T
x
i
+
b
)
=
min
i
=
1
,
2
,
…
,
N
γ
i
\hat\gamma= \min_{i=1,2,\dots,N} y_i(w^Tx_i+b)=\min_{i=1,2,\dots,N}\gamma_i
γ^=i=1,2,…,Nminyi(wTxi+b)=i=1,2,…,Nminγi几何间隔(点到平面的距离)的表达式是:
γ
i
=
y
i
∣
∣
w
∣
∣
(
w
T
x
i
+
b
)
\gamma_i=\frac{y_i}{||w||}(w^Tx_i+b)
γi=∣∣w∣∣yi(wTxi+b)数据集T中所有样本中几何间隔的最小值为:
γ
=
min
i
=
1
,
2
,
…
,
N
γ
i
\gamma=\min_{i=1,2,\dots,N}\gamma_i
γ=i=1,2,…,Nminγi
SVM策略
有了上文的函数间隔和几何间隔,就可以将“最大化间隔”这一思想转变为一个二次凸优化问题,即
{
max
γ
^
∣
∣
w
∣
∣
s.t.
y
i
(
w
T
x
i
+
b
)
≥
γ
^
,
i
=
1
,
.
.
.
,
N
\begin{cases}\text{max}& \frac{\hat\gamma}{||w||}\\\text{s.t.}\ &y_i(w^Tx_i+b)\geq\hat\gamma,\quad i=1,..., N\end{cases}
{maxs.t. ∣∣w∣∣γ^yi(wTxi+b)≥γ^,i=1,...,N
因为对不等式进行数乘运算并不影响优化的结果,所以便于求解,令
γ
^
=
1
\hat\gamma=1
γ^=1,除此之外,为了方便应用拉格朗日乘子法,可以将最大化问题和最小值的约束等价转换为最小化问题和最大值的约束。所以上述优化问题就转化为:
{
min
1
2
∣
∣
w
∣
∣
2
s.t.
1
−
y
i
(
w
T
x
i
+
b
)
≤
0
,
i
=
1
,
.
.
.
,
N
\begin{cases}\min& \frac{1}{2}||w||^2\\\text{s.t.}\ &1-y_i(w^Tx_i+b)\leq0,\quad i=1,..., N\end{cases}
{mins.t. 21∣∣w∣∣21−yi(wTxi+b)≤0,i=1,...,N
3. 求解过程
将朴素的思维转化为一个优化问题之后,就可以构造拉格朗日函数了:
L
(
w
,
b
,
α
)
=
1
2
w
T
w
+
∑
i
=
1
N
α
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
=
1
2
w
T
w
+
∑
i
=
1
N
α
i
−
∑
i
=
1
N
α
i
y
i
(
w
T
x
i
+
b
)
L(w,b,\alpha) = \frac{1}{2}w^Tw+\sum_{i=1}^N\alpha_i(1-y_i(w^Tx_i+b))\\=\frac{1}{2}w^Tw+\sum_{i=1}^N\alpha_i-\sum_{i=1}^N\alpha_iy_i(w^Tx_i+b)
L(w,b,α)=21wTw+i=1∑Nαi(1−yi(wTxi+b))=21wTw+i=1∑Nαi−i=1∑Nαiyi(wTxi+b)
上述的优化问题就转化为了(原问题primal problem):
min
w
,
b
max
α
L
(
w
,
b
,
α
)
\min_{w,b}\max_{\alpha}L(w,b,\alpha)
w,bminαmaxL(w,b,α)
(先对函数
L
(
w
,
b
,
α
)
L(w,b,\alpha)
L(w,b,α)取最大值之后含
α
\alpha
α的项变为0,再对
w
,
b
w,b
w,b求最小值)
转化为对偶问题之后,上述问题变成了:
max
α
min
w
,
b
L
(
w
,
b
,
α
)
\max_{\alpha}\min_{w,b}L(w,b,\alpha)
αmaxw,bminL(w,b,α)
对偶原则还要求:如果要保证原问题和对偶问题解的一致性,解要满足KKT条件(满足可行域,梯度为0,互补松弛条件)–KKT条件见后文
详细推导过程:
L
(
w
,
b
,
α
)
L(w,b,\alpha)
L(w,b,α)是一个多元二次函数,将其最优化需要让其偏导数为0。
∂
L
∂
w
=
w
−
∑
i
=
1
N
α
i
y
i
x
i
=
0
\frac{\partial L}{\partial w}=w-\sum_{i=1}^N\alpha_iy_ix_i =0
∂w∂L=w−i=1∑Nαiyixi=0
∂
L
∂
b
=
−
∑
i
=
1
N
α
i
y
i
=
0
\frac{\partial L}{\partial b}=-\sum_{i=1}^N\alpha_iy_i=0
∂b∂L=−i=1∑Nαiyi=0可以得到:
w
=
∑
i
=
1
N
α
i
y
i
x
i
w=\sum_{i=1}^N\alpha_iy_ix_i
w=i=1∑Nαiyixi
∑
i
=
1
N
α
i
y
i
=
0
\sum_{i=1}^N\alpha_iy_i=0
i=1∑Nαiyi=0
将偏导为0的结果带入拉格朗日函数中:
L
(
α
)
=
1
2
(
∑
i
=
1
N
α
i
y
i
x
i
)
T
(
∑
j
=
1
N
α
j
y
j
x
j
)
+
∑
j
=
1
N
α
i
−
∑
j
=
1
N
α
i
y
i
w
T
x
i
−
b
∑
j
=
1
N
α
i
y
i
=
1
2
∑
j
=
1
N
∑
i
=
1
N
α
i
y
i
α
j
y
j
(
x
i
T
x
j
)
+
∑
j
=
1
N
α
i
−
∑
j
=
1
N
∑
j
=
1
N
α
i
y
i
α
j
y
j
(
x
i
T
x
j
)
=
∑
j
=
1
N
α
i
−
1
2
∑
j
=
1
N
∑
j
=
1
N
α
i
y
i
α
j
y
j
(
x
i
T
x
j
)
L(\alpha)=\frac{1}{2}(\sum_{i=1}^N\alpha_iy_ix_i)^T(\sum_{j=1}^N\alpha_jy_jx_j)+\sum_{j=1}^N\alpha_i-\sum_{j=1}^N\alpha_iy_iw^Tx_i-b\sum_{j=1}^N\alpha_iy_i\\ =\frac{1}{2}\sum_{j=1}^N\sum_{i=1}^N\alpha_iy_i\alpha_jy_j(x_i^Tx_j)+\sum_{j=1}^N\alpha_i-\sum_{j=1}^N\sum_{j=1}^N\alpha_iy_i\alpha_jy_j(x_i^Tx_j)\\=\sum_{j=1}^N\alpha_i-\frac{1}{2}\sum_{j=1}^N\sum_{j=1}^N\alpha_iy_i\alpha_jy_j(x_i^Tx_j)
L(α)=21(i=1∑Nαiyixi)T(j=1∑Nαjyjxj)+j=1∑Nαi−j=1∑NαiyiwTxi−bj=1∑Nαiyi=21j=1∑Ni=1∑Nαiyiαjyj(xiTxj)+j=1∑Nαi−j=1∑Nj=1∑Nαiyiαjyj(xiTxj)=j=1∑Nαi−21j=1∑Nj=1∑Nαiyiαjyj(xiTxj)
进一步,对偶优化问题转化为:
max
α
L
(
α
)
=
max
α
∑
j
=
1
N
α
i
−
1
2
∑
j
=
1
N
∑
j
=
1
N
α
i
y
i
α
j
y
j
(
x
i
T
x
j
)
\max_\alpha L(\alpha)=\max_\alpha\sum_{j=1}^N\alpha_i-\frac{1}{2}\sum_{j=1}^N\sum_{j=1}^N\alpha_iy_i\alpha_jy_j(x_i^Tx_j)
αmaxL(α)=αmaxj=1∑Nαi−21j=1∑Nj=1∑Nαiyiαjyj(xiTxj)
上述问题就最终转化为以下单变量二次优化问题:
min
1
2
∑
j
=
1
N
∑
j
=
1
N
α
i
y
i
α
j
y
j
(
x
i
T
x
j
)
−
∑
j
=
1
N
α
i
s.t.
∑
i
=
1
N
α
i
y
i
=
0
,
i
=
1
,
.
.
.
,
N
α
i
≥
0
\min\frac{1}{2}\sum_{j=1}^N\sum_{j=1}^N\alpha_iy_i\alpha_jy_j(x_i^Tx_j)-\sum_{j=1}^N\alpha_i\\ \text{s.t.}\ \quad\sum_{i=1}^N\alpha_iy_i=0,\quad i=1,..., N\\\alpha_i\geq0
min21j=1∑Nj=1∑Nαiyiαjyj(xiTxj)−j=1∑Nαis.t. i=1∑Nαiyi=0,i=1,...,Nαi≥0
求解结果和KKT条件
- KKT条件:
对于一开始的二次规划问题,如果对偶之后的问题与原问题有等价的解,则必须满足KKT条件(充要条件):
(1) 梯度为0:
∇ w L ( w , b , α ) = w ∗ − ∑ i = 1 N α i y i x i = 0 \nabla_wL(w,b,\alpha)=w^*-\sum_{i=1}^N\alpha_iy_ix_i=0 ∇wL(w,b,α)=w∗−i=1∑Nαiyixi=0 ∇ b L ( w , b , α ) = − ∑ i = 1 N α i y i = 0 \nabla_bL(w,b,\alpha)=-\sum_{i=1}^N\alpha_iy_i=0 ∇bL(w,b,α)=−i=1∑Nαiyi=0
(2) 满足可行域: y i ( w i T x + b ) − 1 ≥ 0 , i = 1 , 2 , . . . , N y_i(w_i^Tx+b)-1\geq0,\ i=1,2,...,N yi(wiTx+b)−1≥0, i=1,2,...,N α i ≥ 0 , i = 1 , 2 , . . . , N \alpha_i\geq0,\ i=1,2,...,N αi≥0, i=1,2,...,N
(3) 由可行域组成的互补松弛条件: α i ( y i ( w i T x + b ) − 1 ) = 0 , i = 1 , 2 , . . . , N \alpha_i(y_i(w_i^Tx+b)-1)=0,\ i=1,2,...,N αi(yi(wiTx+b)−1)=0, i=1,2,...,N
若 α j > 0 \alpha_j>0 αj>0则上述问题的解 w ∗ w^* w∗和 b ∗ b^* b∗分别满足:
w ∗ = ∑ i = 1 N α i y i x i w^*=\sum_{i=1}^N\alpha_iy_ix_i w∗=i=1∑Nαiyixi通过互补松弛条件求 b ∗ b^* b∗: y j ( w T x j + b ) = 1 → y j 2 ( w T x j + b ∗ ) = y i → w T x j + b ∗ = y j y_j(w^Tx_j+b)=1\\ \to y_j^2(w^Tx_j+b^*) =y_i\\ \to w^Tx_j+b^*=y_j yj(wTxj+b)=1→yj2(wTxj+b∗)=yi→wTxj+b∗=yj b ∗ = y j − ∑ i = 1 N α i y i ( x i T x j ) b^* =y_j- \sum_{i=1}^N\alpha_iy_i(x_i^Tx_j) b∗=yj−i=1∑Nαiyi(xiTxj)
支持向量
支持向量就是在距离判别超平面最小的平面上,即满足条件
y
i
(
w
T
x
i
+
b
)
=
1
y_i(w^Tx_i+b)=1
yi(wTxi+b)=1或
w
T
x
i
+
b
=
±
1
,
i
=
1
,
2
,
.
.
.
,
N
w^Tx_i+b=\pm1,\ i=1,2,...,N
wTxi+b=±1, i=1,2,...,N,通过互补松弛条件可以看出,它也满足:
α
i
>
0
\alpha_i>0
αi>0
参考
- 李航《统计学习方法》
- 《机器学习白板推导——SVM》