之前的SVM标准型显然是一个凸二次规划问题,我们可以用二次规划的知识进行求解,得到目标的超平面,但其实我们还有更高效的方法。
先看之前的SVM标准型
m
i
n
1
2
∣
∣
ω
∣
∣
2
min \frac{1}{2}||\omega||^2
min21∣∣ω∣∣2
s
.
t
.
y
(
i
)
(
ω
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
⋯
,
n
s.t. \quad y^{(i)}(\omega^Tx_i+b)\geq 1,i=1,2,\cdots,n
s.t.y(i)(ωTxi+b)≥1,i=1,2,⋯,n由拉格朗日乘数法的启发,我们改写一下该问题,令函数
L
(
ω
,
α
,
b
)
=
1
2
∣
∣
ω
∣
∣
2
+
∑
i
=
1
m
α
i
(
1
−
y
i
(
ω
T
x
i
+
b
)
)
L(\omega,\alpha,b)=\frac{1}{2}||\omega||^2+\sum_{i=1}^m\alpha_i(1-y_i(\omega^Tx_i+b))
L(ω,α,b)=21∣∣ω∣∣2+i=1∑mαi(1−yi(ωTxi+b))由标准型条件能够发现
L
(
ω
,
α
,
b
)
≤
1
2
∣
∣
ω
∣
∣
2
L(\omega,\alpha,b)\leq\frac{1}{2}||\omega||^2
L(ω,α,b)≤21∣∣ω∣∣2即
L
(
ω
,
α
,
b
)
L(\omega,\alpha,b)
L(ω,α,b)为目标函数的一个下界,或者说我们的目标就是找到
L
(
ω
,
α
,
b
)
L(\omega,\alpha,b)
L(ω,α,b)的最小上界,则目标变为求
m
i
n
ω
,
b
m
a
x
α
i
≥
0
L
(
ω
,
α
,
b
)
min_{\omega,b}max_{\alpha_i\geq0}L(\omega,\alpha,b)
minω,bmaxαi≥0L(ω,α,b)原问题不易求解,所以我们转而求其对偶问题:找出
L
(
ω
,
α
,
b
)
L(\omega,\alpha,b)
L(ω,α,b)的最大下界
m
a
x
α
i
≥
0
m
i
n
ω
,
b
L
(
ω
,
α
,
b
)
max_{\alpha_i\geq0}min_{\omega,b}L(\omega,\alpha,b)
maxαi≥0minω,bL(ω,α,b)所以对
ω
\omega
ω和
b
b
b求偏导
∂
L
(
ω
,
α
,
b
)
∂
ω
=
ω
−
∑
i
=
1
m
α
i
y
i
x
i
\frac{\partial L(\omega,\alpha,b)}{\partial\omega}=\omega-\sum_{i=1}^m\alpha_iy_ix_i
∂ω∂L(ω,α,b)=ω−i=1∑mαiyixi
∂
L
(
ω
,
α
,
b
)
∂
b
=
−
∑
i
=
1
m
α
i
y
i
\frac{\partial L(\omega,\alpha,b)}{\partial b}=-\sum_{i=1}^m\alpha_iy_i
∂b∂L(ω,α,b)=−i=1∑mαiyi令两偏导等于0,可以发现此时所取的值为
L
(
ω
,
α
,
b
)
L(\omega,\alpha,b)
L(ω,α,b)的极小值,将所得的结果带入,对偶问题变为
m
a
x
α
i
≥
0
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
max_{\alpha_i\geq0}\quad\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_i^Tx_j
maxαi≥0i=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxj
s
.
t
.
∑
i
=
1
m
α
i
y
i
=
0
s.t.\quad\sum_{i=1}^m\alpha_iy_i=0
s.t.i=1∑mαiyi=0关于原问题与对偶问题最优取值的关系,我们有库恩-塔克条件(KKT条件)
{
α
i
≥
0
y
i
(
ω
T
x
i
+
b
)
−
1
≥
0
α
i
(
y
i
(
ω
T
x
i
+
b
)
−
1
)
=
0
\begin{cases} \alpha_i\geq0 \\ y_i(\omega^Tx_i+b)-1\geq0 \\ \alpha_i(y_i(\omega^Tx_i+b)-1)=0 \end{cases}
⎩⎪⎨⎪⎧αi≥0yi(ωTxi+b)−1≥0αi(yi(ωTxi+b)−1)=0当满足此条件时,原问题与对偶问题的最优值相同。此时,针对该问题的对偶问题的解就对应着原问题的解,关于对偶问题,同样可以用二次规划来解决,但是效率也不高,人们就有一些高效的算法来处理这个问题(例如SMO算法)
上述的方法只能用于处理线性可分的数据集,但对于线性不可分的数据集,就需要用到我们接下来介绍的核函数技巧。
其实核函数技巧和之前的多变量线性回归的思路相同,同样是将有限维的数据映射到高维,显然,对于有限个属性,我们总能找到一个高维的特征空间使得样本分开。我们用
ϕ
(
x
)
\phi(x)
ϕ(x)来表示将
x
x
x从低维映射到高维的一个特征向量。分类超平面即可表示为
f
(
x
)
=
ω
T
ϕ
(
x
)
+
b
f(x)=\omega^T\phi(x)+b
f(x)=ωTϕ(x)+b其SVM标准型为
m
i
n
1
2
∣
∣
ω
∣
∣
2
min \frac{1}{2}||\omega||^2
min21∣∣ω∣∣2
s
.
t
.
y
(
i
)
(
ω
T
ϕ
(
x
i
)
+
b
)
≥
1
,
i
=
1
,
2
,
⋯
,
n
s.t. \quad y^{(i)}(\omega^T\phi(x_i)+b)\geq 1,i=1,2,\cdots,n
s.t.y(i)(ωTϕ(xi)+b)≥1,i=1,2,⋯,n对偶问题为
m
a
x
α
i
≥
0
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
ϕ
(
x
i
)
T
ϕ
(
x
j
)
max_{\alpha_i\geq0}\quad\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\phi(x_i)^T\phi(x_j)
maxαi≥0i=1∑mαi−21i=1∑mj=1∑mαiαjyiyjϕ(xi)Tϕ(xj)
s
.
t
.
∑
i
=
1
m
α
i
y
i
=
0
s.t.\quad\sum_{i=1}^m\alpha_iy_i=0
s.t.i=1∑mαiyi=0接下来的难点就在于
ϕ
(
x
)
\phi(x)
ϕ(x)的维数可能很高,直接计算十分麻烦,为了简化我们令
κ
(
x
i
,
x
j
)
=
⟨
ϕ
(
x
i
)
,
ϕ
(
x
j
)
⟩
=
ϕ
(
x
i
)
T
ϕ
(
x
j
)
\kappa(x_i,x_j)=\langle\phi(x_i),\phi(x_j)\rangle=\phi(x_i)^T\phi(x_j)
κ(xi,xj)=⟨ϕ(xi),ϕ(xj)⟩=ϕ(xi)Tϕ(xj)那么对偶问题就变为
m
a
x
α
i
≥
0
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
κ
(
x
i
,
x
j
)
max_{\alpha_i\geq0}\quad\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_j\kappa(x_i,x_j)
maxαi≥0i=1∑mαi−21i=1∑mj=1∑mαiαjyiyjκ(xi,xj)
s
.
t
.
∑
i
=
1
m
α
i
y
i
=
0
s.t.\quad\sum_{i=1}^m\alpha_iy_i=0
s.t.i=1∑mαiyi=0接下来的问题就在于如何找到一个可行的
κ
(
x
i
,
x
j
)
\kappa(x_i,x_j)
κ(xi,xj)
关于
κ
(
x
i
,
x
j
)
\kappa(x_i,x_j)
κ(xi,xj),我们有如下定理:对于任意数据集
{
x
1
,
x
2
⋯
x
n
}
\{x_1,x_2\cdots x_n\}
{x1,x2⋯xn},由核函数导出的核矩阵
(
κ
(
x
1
,
x
1
)
κ
(
x
1
,
x
2
)
κ
(
x
1
,
x
3
)
⋯
κ
(
x
1
,
x
n
)
κ
(
x
2
,
x
1
)
κ
(
x
2
,
x
2
)
κ
(
x
2
,
x
3
)
⋯
κ
(
x
2
,
x
n
)
⋮
⋮
⋮
⋱
⋮
κ
(
x
n
,
x
1
)
κ
(
x
n
,
x
2
)
κ
(
x
n
,
x
3
)
⋯
κ
(
x
n
,
x
n
)
)
\begin{pmatrix} \kappa(x_1,x_1) & \kappa(x_1,x_2) & \kappa(x_1,x_3) & \cdots & \kappa(x_1,x_n) \\ \kappa(x_2,x_1) & \kappa(x_2,x_2) & \kappa(x_2,x_3) & \cdots & \kappa(x_2,x_n) \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \kappa(x_n,x_1) & \kappa(x_n,x_2) & \kappa(x_n,x_3) & \cdots & \kappa(x_n,x_n) \\ \end{pmatrix}
⎝⎜⎜⎜⎛κ(x1,x1)κ(x2,x1)⋮κ(xn,x1)κ(x1,x2)κ(x2,x2)⋮κ(xn,x2)κ(x1,x3)κ(x2,x3)⋮κ(xn,x3)⋯⋯⋱⋯κ(x1,xn)κ(x2,xn)⋮κ(xn,xn)⎠⎟⎟⎟⎞应是半正定且对称的,满足以上条件的函数才能够作为核函数。(证明见这里)
注意:对于任意一个给定的映射
ϕ
(
x
)
\phi(x)
ϕ(x),我们都能够找到一个
κ
(
x
i
,
x
j
)
\kappa(x_i,x_j)
κ(xi,xj)。同样,倘若核函数
κ
(
x
i
,
x
j
)
\kappa(x_i,x_j)
κ(xi,xj)确定,那么映射
ϕ
(
x
)
\phi(x)
ϕ(x)也就同样确定了。因此核函数的种类选择从根本上控制着这样一个SVM分类器的效果。(给定映射
ϕ
(
x
i
,
x
j
)
\phi(x_i,x_j)
ϕ(xi,xj)找到
κ
(
x
i
,
x
j
)
\kappa(x_i,x_j)
κ(xi,xj)很容易理解,给定
κ
(
x
i
,
x
j
)
\kappa(x_i,x_j)
κ(xi,xj),找到原映射
ϕ
(
x
i
,
x
j
)
\phi(x_i,x_j)
ϕ(xi,xj)的证明见这里)
下面给出一些常用的核函数
这之后我们就可以利用之前解决这个对偶问题的高效算法来得出目标的分类超平面了。
这之前我们所介绍的数据集处理方法都是针对与线性可分(或是本身线性不可分,映射至高维空间后线性可分)的数据,但我们往往很难保证我们得到的分类超平面是否会出现过拟合的情况,也同样很难刚刚好能够使用一个常见的核函数将两组数据划分开来,为此我们需要自身这个模型允许一定的错误,这就是我们将要介绍的软间隔支持向量机,此前我们所讲的支持向量机都是硬间隔支持向量机。
本身允许一定的错误即存在某些点使得
y
i
(
ω
T
x
i
+
b
)
<
1
y_i(\omega^Tx_i+b)<1
yi(ωTxi+b)<1同时要保证误分类的点尽可能的少,优化的目标就变为
m
i
n
1
2
∣
∣
ω
∣
∣
2
+
C
∑
i
=
1
m
l
0
/
1
(
y
i
(
ω
T
x
i
+
b
)
−
1
)
min\quad\frac{1}{2}||\omega||^2+C\sum_{i=1}^ml_{0/1}(y_i(\omega^Tx_i+b)-1)
min21∣∣ω∣∣2+Ci=1∑ml0/1(yi(ωTxi+b)−1)上式中的
l
0
/
1
l_{0/1}
l0/1为
l
0
/
1
(
z
)
=
{
1
,
z
<
0
0
,
z
≥
0
l_{0/1}(z)= \begin{cases} 1, & z<0 \\ 0, & z\geq0 \end{cases}
l0/1(z)={1,0,z<0z≥0C被我们称作惩罚系数,C越大,对误分类点的容忍度越低。与之前一样,因为
l
0
/
1
l_{0/1}
l0/1是一个不可导的非凸函数,难以优化,我们就用别的函数来代替这个
l
0
/
1
l_{0/1}
l0/1函数。常用来代替损失函数的函数如下
采用第一个代替损失函数,我们的问题就变为了
m
i
n
1
2
∣
∣
ω
∣
∣
2
+
C
∑
i
=
1
m
m
a
x
(
0
,
1
−
y
i
(
ω
T
x
i
+
b
)
)
min\quad\frac{1}{2}||\omega||^2+C\sum_{i=1}^mmax(0,1-y_i(\omega^Tx_i+b))
min21∣∣ω∣∣2+Ci=1∑mmax(0,1−yi(ωTxi+b))引入松弛变量
ξ
i
\xi_i
ξi问题变为
m
i
n
1
2
∣
∣
ω
∣
∣
2
+
C
∑
i
=
1
m
ξ
i
min\quad\frac{1}{2}||\omega||^2+C\sum_{i=1}^m\xi_i
min21∣∣ω∣∣2+Ci=1∑mξi
s
.
t
.
y
i
(
ω
T
x
i
+
b
)
≥
1
−
ξ
i
s.t.\quad y_i(\omega^Tx_i+b)\geq1-\xi_i
s.t.yi(ωTxi+b)≥1−ξi
ξ
i
≥
0
i
=
1
,
2
,
⋯
,
m
\xi_i\geq0\quad i=1,2,\cdots,m
ξi≥0i=1,2,⋯,m根据之前的对偶问题可以将目标函数转化为
L
(
ω
,
b
,
α
,
ξ
,
μ
)
=
1
2
∣
∣
ω
∣
∣
2
+
C
∑
i
=
1
m
ξ
i
+
∑
i
=
1
m
α
i
(
1
−
ξ
i
−
y
i
(
ω
T
x
i
+
b
)
)
+
∑
i
=
1
m
μ
i
ξ
i
L(\omega,b,\alpha,\xi,\mu)=\frac{1}{2}||\omega||^2+C\sum_{i=1}^m\xi_i+\sum_{i=1}^m\alpha_i(1-\xi_i-y_i(\omega^Tx_i+b))+\sum_{i=1}^m\mu_i\xi_i
L(ω,b,α,ξ,μ)=21∣∣ω∣∣2+Ci=1∑mξi+i=1∑mαi(1−ξi−yi(ωTxi+b))+i=1∑mμiξi对
ω
\omega
ω、
b
b
b、
ξ
\xi
ξ求偏导并令其等于0得到
ω
=
∑
i
=
1
m
α
i
y
i
x
i
\omega=\sum_{i=1}^m\alpha_iy_ix_i
ω=i=1∑mαiyixi
0
=
∑
i
=
1
m
α
i
y
i
0=\sum_{i=1}^m\alpha_iy_i
0=i=1∑mαiyi
C
=
α
i
+
μ
i
C=\alpha_i+\mu_i
C=αi+μi代入得到
m
a
x
α
i
≥
0
∑
i
=
1
m
α
i
−
1
2
∑
i
=
1
m
∑
j
=
1
m
α
i
α
j
y
i
y
j
x
i
T
x
j
max_{\alpha_i\geq0}\quad\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_i^Tx_j
maxαi≥0i=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxj
s
.
t
.
∑
i
=
1
m
α
i
y
i
=
0
s.t.\quad\sum_{i=1}^m\alpha_iy_i=0
s.t.i=1∑mαiyi=0
0
≤
α
i
≤
C
i
=
1
,
2
,
⋯
,
m
0\leq\alpha_i\leq C\quad i=1,2,\cdots,m
0≤αi≤Ci=1,2,⋯,m同样要满足KKT条件
{
α
i
≥
0
,
μ
i
≥
0
y
i
(
ω
T
x
i
+
b
)
−
1
+
ξ
i
≥
0
α
i
(
y
i
(
ω
T
x
i
+
b
)
−
1
+
ξ
i
)
=
0
ξ
i
≥
0
,
μ
i
ξ
i
=
0
\begin{cases} \alpha_i\geq0,\mu_i\geq0 \\ y_i(\omega^Tx_i+b)-1+\xi_i\geq0 \\ \alpha_i(y_i(\omega^Tx_i+b)-1+\xi_i)=0 \\ \xi_i\geq0,\mu_i\xi_i=0\end{cases}
⎩⎪⎪⎪⎨⎪⎪⎪⎧αi≥0,μi≥0yi(ωTxi+b)−1+ξi≥0αi(yi(ωTxi+b)−1+ξi)=0ξi≥0,μiξi=0换用其他的替代损失函数也可以参照这个方法处理,这之后再用之前的高效算法就能够求解。