文章目录
相关文章:
支持向量机
支持向量机(Support Vector Machines, SVM)
:是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大化的线性分类器,间隔最大化使它有别于感知器;支持向量机还包括核技巧(通过非线性函数转换为线性模型),这使它成为实质上的非线性分类器。
支持向量机的学习策略就是间隔最大化,可以形式化为一个求解凸二次规划(convex quadratic programming)的问题,也等价于正则化的合页损失函数最小化问题,支持向量机的学习算法是求解凸二次规划的最优算法。[1]
按训练数据分线性可分程度,支持向量机的分类以及对应采取的算法如下:
-
线性可分支持向量机
:硬间隔最大化(线性可分) -
线性支持向量机
:软间隔最大化(近似线性可分) -
非线性支持向量机
:核技巧+软间隔最大化(线性不可分)
线性可分支持向量机可以看作是线性支持向量机的一个特例;非线性支持向量机则通过核函数将线性不可分数据转换为线性可分数据,从而转换为线性支持向量机。
间隔最大化:按间隔中是否能出现样本点,分为硬间隔最大化和软间隔最大化。硬间隔最大化中不允许有样本点出现,因此适合于数据线性可分的情况;软间隔最大化中允许有少量样本点出现,适合于含有噪声的线性可分数据(称为近似线性可分)。
本文将按照上述思路介绍前两类类支持向量机,而非线性支持向量机和核函数在下一篇中再介绍。
1. 线性可分支持向量机
线性可分支持向量机(linear support vector machine in linearly separable case)与硬间隔最大化(hard margin maximization)
首先我们来看一个线性可分的例子,给定训练样本 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } , y i ∈ { − 1 , + 1 } D=\left\{\left(\boldsymbol{x}_{1}, y_{1}\right),\left(\boldsymbol{x}_{2}, y_{2}\right), \ldots,\left(\boldsymbol{x}_{m}, y_{m}\right)\right\}, y_{i} \in\{-1,+1\} D={ (x1,y1),(x2,y2),…,(xm,ym)},yi∈{ −1,+1},分类学习最基本的想法就是基于训练集 D D D 在样本空间中找到一个划分超平面,将不同类别的样本分开,但能将训练样本分开的划分超平面可能有很多,如下图所示:

直观上,应该去找位于两类训练样本“正中间”的划分超平面,因为该划分超平面对训练样本局部扰动的“容忍”性最好。例如,由于训练集的局限性或噪声的影响,训练集外的样本可能比图 1 中的训练样本更接近两个类的分隔届,这将使许多划分超平面出现错误,而红色的超平面受影响最小。换而言之,这个划分超平面所产生的分类结果鲁棒性是最好的,对预测数据的泛化能力也是最强的。
在样本空间中,划分超平面可通过如下线性方程来描述:
(1) w T x + b = 0 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b=0 \tag{1} wTx+b=0(1)
其中 w = ( w 1 ; w 2 ; …   ; w d ) \boldsymbol{w}=\left(w_{1} ; w_{2} ; \dots ; w_{d}\right) w=(w1;w2;…;wd) 为法向量,决定了超平面的方向; b b b 为位移项,决定了超平面与原点之间的距离。因此划分超平面可以唯一的被法向量 w \boldsymbol{w} w 和位移项 b b b 确定,我们将这个超平面记为 ( w , b ) (\boldsymbol{w},b) (w,b)。
样本空间中任意点 x \boldsymbol{x} x 到超平面 ( w , b ) (\boldsymbol{w},b) (w,b) 的距离可以写为:
(2) r = ∣ w T x + b ∣ ∥ w ∥ r=\frac{\left|\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b\right|}{\|\boldsymbol{w}\|}\tag{2} r=∥w∥∣∣wTx+b∣∣(2)
假设超平面 ( w , b ) (\boldsymbol{w},b) (w,b) 能将训练样本正确分类,即对于 ( x i , y i ) ∈ D \left(\boldsymbol{x}_{i}, y_{i}\right) \in D (xi,yi)∈D,若 y i = + 1 y_i=+1 yi=+1,则有 w T x i + b > 0 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b>0 wTxi+b>0;若 y i = − 1 y_i=-1 yi=−1,则有 w T x i + b < 0 \boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b<0 wTxi+b<0,如下:
(3) { w T x i + b ⩾ + 1 , y i = + 1 w T x i + b ⩽ − 1 , y i = − 1 \left\{\begin{array}{ll}{\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b \geqslant+1,} & {y_{i}=+1} \\ {\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b \leqslant-1,} & {y_{i}=-1}\end{array}\right. \tag{3} { wTxi+b⩾+1,wTxi+b⩽−1,yi=+1yi=−1(3)
如图 2 所示,距离超平面最近的这几个训练样本点使公式 (3) 的等号成立,它们被称为“支持向量
”(support vector),两个异类向量到超平面的距离之和为:
(4) γ = 2 ∥ w ∥ \gamma=\frac{2}{\|\boldsymbol{w}\|}\tag{4} γ=∥w∥2(4)
它被称为间隔
(margin)。

1.1 间隔计算公式推导
首先,设 W = ( w 1 , w 2 ) , x = ( x 1 , x 2 ) W=\left(w_{1}, w_{2}\right), x=\left(x_{1}, x_{2}\right) W=(w1,w2),x=(x1,x2),并且 W x = w 1 x 1 + w 2 x 2 W x=w_{1} x_{1}+w_{2} x_{2} Wx=w1x1+w2x2。
假设我们有三条直线:
∙ W x + b = 1 ∙ W x + b = 0 ∙ W x + b = − 1 \begin{array}{l}{\bullet W x+b=1} \\ {\bullet W x+b=0} \\ {\bullet W x+b=-1}\end{array} ∙Wx+b=1∙Wx+b=0∙Wx+b=−1
其中第二条为超平面的表达式,第一条和第三条为边界的表达式。由于这三条线为等距平行线,因此想要确定间隔(两条边界的距离),只需要计算边界与超平面之间的距离,并乘 2 就得到了间隔。
下面上边界到超平面的距离:

由于移动直线并不改边之间的距离,因此可以将超平面移动到与原点相交,此时直线方程变为:
∙ W x = 1 ∙ W x = 0 \begin{array}{l}{\bullet W x=1} \\ {\bullet W x=0}\end{array} ∙Wx=1∙Wx=0
现在,超平面的直线表达式为 W x = 0 W x=0 Wx=0,因此其法向量为 W = ( w 1 , w 2 ) W=\left(w_{1}, w_{2}\right) W=(w1,w2)。

法向量 W W W 与边界相交于蓝点,假设该点的坐标为 ( p , q ) (p, q) (p,q),由于该点位于法向量 W = ( w 1 , w 2 ) W=\left(w_{1}, w_{2}\right) W=(w1,w2) 上,所以 ( p , q ) (p,q) (p,q) 是 ( w 1 , w 2 ) (w_1,w_2) (w1,w2) 的倍数,即:
∙ ( p , q ) = k ( w 1 , w 2 ) \bullet (p,q)= k(w_1,w_2) ∙(p,q)=k(w1,w2)
将点 ( p , q ) (p,q) (p,q) 代入边界方程 W x = 1 Wx=1 Wx=1 有:
W x ⇒ ( w 1 , w 2 ) ( x 1 , x 2 ) T ⇒ ( w 1 , w 2 ) ( p , q ) T ⇒ ( w 1 , w 2 ) k ( w 1 , w 2 ) T ⇒ k ( w 1 2 + w 2 2 ) = 1 \begin{aligned} &\quad\quad W x \\ & \Rightarrow (w_1,w_2) (x_1,x_2)^T\\ & \Rightarrow (w_1,w_2) (p,q)^T\\ & \Rightarrow (w_1,w_2) k(w_1,w_2)^T\\ & \Rightarrow k(w_1^2+w_2^2)=1\\ \end{aligned} Wx⇒(w1,w2)(x1,x2)T⇒(w1,w2)(p,q)T⇒(w1,w2)k(w1,w2)T⇒k(w12+w22)=1
因此 k = 1 w 1 2 + w 2 2 = 1 ∣ W ∣ 2 k=\frac{1}{w_{1}^{2}+w_{2}^{2}}=\frac{1}{|W|^{2}} k=w12+w221=∣W∣21,所以蓝点坐标可化为:
( p , q ) = k ( w 1 , w 2 ) = k W = 1 ∣ W ∣ 2 W = W ∣ W ∣ 2 \begin{aligned} (p,q)&= k(w_1,w_2)\\ &=kW \\ &=\frac{1}{|W|^{2}}W\\ &=\frac{W}{|W|^{2}} \end{aligned} (p,q)=k(w1,w2)=kW=∣W∣21W=∣W∣2W
现在,两条直线之间的距离是蓝色向量的范数,由于分母是一个标量,向量 W ∣ W ∣ 2 \frac{W}{|W|^{2}} ∣W∣2W 的范数正是 ∣ W ∣ ∣ W ∣ 2 \frac{|W|}{|W|^{2}} ∣W∣2∣W∣,即 1 ∣ W ∣ \frac{1}{|W|} ∣W∣1,如下图所示:

最后,最终的间隔为两倍距离,即:
γ = 2 ∣ w ∣ \gamma=\frac{2}{|\boldsymbol{w}|} γ=∣w∣2
1.2 硬间隔最大化
支持向量机学习的基本想法是求解能够正确划分训练数据集并且间隔最大化的分离超平面。对于线性可分的训练数据集而言,线性可分的分离超平面有无数个,但是间隔最大的分离超平面是唯一的。
这里的间隔最大化又称为硬间隔最大化
,间隔最大化的直观解释是:对训练数据集找到间隔最大的超平面以为着以充分大的确信度对训练数据进行分类,也就是说,不仅将正负实例点分开,而且最最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开。这样的超平面应该对未知的新实例有很好的分类预测能力。
求解硬间隔最大化下的超平面可以分为一下几步:
-
将间隔最大化问题化为其倒数的最小化问题(为了应用拉格朗日对偶性求解最小化规划问题的解),我们将这个最小化问题称为原始问题,相应的算法1.1称为最大间隔法;
-
利用拉格朗日对偶性将原始问题转换为拉格朗日函数,分两步求解得到算法1.1的最优解,我们将这个算法称为对偶算法;最后利用最优解代入公式可以得到分离超平面以及分离决策函数的方程式。
下面我将详细的介绍这两个步骤。
1.2.1 原始问题
由1.1可知,间隔的计算公式为 γ = 2 ∥ w ∥ \gamma=\frac{2}{\|\boldsymbol{w}\|} γ=∥w∥2,因此最大化间隔 2 ∥ w ∥ \frac{2}{\|\boldsymbol{w}\|} ∥w∥2 相当于最小化 1 2 ∥ w ∥ 2 \frac{1}{2}\|w\|^2 21∥w∥2,于是就得到下面的线性可分支持向量学习的最优化问题:
算法1.1 线性可分支持向量机学习方法——最大间隔法
输入:线性可分训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \cdots,\left(x_{N}, y_{N}\right)\right\} T={ (x1,y1),(x2,y2),⋯,(xN,yN)},其中, x i ∈ X = R n x_i \in X=R^n xi∈X=Rn, y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , ⋯   , N y_{i} \in \mathcal{Y}=\{-1,+1\}, \quad i=1,2, \cdots, N yi∈Y={ −1,+1},i=1,2,⋯,N;
输出:最大间隔分离超平面和分类决策函数。
(1) 构造并求解月时最优化问题:
(5) min w , b 1 2 ∥ w ∥ 2 s.t. y i ( w ⋅ x i + b ) − 1 ⩾ 0 , i = 1 , 2 , ⋯   , N \begin{array}{ll}{\min \limits_{w, b}} & {\frac{1}{2}\|w\|^{2}} \tag{5}\\ {\text { s.t. }} & {y_{i}\left(w \cdot x_{i}+b\right)-1 \geqslant 0, \quad i=1,2, \cdots, N}\end{array} w,bmin s.t. 21∥w∥2yi(w⋅xi+b)−1⩾0,i=1,2,⋯,N(5)
求得最优解 w ∗ , b ∗ w^{*}, b^{*} w∗,b∗。
(2)由此得到分离超平面:
(6) w ∗ ⋅ x + b ∗ = 0 w^{*} \cdot x+b^{*}=0\tag{6} w∗⋅x+b∗=0(6)
分离决策函数:
(7) f ( x ) = sign ( w ∗ ⋅ x + b ∗ ) f(x)=\operatorname{sign}\left(w^{*} \cdot x+b^{*}\right)\tag{7} f(x)=sign(w∗⋅x+b∗)(7)
例 1.1
已知一个如图 6 所示的训练数据集,其正例点是 x 1 = ( 3 , 3 ) T , x 2 = ( 4 , 3 ) T x_1=(3,3)^T, x_2=(4,3)^T x1=(3,3)T,x2=(4,3)T,负例点是 x 3 = ( 1 , 1 ) T x_3=(1,1)^T x3=(1,1)T ,试求最大间隔分离超平面。

按照算法1.1,根据训练数据集构造约束最优化问题:
min x , b 1 2 ( w 1 2 + w 2 2 ) s.t. 3 w 1 + 3 w 2 + b ⩾ 1 4 w 1 + 3 w 2 + b ⩾ 1 − w 1 − w 2 − b ⩾ 1 \begin{array}{cl} {\min \limits_{x, b}} & {\frac{1}{2}\left(w_{1}^{2}+w_{2}^{2}\right)} \\ {\text { s.t. }} & {3 w_{1}+3 w_{2}+b \geqslant 1} \\ {} & {4 w_{1}+3 w_{2}+b \geqslant 1} \\ {} & {-w_{1}-w_{2}-b \geqslant 1} \end{array} x,bmin s.t. 21(w12+w22)3w1+3w2+b⩾14w1+3w2+b⩾1−w1−w2−b⩾1
求得此最优化问题的解 w 1 = w 2 = 1 2 , b = − 2 w_1=w_2=\frac{1}{2}, b=-2 w1=w2=21,b=−2,于是最大间隔分离超平面为:
1 2 x ( 1 ) + 1 2 x ( 2 ) − 2 = 0 \frac{1}{2}x^{(1)}+\frac{1}{2}x^{(2)}-2=0 21x(1)+21x(2)−2=0
其中, x 1 = ( 3 , 3 ) T x_1=(3,3)^T x1=(3,3)T与 x 2 = ( 1 , 1 ) T x_2=(1,1)^T x2=(1,1)T 为支持向量。
1.2.2 对偶算法
为了求得算法1.1 的最优化约束条件下的解 w ∗ , b ∗ w^{*}, b^{*} w∗,b∗,我们将它作为原始最优化问题,利用拉格朗日对偶性,通过求对偶问题(dual problem)得到原始问题(primal problem)的最优解,这就是线性可分支持向量机的对偶算法。
首先建立拉格朗日函数(Lagrange function),为此,对不等式约束条件
(8) y i ( w ⋅ x i + b ) − 1 ⩾ 0 , i = 1 , 2 , ⋯   , N y_{i}\left(w \cdot x_{i}+b\right)-1 \geqslant 0, \quad i=1,2, \cdots, N\tag{8} yi(