文章目录
引入
SVM三要素概述:
支持向量机是一种二分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机。
支持向量机还包括核技巧,这使他成为实质上的非线性分类器。
支持向量机的学习策略就是间隔最大化,可形式化为求解一个凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。
支持向量机的学习算法就是求解凸二次规划的最优化算法。
支持向量机的种类有:
由简至繁 | 对应别名 | 对应数据集状态 |
---|---|---|
线性可分支持向量机 | 硬间隔支持向量机(硬间隔最大化) | 线性可分 |
线性支持向量机 | 软间隔支持向量机(软间隔最大化) | 近似线性可分 |
非线性支持向量机 | -(核技巧及软间隔最大化) | 线性不可分 |
关于核函数:
当输入空间为欧氏空间或离散集合、特征空间为希尔伯特空间时,核函数表示将输入从输入空间映射到特征空间得到的特征向量之间的内积。
核函数可以学习非线形支持向量机,等价于隐式地在高维的特征空间学习线性支持向量机。
线性可分支持向量机与硬间隔最大化
线性可分支持向量机
考虑二分类问题。
假设有:
- 假设输入空间与特征空间为两个不同的空间,输入空间为欧氏空间或离散集合,特征空间为欧氏空间或希尔伯特空间。
- 训练数据集线性可分。
学习的目标是在特征空间找到一个分离超平面。
当训练数据集线性可分的时候,存在无穷多个分离超平面。感知机采用的是误分类最小的策略,求得分离超平面,此时的解有无穷多个。线性可分支持向量机采用间隔最大化求最优分离超平面,这时,解是唯一的。
定义7.1(线性可分支持向量机)给定线性可分训练数据集,通过间隔最大化等价地求解相应的凸二次规划问题学习得到的分离超平面为
w
∗
⋅
x
+
b
=
0
w^*\cdot x+b=0
w∗⋅x+b=0
以及相应的分类决策函数
f
(
x
)
=
s
i
g
n
(
w
∗
⋅
x
+
b
∗
)
f(x)=sign(w^*\cdot x+b^*)
f(x)=sign(w∗⋅x+b∗)称为线性可分支持向量机。
函数间隔和几何间隔
一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度。
定义7.2(函数间隔)对于给定的训练数据集
T
T
T和超平面
(
w
,
b
)
(w,b)
(w,b),定义超平面
(
w
,
b
)
(w,b)
(w,b)关于样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的函数间隔为
γ
^
i
=
y
i
(
w
⋅
x
i
+
b
)
\hat\gamma_i=y_i(w\cdot x_i+b)
γ^i=yi(w⋅xi+b)
定义超平面
(
w
,
b
)
(w,b)
(w,b)关于训练数据集
T
T
T的函数间隔为
(
w
,
b
)
(w,b)
(w,b)关于
T
T
T中所有样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的函数间隔之最小值,即
γ
^
=
min
i
=
1
,
.
.
.
,
N
γ
^
i
\hat\gamma=\min_{i=1,...,N}\hat\gamma_i
γ^=i=1,...,Nminγ^i
虽然函数间隔能表示点到超平面的一种距离,但是是由缺陷的。如果成比例地改变系数的话,超平面不变,函数间隔会改变。因此我们需要对超平面的法向量加约束。此时的函数间隔称为几何间隔。
定义7.3(几何间隔)对于给定的训练数据集
T
T
T和超平面
(
w
,
b
)
(w,b)
(w,b),定义超平面
(
w
,
b
)
(w,b)
(w,b)关于样本点
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)的几何间隔为
γ
i
=
y
i
(
w
∥
w
∥
⋅
x
i
+
b
∥
w
∥
)
\gamma_i=y_i(\frac{w}{\|w\|}\cdot x_i+\frac{b}{\|w\|})
γi=yi(∥w∥w⋅xi+∥w∥b)
同理能得到
γ
\gamma
γ。
于是,函数间隔和几何间隔的关系是 γ i = γ ^ i ∥ w ∥ , γ = γ ^ ∥ w ∥ \gamma_i=\frac{\hat\gamma_i}{\|w\|},\gamma=\frac{\hat\gamma}{\|w\|} γi=∥w∥γ^i,γ=∥w∥γ^
间隔最大化
支持向量机的学习策略是正确划分数据且几何间隔最大。
不仅能将正负例分开,而且对最难分的点实例点(离超平面最近的点)也有足够大的确信度。
最大间隔分离超平面
基于间隔最大化的约束最优化问题表示为:
max
w
,
b
γ
s
.
t
.
y
i
(
w
∥
w
∥
⋅
x
i
+
b
∥
w
∥
)
>
γ
\begin{aligned}&\max_{w,b}~\gamma\\&s.t.~y_i(\frac{w}{\|w\|}\cdot x_i+\frac{b}{\|w\|})\gt\gamma\end{aligned}
w,bmax γs.t. yi(∥w∥w⋅xi+∥w∥b)>γ
考虑函数间隔和几何间隔的关系的话,上述式子可以用函数间隔表示:
max
w
,
b
γ
^
∥
w
∥
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
≥
γ
^
\begin{aligned}&\max_{w,b}~\frac{\hat\gamma}{\|w\|}\\&s.t.~y_i(w\cdot x_i+b)\ge\hat\gamma\end{aligned}
w,bmax ∥w∥γ^s.t. yi(w⋅xi+b)≥γ^
因为函数间隔的取值对优化的解不产生影响,所以不妨可以假设其为1,那么目标函数就成了最大化 1 ∥ w ∥ \frac{1}{\|w\|} ∥w∥1,即最小化 1 2 ∥ w ∥ 2 \frac{1}{2}\|w\|^2 21∥w∥2。于是,最优化问题可以表示为: min w , b 1 2 ∥ w ∥ 2 s . t . y i ( w ⋅ x i + b ) − 1 ≥ 0 \begin{aligned}&\min_{w,b}~\frac{1}{2}\|w\|^2\\&s.t.~y_i(w\cdot x_i+b)-1\ge0\end{aligned} w,bmin 21∥w∥2s.t. yi(w⋅xi+b)−1≥0
这是一个凸二次规划问题。
算法7.1(线性可分支持向量机学习算法——最大间隔法)
输入:线性可分数据集;
输出:最大间隔分离超平面和分类决策函数。
(1) 构造并求解约束最优化问题。
(2)由此得到分离超平面和分类决策函数。
至此,我们一共学习的七个模型中,有四个需要用最优化的知识求解,即感知机、逻辑斯蒂回归、最大熵模型以及支持向量机。
定理7.1(最大间隔分离超平面的存在唯一性)若训练数据集 T T T线性可分,则可将训练数据集中的样本点完全正确分开的最大间隔分离超平面存在且唯一。
支持向量和间隔边界
在线性可分情况下,训练数据集的样本点中与分离超平面最近的样本点的实例称为支持向量。支持向量是使约束条件等号成立的点,即 y i ( w ⋅ x i + b ) − 1 = 0 y_i(w\cdot x_i+b)-1=0 yi(w⋅xi+b)−1=0。
注意到支持向量所在的超平面是相互平行的,分离超平面位于他们中间。间隔依赖于分离超平面的法向量 w w w,等于 2 ∥ w ∥ \frac{2}{\|w\|} ∥w∥2。
H 1 , H 2 H_1,H_2 H1,H2称为间隔边界。
学习的对偶算法
在支持向量机这篇博客中介绍得很清楚,此处不再赘述。
关于对偶算法的优化对象,是通过KKT条件得到的。KKT条件是拉格朗日乘子法取得可行解的必要条件,详细可以参考这篇文章。
总结来说:
- Lagrange乘子法将约束问题转化为无约束问题;
- 因为minmax不方便求解,所以需要转化为对偶形式。两者之间的解只在特定条件下等价;
- 计算过程先是通过导数得到 w , b w,b w,b的值,然后代入式子。之后将max转化为min之后求解 α \alpha α。最后将 α \alpha α代入 w , b w,b w,b。
定理7.2 设 α ∗ = ( α 1 ∗ , . . . , α l ∗ ) T \alpha^*=(\alpha_1^*,...,\alpha_l^*)^T α∗=(α1∗,...,αl∗)T是对偶最优化问题的解,那么存在下标 j j j,使得 α j ∗ > 0 \alpha_j^*\gt0 αj∗>0,并可按照下式求得原始最优化问题的解 w ∗ = ∑ i = 1 N α i ∗ y i x i , b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) w^*=\sum_{i=1}^N\alpha^*_iy_ix_i,b^*=y_j-\sum_{i=1}^N\alpha_i^*y_i(x_i\cdot x_j) w∗=i=1∑Nαi∗yixi,b∗=yj−i=1∑Nαi∗yi(xi⋅xj)
算法7.2
- 构造并求解约束最优化问题;
- 按照定理7.2计算 w , b w,b w,b;
- 求得分离超平面。
定义7.4(支持向量)考虑原属最优化问题及对偶优化问题,将训练数据集中,对对应于 α i ∗ > 0 \alpha_i^*\gt0 αi∗>0的样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的实例 x i ∈ R n x_i\in R^n xi∈Rn称为支持向量。
为什么 α ∗ > 0 \alpha^*\gt0 α∗>0就行呢?这是因为这个i啊,他满足约束条件,自然和我们之前的支持向量定义满足了。
线性支持向量机与软间隔最大化
线性支持向量机
线性可分问题的支持向量机学习方法,对线性不可分训练数据是不适用的,因为上述方法的不等式约束并不能成立。
训练数据中存在特异点,线性不可分意味着某些样本点不能满足函数间隔大于等于1的约束条件(
y
i
(
w
⋅
x
+
b
)
−
1
≥
0
y_i(w\cdot x+b)-1\ge0
yi(w⋅x+b)−1≥0)。为了解决这个问题,引入了松弛变量
ξ
i
≥
0
\xi_i\ge0
ξi≥0,使得函数间隔加上松弛变量大于等于1,这样约束条件就变为了
y
i
(
w
⋅
x
+
b
)
≥
1
−
ξ
i
y_i(w\cdot x+b)\ge 1-\xi_i
yi(w⋅x+b)≥1−ξi
同时,对每个松弛变量
ξ
i
\xi_i
ξi,支付一个代价
ξ
i
\xi_i
ξi,目标函数变为了
1
2
∥
w
∥
2
+
C
∑
i
=
1
N
ξ
i
\frac{1}{2}\|w\|^2+C\sum_{i=1}^N\xi_i
21∥w∥2+Ci=1∑NξiC大时对误分类的惩罚大,反之小。
这一目标函数包含两层含义,分别是:第一项尽量小即函数间隔大;第二项尽量小即误分类点数少。C是调和二者的系数。
线性不可分的线性支持向量机可以写为如下形式的凸二次规划:
min
w
,
b
,
ξ
1
2
∥
w
∥
2
+
C
∑
i
=
1
N
ξ
i
s
.
t
.
y
i
(
w
⋅
x
i
+
b
)
≥
1
−
ξ
i
ξ
i
≥
0
\begin{aligned}&\min_{w,b,\xi}~\frac{1}{2}\|w\|^2+C\sum_{i=1}^N\xi_i\\&s.t.~y_i(w\cdot x_i+b)\ge 1-\xi_i\\&~~~~~~\xi_i\ge0\end{aligned}
w,b,ξmin 21∥w∥2+Ci=1∑Nξis.t. yi(w⋅xi+b)≥1−ξi ξi≥0
因为该问题是一个凸二次规划问题,因而解是存在的。可以证明 w w w是唯一的,但 b b b不唯一,而是存在于一个区间。
定义7.5(线性支持向量机) 对于给定的线性不可分的训练数据集,通过求解凸二次规划问题,得到的分离超平面为 w ∗ ⋅ x + b ∗ = 0 w^*\cdot x+b^*=0 w∗⋅x+b∗=0以及相应的分类决策函数 f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^*\cdot x+b^*) f(x)=sign(w∗⋅x+b∗)称为线性支持向量机。
学习的对偶算法
此处同样参照先前的链接。
定理7.3 设 α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α N ∗ ) \alpha^*=(\alpha_1^*,\alpha_2^*,...,\alpha_N^*) α∗=(α1∗,α2∗,...,αN∗)是对偶问题的一个解,若存在 α ∗ \alpha^* α∗的一个分量 a j ∗ a_j^* aj∗, 0 < α j ∗ < C 0\lt\alpha_j^*\lt C 0<αj∗<C,则原始问题的解与定力7.2的形式一致。
算法7.3 和 算法7.2保持一致,也是先求 α \alpha α,再求 w , b w,b w,b,最后得到分离超平面。
支持向量
在线性不可分的情况下,将对偶问题的解 α ∗ \alpha^* α∗中对应于 α i ∗ > 0 \alpha_i^*\gt0 αi∗>0的样本点的实例称为支持向量。
软间隔的支持向量或者在间隔边界上,或者在间隔边界与分离超平面之间,或者在分离超平面误分类一侧。
所谓支持向量,应该是能影响超平面分类的向量。
在软间隔支持向量机中,间隔边界依然是满足 y ( w ⋅ x + b ) = ± 1 y(w\cdot x+b)=\pm1 y(w⋅x+b)=±1的,不过我这个支持向量不一定在它上面了。
准确来说,它应该在函数间隔 1 − ξ i 1-\xi_i 1−ξi的位置,这个支持向量离间隔边界的几何距离为 ξ i ∥ w ∥ \frac{\xi_i}{\|w\|} ∥w∥ξi。
位置关系 | 参数情况 |
---|---|
在间隔边界上 | α ∗ < C , ξ i = 0 \alpha^*\lt C,\xi_i=0 α∗<C,ξi=0 |
在间隔边界和分离超平面之间 | α ∗ = C , 0 < ξ i < 1 \alpha^*=C,0\lt\xi_i\lt1 α∗=C,0<ξi<1 |
在分离超平面上 | α ∗ = C , ξ i = 0 \alpha^*=C,\xi_i=0 α∗=C,ξi=0 |
误分类 | α ∗ = C , ξ i = 1 \alpha^*=C,\xi_i=1 α∗=C,ξi=1 |
这些参数是怎么得到的呢?
我们关注一下原始优化问题的Lagrange函数: L ( w , b , ξ , α , μ ) = 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i − ∑ i = 1 N α i ( y i ( w ⋅ x i + b ) − 1 + ξ i ) − ∑ i = 1 N μ i ξ i L(w,b,\xi,\alpha,\mu)=\frac{1}{2}\|w\|^2+C\sum_{i=1}^N\xi_i-\sum_{i=1}^N\alpha_i(y_i(w\cdot x_i+b)-1+\xi_i)-\sum_{i=1}^N\mu_i\xi_i L(w,b,ξ,α,μ)=21∥w∥2+Ci=1∑Nξi−i=1∑Nαi(yi(w⋅xi+b)−1+ξi)−i=1∑Nμiξi
进行简单的改写: ∑ i = 1 N α i ( y i ( w ⋅ x i + b ) − ( 1 − ( C α i − 1 ) ξ i ) ) \sum_{i=1}^N\alpha_i(y_i(w\cdot x_i+b)-(1-(\frac{C}{\alpha_i}-1)\xi_i)) i=1∑Nαi(yi(w⋅xi+b)−(1−(αiC−1)ξi))
首先, 0 ≤ α i ≤ C 0\le\alpha_i\le C 0≤αi≤C,超过的话,就说明,这个点在间隔边界外,不存在需要松弛变量的情况。
合页损失函数
线性支持向量机还有另一种解释,就是最小化以下目标函数: ∑ i = 1 N [ 1 − y i ( w ⋅ x i + b ) ] + + λ ∥ w ∥ 2 \sum_{i=1}^N[1-y_i(w\cdot x_i+b)]_++\lambda\|w\|^2 i=1∑N[1−yi(w⋅xi+b)]++λ∥w∥2
目标函数的第一项是经验损失或经验风险,函数 L ( y ( w ⋅ x + b ) ) = [ 1 − y ( w ⋅ x + b ) ] + L(y(w\cdot x+b))=[1-y(w\cdot x+b)]_+ L(y(w⋅x+b))=[1−y(w⋅x+b)]+
这就是定理7.4:线性支持向量机原始最优化问题等价于最优化上述目标函数。
虚线为感知机的损失函数,可见,合页损失函数不仅要求分类正确,而且还要一定的确信度。
非线性支持向量机与核函数
核技巧
非线性分类问题
可以看到,无法用直线(线性模型)来将其分开,需要用一条椭圆曲线将它们正确分开。
如果能用 R n R^n Rn中的一个超曲面将正例正确分开,则称这个问题为非线性可分问题。
非线性问题往往不好求解, 希望能用解线性分类问题的方法解决这个问题,所采取的方法是进行一个非线形变换,将非线形问题转化为线性问题。
比如说,我们可以通过一个非线形变换,将上图中的椭圆转变为下图中的之前。
以这个问题为例,我们不妨设原空间为 X ⊂ R 2 \mathbb{X}\subset R^2 X⊂R2, x = ( x ( 1 ) , x ( 2 ) ) T ∈ X x=(x^{(1)},x^{(2)})^T\in\mathbb{X} x=(x(1),x(2))T∈X,新空间为 Z ⊂ R 2 \mathbb{Z}\subset R^2 Z⊂R2, z = ( z ( 1 ) , z ( 2 ) ) T ∈ Z z=(z^{(1)},z^{(2)})^T\in\mathbb{Z} z=(z(1),z(2))T∈Z。
我们定义映射为 z = ϕ ( x ) = ( ( x ( 1 ) ) 2 , ( x ( 2 ) ) 2 ) T z=\phi(x)=((x^{(1)})^2,(x^{(2)})^2)^T z=ϕ(x)=((x(1))2,(x(2))2)T
于是,原空间中的椭圆就变为了新空间中的直线 w 1 z ( 1 ) + w 2 z ( 2 ) + b = 0 w_1z^{(1)}+w_2z^{(2)}+b=0 w1z(1)+w2z(2)+b=0。
这个例子说明,用线性分类方法求解非线性分类问题分为两个步骤:
- 首先使用一个变换将原空间的数据映射到新空间;
- 然后在新空间里用线性分类学习方法从训练数据中学习分类模型。
将核技巧应用到支持向量机的基本思想是:通过一个非线性变换将输入空间对应于一个特征空间(希尔伯特空间),使得在输入空间中的超曲面模型对应于特征空间中的超平面模型。
核函数的定义
定义7.6(核函数)两个空间还是惯例,如果存在一个从
X
→
H
\mathbb{X}\to\mathbb{H}
X→H的映射
ϕ
(
x
)
:
X
→
H
\phi(x):\mathbb{X}\to\mathbb{H}
ϕ(x):X→H使得对所有
x
,
z
∈
X
x,z\in\mathbb{X}
x,z∈X,函数
K
(
x
,
z
)
K(x,z)
K(x,z)满足条件
K
(
x
,
z
)
=
ϕ
(
x
)
⋅
ϕ
(
z
)
K(x,z)=\phi(x)\cdot\phi(z)
K(x,z)=ϕ(x)⋅ϕ(z)
则称
K
(
x
,
z
)
K(x,z)
K(x,z)为核函数,
ϕ
(
x
)
\phi(x)
ϕ(x)为映射函数,其中的运算是内积(注意,这里的
z
z
z和之前的那个椭圆无关)。
核技巧的基本思想是:在学习与预测中只定义和函数,而不显式地定义映射函数 ϕ \phi ϕ。这是因为,直接计算 K ( x , z ) K(x,z) K(x,z)比较容易。
值得一提的是,这个希尔伯特空间一般是高维甚至无穷维的。
核函数表示的是两个希尔伯特空间中的向量的内积。
核技巧在支持向量机中的应用
线性支持向量机的目标函数可化为为 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 K α i \frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_jK(x_i,x_j)-\sum_{i=1}^K\alpha_i 21i=1∑Nj=1∑NαiαjyiyjK(xi,xj)−i=1∑Kαi
同样,分类决策函数也变成了 f ( x ) = s i g n ( ∑ i = 1 N s α i ∗ y i K ( x i , x ) + b ∗ ) f(x)= sign(\sum_{i=1}^{N_s}\alpha_i^*y_iK(x_i,x)+b^*) f(x)=sign(i=1∑Nsαi∗yiK(xi,x)+b∗)
在实际应用中,往往需要依赖领域知识来选择核函数,核函数选择的有效性需要通过实验验证。
正定核
不构造映射 ϕ ( x ) \phi(x) ϕ(x),能否直接判断一个给定的函数 K ( x , z ) K(x,z) K(x,z)是不是核函数?
通常所说的核函数是正定核,判断一个正定核的充要条件是:设
K
:
X
×
X
→
R
K:\mathbb{X}\times\mathbb{X}\to R
K:X×X→R是对称函数,则
K
(
x
,
z
)
K(x,z)
K(x,z)是正定核函数的充要条件是对任意
x
i
∈
X
,
i
=
1
,
2
,
.
.
.
,
m
x_i\in\mathbb{X},i=1,2,...,m
xi∈X,i=1,2,...,m,
K
(
x
,
z
)
K(x,z)
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
是半正定矩阵。
非线性支持向量机
从非线性分类训练集,通过核函数与软间隔最大化,或凸二次规划,学习得到的决策函数 f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i K ( x , x i ) + b ∗ ) f(x)=sign(\sum_{i=1}^N\alpha_i^*y_iK(x,x_i)+b^*) f(x)=sign(i=1∑Nαi∗yiK(x,xi)+b∗)这称为非线性支持向量机, K ( x , x i ) K(x,x_i) K(x,xi)为正定核。
线性可分支持向量机的两个支持向量对应的 α \alpha α是相等的,因此得到的 b ∗ b^* b∗是唯一的。因为要求是 0 < α < C 0\lt\alpha\lt C 0<α<C,所以线性支持向量机对应的 α \alpha α和前一种是一致的,但是因为 C C C不一样,所以b也会有好多。