目 录
1 支持向量机
基本的支持向量机(support vector machines,SVM)是一种二类分类监督学习模型,改进的SVM也可以用来进行多分类、回归和异常点检测等。它的基本模型是定义在特征空间上的间隔最大的线性分类器,可形式化为一个求解凸二次规划的问题。在线性可分情况下,在原空间寻找两类样本的最优分类超平面。在线性不可分的情况下,加入了松弛变量进行分析,通过使用非线性映射将低维输入空间的样本映射到高维属性空间使其变为线性情况,从而使得在高维属性空间采用线性算法对样本的非线性进行分析成为可能,并在该特征空间中寻找最优分类超平面。
按照训练数据的不同可以分为三种类型:
-
当训练数据线性可分时,通过硬间隔最大化学习一个线性可分支持向量机(又称硬间隔支持向量机)
-
当训练数据近似线性可分时,通过软间隔最大化学习一个线性支持向量机(又称软间隔支持向量机)
-
当训练数据线性不可分时,通过软间隔最大化和核技巧学习一个非线性支持向量机
1.1 线性可分支持向量机
对于线性可分的二分类数据,学习的目标是在特征空间中找到一个分离超平面,这很像我们前面学习的感知机模型,不过感知机利用的是误分类最小策略,求得的分离超平面可以有无数个;而支持向量机利用间隔最大化求最优分离超平面,解是唯一的。
给定训练样本集 T = { ( x 1 ⃗ , y 1 ) , ( x 2 ⃗ , y 2 ) , ⋯   , ( x N ⃗ , y N ) } , y i ∈ { + 1 , − 1 } T = \{(\vec{x_1},y_1),(\vec{x_2},y_2),\cdots,(\vec{x_N},y_N)\}, y_i\in\{+1,−1\} T={ (x1,y1),(x2,y2),⋯,(xN,yN)},yi∈{ +1,−1}, ( x i ⃗ , y i ) (\vec{x_i},y_i) (xi,yi)表示第 i i i 个样本, N N N 表示样本容量。分类学习最基本的想法就是基于训练集 T T T 在特征空间中找到一个最佳划分超平面将正负样本分开,而SVM算法解决的就是如何找到最佳超平面的问题。超平面可通过如下的线性方程来描述:
(1) w ⃗ T x ⃗ + b = 0 \vec{w}^T\vec{x} + b = 0 \tag{1} wTx+b=0(1)
其中 w ⃗ \vec{w} w表示法向量,决定了超平面的方向; b b b表示偏移量,决定了超平面与原点之间的距离。
对于训练数据集 T T T,假设找到了最佳超平面 w ∗ ⃗ T x ⃗ + b ∗ = 0 \vec{w^*}^T\vec{x} + b^* = 0 w∗Tx+b∗=0,定义决策分类函数
(2) f ( x ⃗ ) = s i g n ( w ∗ ⃗ T x ⃗ + b ∗ ) f(\vec{x}) = sign(\vec{w^*}^T\vec{x} + b^*) \tag{2} f(x)=sign(w∗Tx+b∗)(2)
在测试时对于线性可分支持向量机,可以用一个样本离划分超平面的距离来表示分类预测的可靠程度,如果样本离划分超平面越远则对该样本的分类越可靠(可以想到在距离超平面很远的点的施加很大扰动仍然分类正确),反之就不那么可靠(可以想到在超平面附近的点的一点扰动就可能引起分类错误)。那么,什么样的划分超平面是最佳超平面呢?
对于下图有A、B、C三个超平面,很明显应该选择超平面B,也就是说超平面首先应该能满足将两类样本点分开。
对于下图的A、B、C三个超平面,应该选择超平面C,因为使用超平面C进行划分对训练样本局部扰动的“容忍”度最好,分类的鲁棒性最强。例如,由于训练集的局限性或噪声的干扰,训练集外的样本可能比图2 中的训练样本更接近两个类目前的分隔界,在分类决策的时候就会出现错误,而超平面C受影响最小,也就是说超平面C所产生的分类结果是最鲁棒性的、是最可信的,对未见样本的泛化能力最强。
1.1.1 函数间隔和几何间隔
支持向量机学习的基本思想是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。那么函数间隔和几何间隔有什么不同呢?以下图为例说明一下这两个概念
在超平面 w ⃗ T x ⃗ + b = 0 \vec{w}^T\vec{x} + b = 0 wTx+b=0 确定的情况下, ∣ w ⃗ T x i ⃗ + b ∣ |\vec{w}^T\vec{x_i} + b| ∣wTxi+b∣ 能够相对地表示点 x i ⃗ \vec{x_i} xi 距离超平面的远近,而 w ⃗ T x i ⃗ + b \vec{w}^T\vec{x_i} + b wTxi+b 的符号与类标记 y i y_i yi 是否一致能够表示分类是否正确(考虑一个正实例点,即 y i > 0 y_i \gt 0 yi>0,若它被正确分类,那么 w ⃗ T x i ⃗ + b \vec{w}^T\vec{x_i} + b wTxi+b也是正的,于是 y i ( w ⃗ T x i ⃗ + b ) y_i(\vec{w}^T\vec{x_i} + b) yi(wTxi+b)就是正的,当然对于负实例点,两者都是负的,所以乘积还是正的;而被误分类的点两者的乘积是负的。所以可以用 γ i ^ = y i ( w ⃗ T x i ⃗ + b ) \hat{\gamma_i}=y_i(\vec{w}^T\vec{x_i} + b) γi^=yi(wTxi+b)来表示分类的正确性(正表示正确分类,负表示错误分类)及确信度(绝对值越大,里分离超平面越远,确信度越高)。这就是函数间隔(functional margin)的概念。
定义超平面 w ⃗ T x ⃗ + b = 0 \vec{w}^T\vec{x} + b = 0 wTx+b=0关于样本点 ( x i ⃗ , y i ) (\vec{x_i}, y_i) (xi,yi)的函数间隔为:
(3) γ i ^ = y i ( w ⃗ T x i ⃗ + b ) \hat{\gamma_i}=y_i(\vec{w}^T\vec{x_i} + b) \tag{3} γi^=yi(wTxi+b)(3)
定义超平面 w ⃗ T x ⃗ + b = 0 \vec{w}^T\vec{x} + b = 0 wTx+b=0关于训练数据集 T T T的函数间隔为:
(4) γ ^ = min − i = 1 , 2 , ⋯   , N y i ( w ⃗ T x i ⃗ + b ) \hat{\gamma}=\min-{i = 1, 2, \cdots, N}y_i(\vec{w}^T\vec{x_i} + b) \tag{4} γ^=min−i=1,2,⋯,Nyi(wTxi+b)(4)
注意到成比例地改变 w w w和 b b b不会改变超平面,比如改为 2 w 2w 2w和 2 b 2b 2b。但是这时的函数间隔变为了原来的2倍,显然这样的间隔用来衡量确信度是有问题的。自然想到的是对法向量 w w w施加一个约束,如 ∣ ∣ w ∣ ∣ = 1 ||w||=1 ∣∣w∣∣=1,这时函数间隔就成为了几何间隔(geomatric margin)
定义超平面 w ⃗ T x ⃗ + b = 0 \vec{w}^T\vec{x} + b = 0 wTx+b=0关于样本点 ( x i ⃗ , y i ) (\vec{x_i}, y_i) (xi,yi)的几何间隔为:
(5) γ i = y i ( w ⃗ T ∣ ∣ w ⃗ T ∣ ∣ x i ⃗ + b ∣ ∣ w ⃗ T ∣ ∣ ) \gamma_i=y_i(\frac{\vec{w}^T}{||\vec{w}^T||}\vec{x_i} + \frac{b}{||\vec{w}^T||}) \tag{5} γi=yi(∣∣wT∣∣wTxi+∣∣wT∣∣b)(5)
定义超平面 w ⃗ T x ⃗ + b = 0 \vec{w}^T\vec{x} + b = 0 wTx+b=0关于训练数据集 T T T的几何间隔为:
(6) γ = min i = 1 , 2 , ⋯   , N y i ( w ⃗ T ∣ ∣ w ⃗ T ∣ ∣ x i ⃗ + b ∣ ∣ w ⃗ T ∣ ∣ ) \gamma=\min_{i = 1, 2, \cdots, N}y_i(\frac{\vec{w}^T}{||\vec{w}^T||}\vec{x_i} + \frac{b}{||\vec{w}^T||}) \tag{6} γ=i=1,2,⋯,Nminyi(∣∣wT∣∣wTxi+∣∣wT∣∣b)(6)
可以发现两者只差了一个系数
1.1.2 求解最大间隔分离超平面
间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练数据进行分类。也就是说。不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开。这样的超平面应该对未知的新实例有很好的分类预测能力。
空间中超平面可记为 ( w ⃗ , b ) (\vec{w} ,b) (w,b),根据几何间隔的定义,最大间隔分离超平面可以表示为下面的约束最优化问题:
(7) { max w ⃗ , b γ s.t. y i ( w ⃗ T ∣ ∣ w ⃗ T ∣ ∣ x i ⃗ + b ∣ ∣ w ⃗ T ∣ ∣ ) ≥ γ , i = 1 , 2 , ⋯   , N \begin{cases} \max\limits_{\vec{w}, b} \quad \gamma \\ \text{ s.t.} \quad y_i(\frac{\vec{w}^T}{||\vec{w}^T||}\vec{x_i} + \frac{b}{||\vec{w}^T||}) \ge \gamma, \quad i = 1, 2, \cdots, N\tag{7} \end{cases} ⎩⎨⎧w,bmaxγ s.t.yi(∣∣wT∣∣wTxi+∣∣wT∣∣b)≥γ,i=1,2,⋯,N(7)
考虑到几何间隔与函数间隔的数学关系,上式可以改写为:
(8) { max w ⃗ , b γ ^ ∣ ∣ w ⃗ ∣ ∣ s.t. y i ( w ⃗ T x i ⃗ + b ) ≥ γ ^ , i = 1 , 2 , ⋯   , N \begin{cases} \max\limits_{\vec{w}, b} \quad \frac{\hat{\gamma}}{||\vec{w}||} \\ \text{ s.t.} \quad y_i(\vec{w}^T\vec{x_i} + b) \ge \hat{\gamma}, \quad i = 1, 2, \cdots, N\tag{8} \end{cases} ⎩⎨⎧w,bmax∣∣w∣∣γ^ s.t.yi(wTxi+b)≥γ^,i=1,2,⋯,N(8)
假设将 w ⃗ \vec{w} w和 b b b改变为 λ w ⃗ \lambda \vec{w} λw和 λ b \lambda b λb,这时函数间隔变为 λ w ⃗ \lambda \vec{w} λw。函数间隔的这一改变对上面最优化问题的不等式约束没有影响,对目标函数的最优化也没有影响。也就是说,函数间隔 γ ^ \hat{\gamma} γ^的取值并不影响最优化问题的解。因此我们可以令 γ ^ = 1 \hat{\gamma} = 1 γ^=1。于是最优化问题等价于:
(9) { max w ⃗ , b 1 ∣ ∣ w ⃗ ∣ ∣ s.t. y i ( w ⃗ T x i ⃗ + b ) ≥ 1 , i = 1 , 2 , ⋯   , N \begin{cases} \max\limits_{\vec{w}, b} \quad \frac{1}{||\vec{w}||} \\ \text{ s.t.} \quad y_i(\vec{w}^T\vec{x_i} + b) \ge 1, \quad i = 1, 2, \cdots, N\tag{9} \end{cases} ⎩⎨⎧w,bmax∣∣w∣∣1 s.t.yi(wTxi+b)≥1,i=1,2,⋯,N(9)
又注意到最大化 1 ∣ ∣ w ⃗ ∣ ∣ \frac{1}{||\vec{w}||} ∣∣w∣∣1与最小化 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 \frac{1}{2}{||\vec{w}||}^2 21∣∣w∣∣2等价,因此最优化问题等价于:
(10) { min w ⃗ , b 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 s.t. y i ( w ⃗ T x i ⃗ + b ) ≥ 1 , i = 1 , 2 , ⋯   , N \begin{cases} \min\limits_{\vec{w}, b} \quad \frac{1}{2}{||\vec{w}||}^2 \\ \text{ s.t.} \quad y_i(\vec{w}^T\vec{x_i} + b) \ge 1, \quad i = 1, 2, \cdots, N\tag{10} \end{cases} ⎩⎨⎧w,bmin21∣∣w∣∣2 s.t.yi(wTxi+b)≥1,i=1,2,⋯,N(10)
这是一个凸二次规划问题,求解该问题就可以得到最优分离超平面 ( w ⃗ ∗ , b ∗ ) (\vec{w}^* ,b^*) (w∗,b∗),可以证明当训练数据集线性可分时,这样的超平面存在且唯一。
1.1.2.1 伪代码
输入:线性可分训练数据集 T = { ( x 1 ⃗ , y 1 ) , ( x 2 ⃗ , y 2 ) , ⋯   , ( x N ⃗ , y N ) } T = \{(\vec{x_1},y_1),(\vec{x_2},y_2),\cdots,(\vec{x_N},y_N)\} T={ (x1,y1),(x2,y2),⋯,(xN,yN)},其中 x i ⃗ ∈ X = R n , y i ∈ Y = { + 1 , − 1 } , i = 1 , 2 , ⋯   , N \vec{x_i} \in \mathcal{X} = \mathbb{R}^n, \ y_i\in\mathcal{Y} = \{+1,−1\}, \ i = 1, 2, \cdots, N xi∈X=Rn, yi∈Y={ +1,−1}, i=1,2,⋯,N
输出:最大间隔分离超平面和分类决策函数
(1) 构造并求解约束最优化问题:
{ min w ⃗ , b 1 2 ∣ ∣ w ⃗ ∣ ∣ 2 s.t. y i ( w ⃗ T x i ⃗ + b ) ≥ 1 , i = 1 , 2 , ⋯   , N \begin{cases} \min\limits_{\vec{w}, b} \quad \frac{1}{2}{||\vec{w}||}^2 \\ \text{ s.t.} \quad y_i(\vec{w}^T\vec{x_i} + b) \ge 1, \quad i = 1, 2, \cdots, N \end{cases} ⎩⎨⎧w,bmin21∣∣w∣∣2 s.t.yi(wTxi+b)≥1,i=1,2,⋯,N
求得最优解 w ⃗ ∗ \vec{w}^* w∗、 b ∗ b^* b∗
(2) 由此得到分离超平面:
w ⃗ ∗ x ⃗ + b ∗ = 0 \vec{w}^*\vec{x} + b^* = 0 w∗x+b∗=0
分类决策函数:
f ( x ⃗ ) = s i g n ( w ⃗ ∗ x ⃗ + b ∗ ) f(\vec{x}) = sign(\vec{w}^*\vec{x} + b^*) f(x)=sign(w∗x+b∗)
1.1.3 支持向量和间隔边界
在线性可分的情况下,训练数据集中的样本点与分离超平面距离最近的样本点的实例称为支持向量,支持向量使得约束条件式(10)等号成立,对于正实例点,支持向量在超平面 H 1 : w ⃗ T x ⃗ + b = 1 H_1: \vec{w}^T\vec{x} + b = 1 H1:wTx+b=1上;对于负实例点,支持向量在超平面 H 1 : w ⃗ T x ⃗ + b = − 1 H_1: \vec{w}^T\vec{x} + b = -1 H1:wTx+b=−1上。如下图所示,三个圈起来的点就是支持向量。两个超平面 H 1 H_1 H1和 H 2 H_2 H2之间的距离称为间隔(margin),其大小只取决于分离超平面的法向量 w ⃗ T \vec{w}^T wT。 H 1 H_1 H1和 H 2 H_2 H2称为间隔边界。
在决定分离超平面时只有支持向量起作用,支持向量的个数一般很少,所以支持向量机由很少的“重要的”训练样本确定。
1.1.4 对偶算法
最优化问题(10)可以通过开源的优化计算包进行求解,但是这样就无法体现SVM的精髓,我们可以将该凸二次规划问题通过拉格朗日对偶性来解决。对于式(10)的每条约束添加拉格朗日乘子 α i ≥ 0 \alpha_i \ge 0 αi≥0,则该问题的拉格朗日函数可写为:
(11) L ( w ⃗ , b , α ⃗ ) = 1 2 ∥ w ⃗ ∥ 2 − ∑ i = 1 N α i ( y i ( w ⃗ T x i ⃗ + b ) − 1 ) L(\vec{w},b,\vec{\alpha})\ =\ \frac{1}{2}\rVert\vec{w}\rVert^2 - \sum_{i=1}^N \alpha_i( y_i(\vec{w}^T\vec{x_i} + b) - 1) \tag{11} L(w,b,α) = 21∥w∥2−i=1∑Nαi(yi(wTxi+b)−1)(11)
其中 α ⃗ = ( α 1 , α 2 , . . . , α N ) \vec{\alpha} = (\alpha_1,\alpha_2,...,\alpha_N) α=(α1,α2,...,αN)分别是对应着各个样本的拉格朗日乘子。根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:
max α ⃗ min w ⃗ , b L ( w ⃗ , b , α ⃗ ) \max\limits_{\vec{\alpha}} \min\limits_{\vec{w}, b} L(\vec{w}, b, \vec{\alpha}) αmaxw,bminL(w,b,α)
(1) 求 min w ⃗ , b L ( w ⃗ , b , α ⃗ ) \min\limits_{\vec{w}, b} L(\vec{w}, b, \vec{\alpha}) w,bminL(w,b,α)
将 L ( w ⃗ , b , α ⃗ ) L(\vec{w},b,\vec{\alpha}) L(w,b,α)对 w ⃗ \vec{w} w和 b b b求偏导并将偏导数等于零可得:
(12) w ⃗ = ∑ i = 1 n α i y i x i ⃗ \vec{w}\ =\ \sum_{i=1}^n \alpha_i y_i \vec{x_i} \tag{12} w = i=1