SVM支持向量机
理解
要理解支持向量机的基本原理,首先要从宏观上认识到,支持向量机是一个线性分类器,其与其他分类器的区别在于其决策边界,支持向量机的决策边界是对样本求解的最大边距超平面(maximum-margin hyperplane),所以最终是为了找到这个超平面,有了这个决策边界,便是我们要做的模型,从而可以进行分类了。
下面我们从样本数据的角度,对支持向量机进行深度的剖析:
1. 存在这样一个超平面
如,对于一个二分类数据集
D
=
{
(
x
i
,
y
i
}
i
=
1
N
(1.1)
D = \{(x_i, \quad y_i\}_{i=1}^{N} \tag{1.1}
D={(xi,yi}i=1N(1.1)
其中
y
=
w
T
x
i
+
b
(1.2)
y = w^Tx_i + b \tag{1.2}
y=wTxi+b(1.2)
y i = { + 1 y ≥ 0 − 1 y < 0 (1.3) y_i= \begin{cases} +1& {y \ge 0}\\ -1& {y < 0} \end{cases}\tag{1.3} yi={+1−1y≥0y<0(1.3)
所以:
y
i
∈
{
+
1
,
−
1
}
(1.4)
y_i \in \{+1,-1\} \tag{1.4}
yi∈{+1,−1}(1.4)
由于数据是线性可分的,则肯定存在一个超平面,使得:
w
T
x
i
+
b
=
0
(1.5)
w^T x_i + b = 0 \tag{1.5}
wTxi+b=0(1.5)
2. 样本函数距离与几何间隔
由上面可得样本函数距离
∣
∣
y
∣
∣
=
∣
∣
w
T
x
i
+
b
∣
∣
=
y
i
(
w
T
x
i
+
b
)
(2.1)
||y|| = ||w^Tx_i + b|| = y_i (w^Tx_i + b) \tag{2.1}
∣∣y∣∣=∣∣wTxi+b∣∣=yi(wTxi+b)(2.1)
可以理解为数据点到超平面的函数距离,但是由于w和b可以成倍的缩放,超平面并没有变化,而||y||却变化了,所以定义几何间隔;
γ
i
=
∣
∣
y
∣
∣
∣
∣
w
∣
∣
=
∣
∣
w
T
x
i
+
b
∣
∣
∣
∣
w
∣
∣
=
y
i
(
w
T
x
i
+
b
)
∣
∣
w
∣
∣
(2.2)
\gamma_i =\dfrac{||y||}{||w||}= \dfrac{||w^Tx_i+b||}{||w||} = \dfrac{y_i (w^Tx_i + b)}{||w||} \tag{2.2}
γi=∣∣w∣∣∣∣y∣∣=∣∣w∣∣∣∣wTxi+b∣∣=∣∣w∣∣yi(wTxi+b)(2.2)
则有最短距离
γ
=
m
i
n
γ
i
(2.3)
\gamma = min \quad \gamma_i \tag{2.3}
γ=minγi(2.3)
由于不同的超平面最短距离都会不一样,所以对于优化这个最短距离来说,寻找一对w和b,使得r最大,这这对w和b,就是我们要求的超平面。
则任务可以写成:
m
a
x
γ
(2.4)
\quad \quad max \quad \gamma \tag{2.4}
maxγ(2.4)
s . t . γ ≤ y i ( w T x i + b ) ∣ ∣ w ∣ ∣ (2.5) s.t. \quad \quad \quad \gamma \quad \le \quad \dfrac{y_i (w^Tx_i + b)}{||w||} \tag{2.5} s.t.γ≤∣∣w∣∣yi(wTxi+b)(2.5)
3. 问题的推导与优化
γ ⋅ ∣ ∣ w ∣ ∣ ≤ y i ( w T x i + b ) (3.1) \quad \gamma ·{||w||}\quad \le \quad {y_i (w^Tx_i + b)} \tag{3.1} γ⋅∣∣w∣∣≤yi(wTxi+b)(3.1)
为了方便推导和优化,可以令函数距离为1
γ
⋅
∣
∣
w
∣
∣
=
1
(3.2)
\quad \gamma ·{||w||}= 1 \tag{3.2}
γ⋅∣∣w∣∣=1(3.2)
则:
γ
=
1
∣
∣
w
∣
∣
(3.3)
\gamma = \frac{1}{||w||} \tag{3.3}
γ=∣∣w∣∣1(3.3)
所以最大化
r
r
r等价于:
m
a
x
1
∣
∣
w
∣
∣
(3.4)
max \quad \frac{1}{||w||} \tag{3.4}
max∣∣w∣∣1(3.4)
所以,以上的任务可以等价的写成:
m
a
x
1
∣
∣
w
∣
∣
2
(3.5)
\quad\quad\quad\quad\quad max \quad \frac{1}{||w||^2} \tag{3.5}
max∣∣w∣∣21(3.5)
s . t . y i ( w T x i + b ) ≥ 1 (3.6) s.t. \quad \quad \quad \quad y_i(w^Tx_i+b) \ge 1 \tag{3.6} s.t.yi(wTxi+b)≥1(3.6)
这便是我们要求的函数表达式。
其中:
y
i
(
w
T
x
i
+
b
)
=
1
(3.7)
y_i(w^Tx_i+b) = 1 \tag{3.7}
yi(wTxi+b)=1(3.7)
的样本点,都叫做支持向量。
4. 转变成凸优化问题
为了能够找到最大分割的这个超平面,我们可以把上述的函数写成凸优化问题:
m
i
n
1
2
∣
∣
w
∣
∣
2
(4.1)
\quad\quad\quad min\quad \frac{1}{2}||w||^2 \tag{4.1}
min21∣∣w∣∣2(4.1)
s . t . 1 − y i ( w T x i + b ) ≤ 0 (4.2) s.t. \quad\quad\quad 1 - y_i(w^Tx_i + b) \le 0 \tag{4.2} s.t.1−yi(wTxi+b)≤0(4.2)
使用拉格朗日乘数法,则上面的表达式可以写成的朗格朗日函数为
Λ
(
w
,
b
,
λ
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
i
=
1
N
λ
i
(
1
−
y
i
(
w
T
x
i
+
b
)
)
(4.3)
\Lambda (w,b,\lambda) =\frac{1}{2}||w||^2 + \sum\limits_{i=1}^{N}\lambda_i(1-y_i(w^Tx_i + b))\tag{4.3}
Λ(w,b,λ)=21∣∣w∣∣2+i=1∑Nλi(1−yi(wTxi+b))(4.3)
其中λ为朗格朗日乘数,且:
λ
i
≥
0
\lambda_i \ge 0
λi≥0
计算
Λ
(
w
,
b
,
λ
)
\Lambda (w,b,\lambda)
Λ(w,b,λ)关于
w
w
w和
b
b
b的导数,并且令导数为零,得到:
w
−
∑
i
=
1
N
λ
i
y
i
x
i
=
0
(4.4)
w - \sum^{N}_{i=1}\lambda_iy_ix_i = 0 \tag{4.4}
w−i=1∑Nλiyixi=0(4.4)
∑ i = 1 N λ i y i = 0 (4.5) \sum^{N}_{i=1}\lambda_iy_i = 0 \tag{4.5} i=1∑Nλiyi=0(4.5)
将(4.4),(4.5)代入(4.3):
Λ
(
w
,
b
,
λ
)
=
1
2
∣
∣
w
∣
∣
2
+
∑
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
−
∑
i
=
1
N
λ
i
y
i
b
=
1
2
w
T
∑
i
=
1
N
λ
i
y
i
x
i
+
∑
i
=
1
N
λ
i
−
∑
i
=
1
N
λ
i
y
i
w
T
x
i
−
∑
i
=
1
N
λ
i
y
i
b
=
1
2
w
T
∑
i
=
1
N
λ
i
y
i
x
i
−
w
T
∑
i
=
1
N
λ
i
y
i
x
i
+
∑
i
=
1
N
λ
i
−
∑
i
=
1
N
λ
i
y
i
b
=
−
1
2
w
T
∑
i
=
1
N
λ
i
y
i
x
i
+
∑
i
=
1
N
λ
i
=
−
1
2
∑
i
=
1
N
(
λ
i
y
i
x
i
)
T
∑
i
=
1
N
λ
i
y
i
x
i
+
∑
i
=
1
N
λ
i
=
−
1
2
∑
i
=
1
N
λ
i
y
i
(
x
i
)
T
∑
i
=
1
N
λ
i
y
i
x
i
+
∑
i
=
1
N
λ
i
(4.6)
\Lambda (w,b,\lambda) =\frac{1}{2}||w||^2 + \sum\limits_{i=1}^{N}\lambda_i(1-y_i(w^Tx_i + b))\tag{4.6}\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\\ =\frac{1}{2}w^Tw + \sum\limits_{i=1}^{N}\lambda_i - \sum\limits_{i=1}^{N}\lambda_iy_iw^Tx_i - \sum\limits_{i=1}^{N}\lambda_iy_ib\quad\quad\quad\quad\quad\quad\quad\quad\\ = \frac{1}{2}w^T\sum\limits_{i=1}^{N}\lambda_iy_ix_i + \sum\limits_{i=1}^{N}\lambda_i - \sum\limits_{i=1}^{N}\lambda_iy_iw^Tx_i - \sum\limits_{i=1}^{N}\lambda_iy_ib\quad\quad\quad\quad\\ = \frac{1}{2}w^T\sum\limits_{i=1}^{N}\lambda_iy_ix_i-w^T\sum\limits_{i=1}^{N}\lambda_iy_ix_i + \sum\limits_{i=1}^{N}\lambda_i - \sum\limits_{i=1}^{N}\lambda_iy_ib\quad\quad\quad\quad\\ = -\frac{1}{2}w^T\sum\limits_{i=1}^{N}\lambda_iy_ix_i+ \sum\limits_{i=1}^{N}\lambda_i\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\\ = -\frac{1}{2}\sum\limits_{i=1}^{N}(\lambda_iy_ix_i)^T\sum\limits_{i=1}^{N}\lambda_iy_ix_i+ \sum\limits_{i=1}^{N}\lambda_i\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\\ = -\frac{1}{2}\sum\limits_{i=1}^{N}\lambda_iy_i(x_i)^T\sum\limits_{i=1}^{N}\lambda_iy_ix_i+ \sum\limits_{i=1}^{N}\lambda_i\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\quad\\
Λ(w,b,λ)=21∣∣w∣∣2+i=1∑Nλi(1−yi(wTxi+b))=21wTw+i=1∑Nλi−i=1∑NλiyiwTxi−i=1∑Nλiyib=21wTi=1∑Nλiyixi+i=1∑Nλi−i=1∑NλiyiwTxi−i=1∑Nλiyib=21wTi=1∑Nλiyixi−wTi=1∑Nλiyixi+i=1∑Nλi−i=1∑Nλiyib=−21wTi=1∑Nλiyixi+i=1∑Nλi=−21i=1∑N(λiyixi)Ti=1∑Nλiyixi+i=1∑Nλi=−21i=1∑Nλiyi(xi)Ti=1∑Nλiyixi+i=1∑Nλi(4.6)
最终得到拉格朗日对偶函数,:
Γ
(
λ
)
=
−
1
2
∑
i
=
1
N
∑
j
=
1
N
λ
i
λ
j
y
i
y
j
x
i
T
x
j
+
∑
i
=
1
N
λ
i
(4.7)
\Gamma(\lambda) = -\frac{1}{2}\sum^{N}_{i=1}\sum^{N}_{j=1}\lambda_i\lambda_jy_iy_jx_i^Tx_j + \sum^{N}_{i=1}\lambda_i \tag{4.7}
Γ(λ)=−21i=1∑Nj=1∑NλiλjyiyjxiTxj+i=1∑Nλi(4.7)
总结:若求w,b,λ值,则分为三步
- 固定λ,求Λ的极小值,方法是对w,b求偏导为零;
- 代入w,b,此时是Λ关于λ的函数了,求Λ的极大值;
- 利用SMO 算法求解对偶问题中的拉格朗日乘子λ,从而代入求出w,b的具体值;
所有上面的假设成立,都是数据是线性可分的
如果数据线性不可分,通过构建核函数,把数据映射到更高维的空间,使得数据线性可分;
如果数据里存在噪声,通过引入松弛变量,来对数据进行处理。