文章内容
前言
超平面,最大间隔(应间隔, 软间隔)
拉格朗日函数,拉格朗日算子
对偶问题
slater条件
二次规划, SMO优化算法
KKT约束
hinge损失
惩罚参数
松弛变量
核函数
希尔伯特空间
正定核
多项式核函数, 高斯核函数
默写下这些名次, 能理解其含义, 想象的出推导流程, 我才真正意识到, 我入了支持向量机的“坑了”, 感谢作者, 建议阅读原文, 我这里会加一些个人批注, 以帮助理解, 仅供参考.
一、概要
1.1 简介
SVM是什么? 先来看看维基百科上对SVM的定义:
支持向量机(英语:support vector machine,常简称为SVM,又名支持向量网络)是在分类与回归(sklearn.svm中包含SVR, 回归算法)分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器(LR是概率二分类器)。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。
简单点讲: SVM就是一种二类分类模型,他的基本模型是的定义在特征空间(希尔伯特空间)上的间隔最大(唯一性)的线性分类器,SVM的学习策略就是间隔最大化。
1.2直观理解
我们先来看看下面这个图:
图中有分别属于两类的一些二维数据点和三条直线。如果三条直线分别代表三个分类器的话,请问哪一个分类器比较好?
我们凭直观感受应该觉得答案是H3。
首先H1不能把类别分开,这个分类器肯定是不行的;
H2可以,但分割线与最近的数据点只有很小的间隔,如果测试数据有一些噪声的话可能就会被H2错误分类(即对噪声敏感、泛化能力弱)。
H3以较大间隔将它们分开,这样就能容忍测试数据的一些噪声而正确分类,是一个泛化能力不错的分类器(这也是采用分类间隔最大化的原因之一) 。
对于支持向量机来说,数据点若是p维向量,我们用p−1维的超平面来分开这些点。感知机使用误分类最小的方法求得超平面, 但是可能有许多超平面可以把数据分类。最佳超平面的一个合理选择就是以最大间隔把两个类分开的超平面。因此,SVM选择能够使离超平面最近的数据点的到超平面距离最大的超平面 (考点: 感知机与SVM的区别)。
以上介绍的SVM只能解决线性可分的问题,为了解决更加复杂的问题,支持向量机学习方法有一些由简至繁的模型:
(1) 线性可分SVM: 当训练数据线性可分时,通过硬间隔(hard margin,什么是硬、软间隔下面会讲)最大化可以学习得到一个线性分类器,即硬间隔SVM,如上图的的H3。
(2) 线性SVM: 当训练数据不能线性可分但是可以近似线性可分时,通过软间隔(soft margin)最大化也可以学习到一个线性分类器,即软间隔SVM (1,2本质上都是线性分类器, 完全线性可分的采用硬分割, 应用面窄; 一般数据会存在噪声, 需要加入惩罚变量和松弛因子, 采用软分隔, 下面会讲)。
(3) 非线性SVM: 当训练数据线性不可分时,通过使用核技巧(kernel trick)(核技巧算是一种特征工程)和软间隔最大化,可以学习到一个非线性SVM。
二、线性可分SVM——硬间隔
考虑如下形式的线性可分的训练数据集:
(
X
1
,
y
1
)
,
(
X
2
,
y
2
)
,
…
,
(
X
n
,
y
n
)
{(X_1,y_1),(X_2,y_2),…,(X_n,y_n)}
(X1,y1),(X2,y2),…,(Xn,yn)
其中
X
i
X_i
Xi是一个含有d个元素的列向量, 即
X
i
∈
R
d
X_i\in \mathbf{R}^d
Xi∈Rd;
y
i
y_i
yi是标量, y∈+1,−1,
y
i
y_i
yi=+1时表示
X
i
X_i
Xi属于正类别,
y
i
y_i
yi=−1时表示
X
i
X_i
Xi属于负类别。
注: 本文中, X、
X
i
X_i
Xi、W等都是(列)向量,有的文章一般用 xi 表示一个向量而用 X 表示所有 xi 组成的一个矩阵,注意区分。
2.1 超平面与间隔
一个超平面由法向量W和截距b决定(二维空间中直线也是一种超平面, 也是由斜率和截距决定),其方程为
X
T
W
+
b
=
0
X^TW+b=0
XTW+b=0, 可以规定法向量指向的一侧为正类,另一侧为负类。下图画出了三个平行的超平面,法方向取左上方向。
注意: 如果X和 W 都是列向量,即
X
T
W
X^TW
XTW会得到X和W的点积(dot product, 是一个标量),等价于X⋅W和W⋅X。
为了找到最大间隔超平面,我们可以先选择分离两类数据的两个平行超平面,使得它们之间的距离尽可能大。在这两个超平面范围内的区域称为“间隔(margin)”,最大间隔超平面是位于它们正中间的超平面。这个过程如上图所示。
2.2 间隔最大化
将高数里面求两条平行直线的距离公式推广到高维可求得图2.1中margin的(尝试推倒两平行直线间的距离)ρ:
m
a
r
g
i
n
=
ρ
=
2
∣
∣
W
∣
∣
(2.2.1)
margin = \rho = \frac 2 {||W||} \tag{2.2.1}
margin=ρ=∣∣W∣∣2(2.2.1)
我们的目标是使ρ最大, 等价于使
ρ
2
ρ^2
ρ2最大(这里转化为
ρ
2
\rho^2
ρ2最大, 原因是方便求导, 消除w和b, 使目标函数只与拉格朗日算子有关, 才能转化为之后的对偶问题):
m
a
x
W
,
b
ρ
⟺
m
a
x
W
,
b
ρ
2
⟺
m
i
n
W
,
b
1
2
∣
∣
W
∣
∣
2
(2.2.2)
\underset{W,b}{max} \rho \iff \underset{W,b}{max} \rho^2 \iff \underset{W,b}{min}\frac 1 2 ||W||^2 \tag{2.2.2}
W,bmaxρ⟺W,bmaxρ2⟺W,bmin21∣∣W∣∣2(2.2.2)
上式的
1
2
\frac 1 2
21是为了后续求导后刚好能消去,没有其他特殊意义(取倒数和加负号是将极大值极小值转化的常用方法)。
同时也不要忘了有一些约束条件:
X
i
T
W
+
b
≥
+
1
,
y
i
=
+
1
X
i
T
W
+
b
≤
−
1
,
y
i
=
−
1
(2.2.3)
X_i^TW+b \ge +1, y_i=+1 \\\\ X_i^TW+b \le -1, y_i=-1 \tag{2.2.3}
XiTW+b≥+1,yi=+1XiTW+b≤−1,yi=−1(2.2.3)
总结一下,间隔最大化问题的数学表达就是
m
i
n
W
,
b
J
(
W
)
=
m
i
n
W
,
b
1
2
∣
∣
W
∣
∣
2
s
.
t
.
y
i
(
X
i
T
W
+
b
)
≥
1
,
i
=
1
,
2
,
…
n
.
(2.2.4)
\underset{W,b}{min}J(W) = \underset{W,b}{min}\frac 1 2 ||W||^2 \\\\ s.t.\quad y_i(X_i^TW+b) \ge 1, i=1,2,…n. \tag{2.2.4}
W,bminJ(W)=W,bmin21∣∣W∣∣2s.t.yi(XiTW+b)≥1,i=1,2,…n.(2.2.4)
通过求解上式即可得到最优超平面 Ŵ 和 b̂ (其实支持向量机解决问题的策略可以简单总结为, 在满足线性可分的二分类条件下, 找到使分类间隔最大的超平面. 而当在特征维数足够高的希尔伯特空间中, 线性可分的前提条件是一定满足的. 从决策面看, 支持向量机是线性模型)。具体如何求解见2.4和2.5节。
2.3 支持向量
在线性可分的情况下,训练数据集的样本点中与分离超平面距离最近的数据点称为支持向量(support vector),支持向量是使(2.2.4)中的约束条件取等的点,即满足:
y
i
(
X
i
T
W
+
b
)
=
1
(2.3.1)
y_i(X_i^TW+b) = 1 \tag{2.3.1}
yi(XiTW+b)=1(2.3.1)
的点。也即所有在直线
X
T
W
+
b
=
1
X^TW+b=1
XTW+b=1或直线
X
T
W
+
b
=
−
1
X^TW+b=−1
XTW+b=−1的点。如下图所示:
在决定最佳超平面时只有支持向量起作用,而其他数据点并不起作用(具体推导见2.4节最后)。如果移动非支持向量,甚至删除非支持向量都不会对最优超平面产生任何影响。也即支持向量对模型起着决定性的作用,这也是“支持向量机”名称的由来。
2.4 对偶问题
如何求解式 (2.2.4) 呢?
我们称式 (2.2.4) 所述问题为原始问题(primal problem), 可以应用拉格朗日乘子法构造拉格朗日函数(Lagrange function)再通过求解其对偶问题(dual problem)得到原始问题的最优解。转换为对偶问题来求解的原因是:
O 对偶问题更易求解,由下文知对偶问题只需优化一个变量α且约束条件更简单;
O 能更加自然地引入核函数,进而推广到非线性问题。
首先构建拉格朗日函数。为此需要引进拉格朗日乘子(Lagrange multiplier) αi≥0,i=1,2,…n。则拉格朗日函数为(拉格朗日函数就是将目标函数与约束条件相结合, 约束条件要与拉格朗日乘子相乘):
L
(
W
,
b
,
α
)
=
1
2
∣
∣
W
∣
∣
2
−
∑
i
=
1
n
α
i
[
y
i
(
X
i
T
W
+
b
)
−
1
]
(2.4.1)
L(W,b,\alpha)=\frac 1 2 ||W||^2 - \sum_{i=1}^n \alpha_i [y_i(X_i^TW+b)-1] \tag{2.4.1}
L(W,b,α)=21∣∣W∣∣2−i=1∑nαi[yi(XiTW+b)−1](2.4.1)
因此,给定一个W和b, 若不满足式(2.2.4)的约束条件,那么有
m
a
x
α
L
(
W
,
b
,
α
)
=
+
∞
(2.4.2)
\underset{\alpha}{max} L(W,b,\alpha) = +\infty \tag{2.4.2}
αmaxL(W,b,α)=+∞(2.4.2)
否则,若满足式(2.2.4)的约束条件,有
m
a
x
α
L
(
W
,
b
,
α
)
=
J
(
W
)
=
1
2
∣
∣
W
∣
∣
2
(2.4.3)
\underset{\alpha}{max} L(W,b,\alpha) = J(W) = \frac 1 2 ||W||^2 \tag{2.4.3}
αmaxL(W,b,α)=J(W)=21∣∣W∣∣2(2.4.3)
结合式(2.4.2)和(2.4.3)知,优化问题
m
i
n
W
,
b
m
a
x
α
L
(
W
,
b
,
α
)
(2.4.4)
\underset{W, b}{min} \underset{\alpha}{max} L(W,b,\alpha)\tag{2.4.4}
W,bminαmaxL(W,b,α)(2.4.4)
与式(2.2.4)所述问题是完全等价的。
根据拉格朗日对偶性,式(2.4.4)所述问题即原始问题的对偶问题是:
m
a
x
α
m
i
n
W
,
b
L
(
W
,
b
,
α
)
(2.4.5)
\underset{\alpha}{max} \underset{W, b}{min} L(W,b,\alpha) \tag{2.4.5}
αmaxW,bminL(W,b,α)(2.4.5)
以上具体推导细节可参见书籍《统计学习方法》或者知乎文章拉格朗日对偶性
为了求得对偶问题的解,需要先求得L(W,b,α)对W和b的极小再求对α的极大。
(1) 求
m
i
n
W
,
b
L
(
W
,
b
,
α
)
\underset{W, b}{min} L(W,b,\alpha)
W,bminL(W,b,α)
对拉格朗日函数求导并令导数为0,有:
∇
W
L
(
W
,
b
,
α
)
=
W
−
∑
i
=
1
n
α
i
y
i
X
i
=
0
⟹
W
=
∑
i
=
1
n
α
i
y
i
X
i
(2.4.6)
\nabla_W L(W,b,\alpha) = W - \sum_{i=1}^n \alpha_i y_i X_i = 0 \implies W= \sum_{i=1}^n \alpha_i y_i X_i\tag{2.4.6}
∇WL(W,b,α)=W−i=1∑nαiyiXi=0⟹W=i=1∑nαiyiXi(2.4.6)
∇
b
L
(
W
,
b
,
α
)
=
−
∑
i
=
1
n
α
i
y
i
=
0
⟹
∑
i
=
1
n
α
i
y
i
=
0
(2.4.7)
\nabla_b L(W,b,\alpha) = - \sum_{i=1}^n \alpha_i y_i = 0 \implies \sum_{i=1}^n \alpha_i y_i = 0 \tag{2.4.7}
∇bL(W,b,α)=−i=1∑nαiyi=0⟹i=1∑nαiyi=0(2.4.7)
将上面两式代入L(W,b,α)(一定要动笔推一遍, 这里有向量内积的表达方式, 转置求导的方式):
所以,
m
i
n
W
,
b
L
(
W
,
b
,
α
)
=
−
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
X
i
T
X
j
+
∑
i
=
1
n
α
i
(2.4.8)
\underset{W, b}{min} L(W,b,\alpha) = -\frac 1 2 \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j X_i^T X_j \ + \ \sum_{i=1}^n \alpha_i \tag{2.4.8}
W,bminL(W,b,α)=−21i=1∑nj=1∑nαiαjyiyjXiTXj + i=1∑nαi(2.4.8)
(2) 求
m
i
n
W
,
b
L
(
W
,
b
,
α
)
\underset{W, b}{min} L(W,b,\alpha)
W,bminL(W,b,α)对α的极大:
等价于式(2.4.8)对α求极大,也等价于式(2.4.8)取负数后对α求极小,即:
m
i
n
α
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
X
i
T
X
j
−
∑
i
=
1
n
α
i
(2.4.9)
\underset{\alpha}{min} \quad \frac 1 2 \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j X_i^T X_j \ - \ \sum_{i=1}^n \alpha_i \tag{2.4.9}
αmin21i=1∑nj=1∑nαiαjyiyjXiTXj − i=1∑nαi(2.4.9)
同时满足约束条件:
∑
i
=
1
n
α
i
y
i
=
0
α
i
≥
0
,
i
=
1
,
2
,
…
,
n
.
(2.4.10)
\sum_{i=1}^n \alpha_i y_i = 0 \\\\ \alpha_i \ge 0, i=1,2,…,n. \tag{2.4.10}
i=1∑nαiyi=0αi≥0,i=1,2,…,n.(2.4.10)
至此,我们得到了原始最优化问题(2.2.4)和对偶最优化问题(2.4.9)、(2.4.10)(至此, 已将求间隔最大化问题转化为对偶问题)。
由slater条件知(slater条件在这里出现的意义是它为用求偶问题解决原始问题提供了理论依据),因为原始优化问题的目标函数和不等式约束条件都是凸函数,并且该不等式约束是严格可行的(因为数据是线性可分的), 所以存在 Ŵ , b̂ ,α̂ ,使得Ŵ , b̂ 是原始问题的解,α̂ 是对偶问题的解(通过求解对偶问题中的参数, 可以推导出原始问题的参数, 同时这组参数也是原始问题的解)。这意味着求解原始最优化问题(2.2.4)可以转换为求解对偶最优化问题(2.4.9)、(2.4.10)。
slater 条件:
原始问题一般性表达为
m
i
n
x
f
(
x
)
s
.
t
.
c
i
(
x
)
≤
0
,
i
=
1
,
2
,
…
k
h
j
(
x
)
=
0
,
j
=
1
,
2
,
…
,
l
\underset{x}{min} \quad f(x) \\\\ s.t. \ c_i(x) \le 0, i=1,2,…k \\\\ \quad \quad h_j(x) = 0, j=1,2,…,l
xminf(x)s.t. ci(x)≤0,i=1,2,…khj(x)=0,j=1,2,…,l
则其拉格朗日函数为:
L
(
x
,
α
,
β
)
=
f
(
x
)
+
∑
i
=
1
k
α
i
c
i
(
x
)
+
∑
j
=
1
l
β
j
h
j
(
x
)
,
α
i
≥
0
L(x,\alpha,\beta)=f(x) + \sum_{i=1}^k \alpha_i c_i(x) + \sum_{j=1}^l \beta_j h_j(x), \quad \alpha_i \ge 0
L(x,α,β)=f(x)+i=1∑kαici(x)+j=1∑lβjhj(x),αi≥0
假设原始问题目标函数 f(x) 和不等式约束条件
c
i
(
x
)
c_i(x)
ci(x)都是凸函数,原始问题等式约束
h
j
(
x
)
h_j(x)
hj(x)都是仿射函数,且不等式约束
c
i
(
x
)
c_i(x)
ci(x) 是严格可行的,即存在 x ,对所有 i 都有
c
i
(
x
)
c_i(x)
ci(x)<0 ,则存在 x̂ , α̂ , β̂ ,使 x̂ 是原始问题的解, α̂ , β̂ 是对偶问题的解。
那么如何求解优化问题(2.4.9)、(2.4.10)的最优解 α̂ 呢?
不难发现这是一个二次规划问题(不了解),有现成的通用的算法来求解。
事实上通用的求解二次规划问题的算法的复杂度正比于训练数据样本数,所以在实际应用中需要寻求更加高效的算法,例如序列最小优化(Sequential Minimal Optimiation, SMO)算法。(尤其是数据量较大的时候, 宜采用SMO算法寻优)
假设我们现在求得了(2.4.9)、(2.4.10)的最优解 α̂ (这里的假设,意思是已经使用SMO算法得到了
α
^
\hat{\alpha}
α^的最优解),则根据式(2.4.6)可求得最优Ŵ :
W
^
=
∑
i
=
1
n
α
^
i
y
i
X
i
(2.4.11)
\hat{W}= \sum_{i=1}^n \hat{\alpha}_i y_i X_i \tag{2.4.11}
W^=i=1∑nα^iyiXi(2.4.11)
因为至少存在一个
α
^
j
>
0
\hat{\alpha}_j > 0
α^j>0(若不存在,即
α
^
\hat{\alpha}
α^全为0,则 Ŵ =0, 即
m
a
r
g
i
n
=
2
∣
∣
W
^
∣
∣
=
∞
margin = \frac 2 {||\hat{W}||}= \infty
margin=∣∣W^∣∣2=∞,显然不行), 再根据KKT条件,即
{
乘
子
非
负
:
α
i
≥
0
(
i
=
1
,
2
,
…
n
.
下
同
)
约
束
条
件
:
y
i
(
X
i
T
W
+
b
)
−
1
≥
0
互
补
条
件
:
α
i
(
y
i
(
X
i
T
W
+
b
)
−
1
)
=
0
\begin{cases} 乘子非负: \alpha_i \ge 0 (i=1,2,…n.下同) \\\\ 约束条件: y_i(X_i^TW+b) - 1\ge 0 \\\\ 互补条件: \alpha_i (y_i(X_i^TW+b) - 1)=0 \end{cases}
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧乘子非负:αi≥0(i=1,2,…n.下同)约束条件:yi(XiTW+b)−1≥0互补条件:αi(yi(XiTW+b)−1)=0
所以至少存在一个 j , 使
y
j
(
X
j
T
W
^
+
b
^
)
−
1
=
0
y_j(X_j^T \hat{W}+\hat{b}) - 1=0
yj(XjTW^+b^)−1=0, 即可求得最优 b̂ :
b
^
=
1
y
j
−
X
j
T
W
^
=
y
j
−
X
j
T
W
^
=
y
j
−
∑
i
=
1
n
α
^
i
y
i
X
j
T
X
i
(2.4.12)
\begin{aligned} \hat{b} & = \frac 1 {y_j} -X_j^T \hat{W} \\\\ & = y_j -X_j^T \hat{W} \\\\ & = y_j-\sum_{i=1}^n \hat{\alpha}_i y_i X_j^T X_i \end{aligned} \tag{2.4.12}
b^=yj1−XjTW^=yj−XjTW^=yj−i=1∑nα^iyiXjTXi(2.4.12)
至此,所以我们就求得了整个线性可分SVM的解。求得的分离超平面为(与2.1节超平面
X
T
W
+
b
=
0
X^TW+b=0
XTW+b=0相呼应):
∑
i
=
1
n
α
^
i
y
i
X
T
X
i
+
b
^
=
0
(2.4.13)
\sum_{i=1}^n \hat{\alpha}_i y_i X^TX_i + \hat{b}=0 \tag{2.4.13}
i=1∑nα^iyiXTXi+b^=0(2.4.13)
则分类的决策函数为:
f
(
X
)
=
s
i
g
n
(
∑
i
=
1
n
α
^
i
y
i
X
T
X
i
+
b
^
)
(2.4.14)
f(X) = sign(\sum_{i=1}^n \hat{\alpha}_i y_i X^TX_i + \hat{b}) \tag{2.4.14}
f(X)=sign(i=1∑nα^iyiXTXi+b^)(2.4.14)
再来分析KKT条件里的互补条件,对于任意样本 (Xi,yi) ,总会有 αi=0 或者
y
i
f
(
X
i
)
=
y
i
(
X
i
T
W
^
+
b
)
=
1
y_if(X_i)=y_i(X_i^T \hat{W}+b) = 1
yif(Xi)=yi(XiTW^+b)=1。则有
(1) 若
α
i
=
0
α_i=0
αi=0,此样本点不是支持向量,对模型没有任何作用;
(2) 若
α
i
>
0
α_i>0
αi>0,此样本点位于最大间隔边界上,是一个支持向量,如下图所示。
此外,当样本点是非支持向量时,因为
α
i
=
0
α_i=0
αi=0, 所以SVM的解中的求和项中第 i 项就为0,所以SVM的解(2.4.11)、(2.4.12)可简化为如下形式:
W
^
=
∑
i
∈
S
V
α
^
i
y
i
X
i
(2.4.15)
\hat{W}= \sum_{i \in SV} \hat{\alpha}_i y_i X_i \tag{2.4.15}
W^=i∈SV∑α^iyiXi(2.4.15)
b
^
=
y
j
−
∑
i
∈
S
V
α
^
i
y
i
X
j
T
X
i
(2.4.16)
\hat{b} = y_j-\sum_{i \in SV} \hat{\alpha}_i y_i X_j^T X_i \tag{2.4.16}
b^=yj−i∈SV∑α^iyiXjTXi(2.4.16)
类似的,判别函数也可转换成如下形式:
f
(
X
)
=
s
i
g
n
(
∑
i
∈
S
V
α
^
i
y
i
X
T
X
i
+
b
^
)
(2.4.17)
f(X) = sign(\sum_{i \in SV} \hat{\alpha}_i y_i X^TX_i + \hat{b}) \tag{2.4.17}
f(X)=sign(i∈SV∑α^iyiXTXi+b^)(2.4.17)
所以,整个SVM的解只与支持向量SV有关,与非支持向量无关。这也就解释了2.3节的结论,即在决定最佳超平面时只有支持向量起作用,而其他数据点并不起作用。
三、 线性SVM——软间隔
在前面的讨论中,我们一直假定训练数据是严格线性可分的,即存在一个超平面能完全将两类数据分开。但是现实任务这个假设往往不成立,例如下图所示的数据。
3.1 软间隔最大化
解决该问题的一个办法是允许SVM在少量样本上出错,即将之前的硬间隔最大化条件放宽一点,为此引入“软间隔(soft margin)”的概念。即允许少量样本不满足约束
y
i
(
X
i
T
W
+
b
)
≥
1
(3.1.1)
y_i(X_i^TW+b) \ge 1 \tag{3.1.1}
yi(XiTW+b)≥1(3.1.1)
为了使不满足上述条件的样本点尽可能少,我们需要在优化的目标函数(2.2.2)里面新增一个对这些点的惩罚项。最常用的是hinge损失(hinge损失中的z即
y
i
(
X
i
T
W
+
b
)
y_i(X_i^TW+b)
yi(XiTW+b)):
l
h
i
n
g
e
(
z
)
=
m
a
x
(
0
,
1
−
z
)
(3.1.2)
l_{hinge}(z) = max(0, 1-z) \tag{3.1.2}
lhinge(z)=max(0,1−z)(3.1.2)
即若样本点满足约束条件损失就是0, 否则损失就是 1−z ,则优化目标 (2.2.2) 变成
m
i
n
W
,
b
1
2
∣
∣
W
∣
∣
2
+
C
∑
i
=
1
n
m
a
x
(
0
,
1
−
y
i
(
X
i
T
W
+
b
)
)
(3.1.3)
\underset{W,b}{min} \quad \frac 1 2 ||W||^2 + C \sum_{i=1}^n max(0, 1 - y_i(X_i^TW+b)) \tag{3.1.3}
W,bmin21∣∣W∣∣2+Ci=1∑nmax(0,1−yi(XiTW+b))(3.1.3)
(可以发现损失函数发生改变的地方主要是约束条件, 现在约束条件放宽了, 允许一定的出错率, 但是为了控制出错的概率, 增加了惩罚因子)
其中 C>0 称为惩罚参数,C 越小时对误分类惩罚越小,越大时对误分类惩罚越大,当 C 取正无穷时就变成了硬间隔优化。实际应用时我们要合理选取 C,C 越小越容易欠拟合,C 越大越容易过拟合(尽管C取无穷大的时候, 变成了硬间隔优化, 只可解决线性可分问题, 但这时候希尔伯特特征空间的维度变得很高, 可能将噪声都当做一个特征维度, 造成过拟合. 值得注意的是, 在讨论两个模型复杂度的前提条件应该限定在同一维度)。
如果我们引入“松弛变量”
ξ
i
≥
0
ξ_i≥0
ξi≥0, 那么式 (3.1.3) 可重写成
m
i
n
W
,
b
,
ξ
1
2
∣
∣
W
∣
∣
2
+
C
∑
i
=
1
n
ξ
i
s
.
t
.
y
i
(
X
i
T
W
+
b
)
≥
1
−
ξ
i
ξ
i
≥
0
,
i
=
1
,
2
,
…
n
.
(3.1.4)
\underset{W,b,\xi}{min} \quad \frac 1 2 ||W||^2 + C \sum_{i=1}^n \xi_i\\\\ s.t.\ y_i(X_i^TW+b) \ge 1-\xi_i \\\\ \xi_i \ge 0, i=1,2,…n. \tag{3.1.4}
W,b,ξmin21∣∣W∣∣2+Ci=1∑nξis.t. yi(XiTW+b)≥1−ξiξi≥0,i=1,2,…n.(3.1.4)
上式所述问题即软间隔支持向量机(如何理解限制条件1, 它解释了松弛变量的意义,
ξ
i
ξ_i
ξi越大, 则样本点越远离支持边界, 允许分类出错的概率更大, 即更松弛)。
3.2 对偶问题
式 (3.1.4) 表示的软间隔支持向量机依然是一个凸二次规划问题,和硬间隔支持向量机类似,我们可以通过拉格朗日乘子法将其转换为对偶问题进行求解。
式 (3.1.4) 对应的拉格朗日函数为
L
(
W
,
b
,
ξ
,
α
,
β
)
=
1
2
∣
∣
W
∣
∣
2
+
C
∑
i
=
1
n
ξ
i
−
∑
i
=
1
n
α
i
[
y
i
(
X
i
T
W
+
b
)
−
1
+
ξ
i
]
−
∑
i
=
1
n
β
i
ξ
i
(3.2.1)
L(W,b,\xi,\alpha,\beta)=\frac 1 2 ||W||^2 + C \sum_{i=1}^n \xi_i - \sum_{i=1}^n \alpha_i [y_i(X_i^TW+b) - 1 + \xi_i] - \sum_{i=1}^n \beta_i \xi_i \tag{3.2.1}
L(W,b,ξ,α,β)=21∣∣W∣∣2+Ci=1∑nξi−i=1∑nαi[yi(XiTW+b)−1+ξi]−i=1∑nβiξi(3.2.1)
类似2.4节,为了求得对偶问题的解,我们需要先求得L(W,b,ξ,α,β)对 W、b 和 ξ (目标函数中的参数)的极小再求对 α 和 β 的极大(约束条件中的参数)。
以下两步和2.4节几乎完全一样,除了最后对 α 的约束条件略有不同。
(1) 求
m
i
n
W
,
b
,
ξ
L
(
W
,
b
,
ξ
,
α
,
β
)
\underset{W, b, \xi}{min} L(W,b,\xi,\alpha,\beta)
W,b,ξminL(W,b,ξ,α,β):
将
L
(
W
,
b
,
ξ
,
α
,
β
)
L(W,b,\xi,\alpha,\beta)
L(W,b,ξ,α,β) 分别对 W、b 和 ξ 求偏导并令为0可得
W
=
∑
i
=
1
n
α
i
y
i
X
i
(3.2.2)
W=\sum_{i=1}^n \alpha_i y_i X_i \tag{3.2.2}
W=i=1∑nαiyiXi(3.2.2)
∑
i
=
1
n
α
i
y
i
=
0
(3.2.3)
\sum_{i=1}^n \alpha_i y_i = 0 \tag{3.2.3}
i=1∑nαiyi=0(3.2.3)
C
=
α
i
+
β
i
(3.2.4)
C = \alpha_i + \beta_i \tag{3.2.4}
C=αi+βi(3.2.4)
将上面三个式子代入式 (3.2.1) 并进行类似式 (2.4.8) 的推导即得
m
i
n
W
,
b
,
ξ
L
(
W
,
b
,
ξ
,
α
,
β
)
=
−
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
X
i
T
X
j
+
∑
i
=
1
n
α
i
(3.2.5)
\underset{W, b, \xi}{min} L(W,b,\xi,\alpha,\beta) = -\frac 1 2 \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j X_i^T X_j \ + \ \sum_{i=1}^n \alpha_i \tag{3.2.5}
W,b,ξminL(W,b,ξ,α,β)=−21i=1∑nj=1∑nαiαjyiyjXiTXj + i=1∑nαi(3.2.5)
注意其中的 β 被消去了。
(2) 求
m
i
n
W
,
b
,
ξ
L
(
W
,
b
,
ξ
,
α
,
β
)
\underset{W, b, \xi}{min} L(W,b,\xi,\alpha,\beta)
W,b,ξminL(W,b,ξ,α,β)对 α 的极大:
式(3.2.5)对α求极大,也等价于式(3.2.5)取负数后对α求极小,即
m
i
n
α
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
X
i
T
X
j
−
∑
i
=
1
n
α
i
(3.2.6)
\underset{\alpha}{min} \quad \frac 1 2 \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j X_i^T X_j \ - \ \sum_{i=1}^n \alpha_i \tag{3.2.6}
αmin21i=1∑nj=1∑nαiαjyiyjXiTXj − i=1∑nαi(3.2.6)
同时满足约束条件(约束条件
α
i
\alpha_i
αi 的取值范围, 由公式3.2.4决定):
∑
i
=
1
n
α
i
y
i
=
0
0
≤
α
i
≤
C
,
i
=
1
,
2
,
…
,
n
.
(3.2.7)
\sum_{i=1}^n \alpha_i y_i = 0 \\\\ \quad 0 \le \alpha_i \le C, i=1,2,…,n. \tag{3.2.7}
i=1∑nαiyi=00≤αi≤C,i=1,2,…,n.(3.2.7)
至此,我们得到了原始最优化问题(3.1.4)和对偶最优化问题(3.2.6)、(3.2.7)。
类似2.4节地,假设我们现在通过通用的二次规划求解方法或者SMO算法求得了(3.2.6)、(3.2.7)的最优解 α̂ ,则根据式(3.2.2)可求得最优Ŵ :
W
^
=
∑
i
=
1
n
α
^
i
y
i
X
i
(3.2.8)
\hat{W}= \sum_{i=1}^n \hat{\alpha}_i y_i X_i \tag{3.2.8}
W^=i=1∑nα^iyiXi(3.2.8)
再根据KKT条件(根据公式3.2.1),即
{
乘
子
非
负
:
α
i
≥
0
,
β
i
≥
0
(
i
=
1
,
2
,
…
n
.
下
同
)
约
束
条
件
:
y
i
(
X
i
T
W
+
b
)
−
1
≥
ξ
i
互
补
条
件
:
α
i
[
y
i
(
X
i
T
W
+
b
)
−
1
+
ξ
i
]
=
0
,
β
i
ξ
i
=
0
\begin{cases} 乘子非负: \alpha_i \ge 0 ,\enspace \beta_i \ge 0 (i=1,2,…n.下同)\\\\ 约束条件: y_i(X_i^TW+b) - 1\ge \xi_i \\\\ 互补条件: \alpha_i [y_i(X_i^TW+b) - 1+\xi_i]=0, \enspace \beta_i \xi_i=0 \end{cases}
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧乘子非负:αi≥0,βi≥0(i=1,2,…n.下同)约束条件:yi(XiTW+b)−1≥ξi互补条件:αi[yi(XiTW+b)−1+ξi]=0,βiξi=0
可求得整个软间隔SVM的解,即:
W
^
=
∑
i
∈
S
V
α
^
i
y
i
X
i
(3.2.9)
\hat{W}= \sum_{i \in SV} \hat{\alpha}_i y_i X_i \tag{3.2.9}
W^=i∈SV∑α^iyiXi(3.2.9)
b
^
=
y
j
−
∑
i
∈
S
V
α
^
i
y
i
X
j
T
X
i
(3.2.10)
\hat{b} = y_j-\sum_{i \in SV} \hat{\alpha}_i y_i X_j^T X_i \tag{3.2.10}
b^=yj−i∈SV∑α^iyiXjTXi(3.2.10)
其中 j 需满足
0
<
α
^
j
<
C
0 < \hat{\alpha}_j < C
0<α^j<C
对于任意样本
(
X
i
,
y
i
)
(X_i,y_i)
(Xi,yi) ,
(1) 若
α
i
=
0
α_i=0
αi=0,此样本点不是支持向量,该样本对模型没有任何的作用;
(2) 若
α
i
>
0
α_i>0
αi>0,此样本是一个支持向量。
若满足
α
i
>
0
α_i>0
αi>0 ,进一步地(参考下面的图, 和下面的讨论, 这里的
β
i
β_i
βi应该是
i
\enspace_i
i),
(1) 若$ 0<α_i<C$, 由式 (3.2.4) 得,若
β
i
=
0
β_i=0
βi=0,即刚好
y
i
(
X
i
T
W
+
b
)
=
1
y_i(X_i^TW+b) =1
yi(XiTW+b)=1,样本恰好在最大间隔边界上;
(2) 若
α
i
=
C
α_i=C
αi=C,若有
β
i
>
0
β_i>0
βi>0,此时若
β
i
<
1
β_i<1
βi<1则该样本落在最大间隔内部,若
β
i
>
1
β_i>1
βi>1 则该样本落在最大间隔内部即被错误分类。
因此,我们有与2.4节相同的结论,最优超平面只与支持向量有关而与非支持向量无关。
3.3 惩罚参数 C
对于不同惩罚参数 C,SVM结果如下图所示。
再来看看我们的原始目标函数:
m
i
n
W
,
b
,
ξ
1
2
∣
∣
W
∣
∣
2
+
C
∑
i
=
1
n
ξ
i
\underset{W,b,\xi}{min} \quad \frac 1 2 ||W||^2 + C \sum_{i=1}^n \xi_i
W,b,ξmin21∣∣W∣∣2+Ci=1∑nξi
对于更加一般化的问题,可将上述式子抽象成:
m
i
n
f
Ω
(
f
)
+
C
∑
i
=
1
n
l
(
f
(
x
i
)
,
y
i
)
(3.3.1)
\underset{f}{min} \quad \Omega(f) + C \sum_{i=1}^n l(f(x_i),y_i) \tag{3.3.1}
fminΩ(f)+Ci=1∑nl(f(xi),yi)(3.3.1)
前一项可以理解为“结构风险(structural risk)”,用来描述所求模型的某些性质(SVM就是要求间隔最大);第二项称为“经验风险(empirical risk)”,用来描述模型与训练数据的契合程度(即误差)。而参数 C 就是用于对二者的折中,即我们一方面要求模型要满足某种性质另一方面又想使模型与训练数据很契合。
从正则化角度来讲, Ω(f) 称为正则化项,C 称为惩罚参数,C 越大即对误分类的惩罚越大(要求模型对训练模型更契合),这可能会存在过拟合;C 越小即相对更加看重正则化项,此时可能存在欠拟合。
四、非线性SVM——核技巧
前面介绍的都是线性问题,但是我们经常会遇到非线性的问题(例如异或问题),此时就需要用到核技巧(kernel trick)将线性支持向量机推广到非线性支持向量机。需要注意的是,不仅仅是SVM,很多线性模型都可以用核技巧推广到非线性模型,例如核线性判别分析(KLDA)。
4.1 核函数
如下图所示,核技巧的基本思路分为两步:
(1) 使用一个变换将原空间的数据映射到新空间(例如更高维甚至无穷维的空间);
(2) 然后在新空间里用线性方法从训练数据中学习得到模型。
怎样映射到特征空间?
先来看看核函数的定义,
设
X
\mathcal{X}
X是输入空间(欧式空间
R
n
R^n
Rn的子集或离散集合),又设
H
\mathcal{H}
H是特征空间(希尔伯特空间),如果存在一个
X
\mathcal{X}
X到
H
\mathcal{H}
H的映射
ϕ
(
x
)
:
X
→
H
\phi(x): \mathcal{X} \to \mathcal{H}
ϕ(x):X→H
使得对所有 x,z∈
X
\mathcal{X}
X,函数 K(x,z) 满足条件:
K
(
x
,
z
)
=
ϕ
(
x
)
⋅
ϕ
(
z
)
K(x,z)=\phi(x) \cdot \phi(z)
K(x,z)=ϕ(x)⋅ϕ(z)
则称 K(x,z) 为核函数, ϕ(x) 为映射函数,式中 ϕ(x)⋅ϕ(z) 为 ϕ(x) 和 ϕ(z) 的內积。
通常,直接计算 K(x,z) 比较容易而通过 ϕ(x) 和 ϕ(z) 计算 K(x,z) 并不容易。而幸运的是,在线性支持向量机的对偶问题中,无论是目标函数还是决策函数都只涉及到输入样本与样本之间的內积(我们的目标是计算映射函数的内积, 又由于原始空间中目标函数的输入变量也为内积形式, 所以可以转化为求原始空间中的核函数的值(这段有点绕)),因此我们不需要显式地定义映射 ϕ(x) 是什么而只需事先定义核函数 K(x,z) 即可。也就是说,在核函数 K(x,z) 给定的情况下,可以利用解线性问题的方法求解非线性问题的支持向量机,此过程是隐式地在特征空间中进行的。
4.2 正定核
由上面的介绍可知,我们只需要定义核函数就可以了。但是如何不通过映射 ϕ(x) 判断给定的一个函数 K(x,z) 是不是核函数呢?或者说,K(x,z) 需要满足什么条件才是一个核函数。
通常所说的核函数就是正定核函数,下面不加证明的给出正定核的充要条件,具体证明略显复杂,有兴趣的可以参考《统计学习方法》。
设
X
⊂
R
n
\mathcal{X} \subset R^n
X⊂RnRn ,K(x,z) 是定义在
m
a
t
h
c
a
l
X
×
m
a
t
h
c
a
l
X
mathcal{X} ×mathcal{X}
mathcalX×mathcalX上的对称函数,如果对任意的
x
i
∈
m
a
t
h
c
a
l
X
xi∈mathcal{X}
xi∈mathcalX ,i=1,2,…,m,K(x,z) 对应的Gram矩阵
K
=
[
K
(
x
i
,
x
j
)
]
m
×
m
K = [K(x_i, x_j)]_{m \times m}
K=[K(xi,xj)]m×m
是半正定矩阵,则 K(x,z) 是正定核。
虽然有了上述定义,但是实际应用时验证 K(x,z) 是否是正定核依然不容易,因此在实际问题中一般使用已有的核函数,下面给出一些常用的核函数。
(1) 多项式核函数(polynomial kernel function)
K
(
x
,
z
)
=
(
x
⋅
z
+
1
)
p
(4.2.1)
K(x,z) = (x \cdot z + 1)^p \tag{4.2.1}
K(x,z)=(x⋅z+1)p(4.2.1)
(2) 高斯核函数(Guassian kernel function)
K
(
x
,
z
)
=
e
x
p
(
−
∣
∣
x
−
z
∣
∣
2
2
σ
2
)
(4.2.2)
K(x,z) = exp(- \frac {||x-z||^2} {2 \sigma^2} ) \tag{4.2.2}
K(x,z)=exp(−2σ2∣∣x−z∣∣2)(4.2.2)
4.3 非线性支持向量机
如前4.1、4.2所述,利用核技巧可以很简单地把线性支持向量机扩展到非线性支持向量机,只需将线性支持向量机中的內积换成核函数即可。下面简述非线性支持向量机学习算法。
(1) 首先选取适当的核函数 K(x,z) 和适当的参数 C,构造最优化问题
m
i
n
α
1
2
∑
i
=
1
n
∑
j
=
1
n
α
i
α
j
y
i
y
j
K
(
X
i
,
X
j
)
−
∑
i
=
1
n
α
i
s
.
t
.
∑
i
=
1
n
α
i
y
i
=
0
0
≤
α
i
≤
C
,
i
=
1
,
2
,
…
,
n
.
(4.3.1)
\begin{aligned} & \underset{\alpha}{min} \quad \frac 1 2 \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j K(X_i,X_j) \ - \ \sum_{i=1}^n \alpha_i \\\\ & s.t. \quad \sum_{i=1}^n \alpha_i y_i = 0 \\\\ & \qquad 0 \le \alpha_i \le C, i=1,2,…,n. \end{aligned} \tag{4.3.1}
αmin21i=1∑nj=1∑nαiαjyiyjK(Xi,Xj) − i=1∑nαis.t.i=1∑nαiyi=00≤αi≤C,i=1,2,…,n.(4.3.1)
再利用现成的二次规划问题求解算法或者SMO算法求得最优解 α̂ 。
(2) 选择 α̂ 的一个满足 0<α̂ j<C 的分量 α̂ j ,计算:
b
^
=
y
j
−
∑
i
∈
S
V
α
^
i
y
i
K
(
X
j
,
X
i
)
(4.3.2)
\hat{b} = y_j-\sum_{i \in SV} \hat{\alpha}_i y_i K(X_j,X_i) \tag{4.3.2}
b^=yj−i∈SV∑α^iyiK(Xj,Xi)(4.3.2)
(3) 构造决策函数:
f
(
x
)
=
s
i
g
n
(
∑
i
∈
S
V
α
^
i
y
i
K
(
X
j
,
X
i
)
+
b
^
)
(4.3.3)
f(x)=sign(\sum_{i \in SV}\hat{\alpha}_i y_i K(X_j,X_i) + \hat{b}) \tag{4.3.3}
f(x)=sign(i∈SV∑α^iyiK(Xj,Xi)+b^)(4.3.3)
五、总结
5.1 SVM优缺点
任何算法都有其优缺点,支持向量机也不例外。
支持向量机的优点是:
(1) 由于SVM是一个凸优化问题,所以求得的解一定是全局最优而不是局部最优。
(2) 不仅适用于线性线性问题还适用于非线性问题(用核技巧)。
(3) 拥有高维样本空间的数据也能用SVM,这是因为数据集的复杂度只取决于支持向量而不是数据集的维度,这在某种意义上避免了“维数灾难”。
(4) 理论基础比较完善(例如神经网络就更像一个黑盒子)。
支持向量机的缺点是:
(1) 二次规划问题求解将涉及m阶矩阵的计算(m为样本的个数), 因此SVM不适用于超大数据集。(SMO算法可以缓解这个问题)
(2) 只适用于二分类问题。(SVM的推广SVR也适用于回归问题;可以通过多个SVM的组合来解决多分类问题)
5.2 SVM调参经验
SVM很适合做分类任务,但是如果刚开始接触SVM而不知道如何进行合理的参数选择的话可能得不到满意的结果。下面简介运用SVM的基本步骤,或者说调参经验。
主要参考:
Hsu C W, Chang C C, Lin C J. A practical guide to support vector classification[J]. 2003.
(1) 将原始数据转换为SVM算法期待的格式;
(2) 将数据进行scaling(很重要);
(3) 一般考虑用高斯核RBF(如果特征维度太高,建议直接用线性SVM);
(4) 交叉验证寻找最优的RBF的参数以及参数 C ;
(5) 用上面找到的最优参数在整个训练集上训练;
原文参考:https://tangshusen.me/2018/10/27/SVM/