分类任务的基本思想是在给定的数据集上用一个超平面 w T x + b = 0 w^{T}x+b=0 wTx+b=0将数据集分为两类,显然在一个线性可分的数据集上,能够做到这种效果的超平面有很多,如下图:
支持向量机的思想
支持向量机(SVM)的目的就是在上述诸多超平面中找到一条泛化能力最好的,即离正负样本距离间隔最大的那一个超平面,如图1.2中的那一条黑线就是满足条件的,它对于新的样本点的抗干扰能力是最强的,在图1.1中其他超平面在识别处于正负样本分界线之内的新样本时错误率都会非常高
数学原理
3.1 超平面的分类数学原理
在超平面的表达式 w T x + b = 0 w^{T}x+b=0 wTx+b=0中, w = ( w 1 ; w 2 ; . . . ; w d ) w=(w_{1};w_{2};...;w_{d}) w=(w1;w2;...;wd)是超平面的法向量,它所决定是超平面的方向, b b b是偏置项,决定了超平面和原点之间的距离,所以 w 和 b w和b w和b两个参数可以确定一个超平面,而设样本点到超平面的距离 r = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ r=\frac{|w^{T}x+b|}{||w||} r=∣∣w∣∣∣wTx+b∣
所以给定一个样本( x i , y i x_{i},y_{i} xi,yi),当一个超平面可以将样本正确分类时,有
{ w T x + b ≥ + 1 , y i = + 1 ; w T x + b ≤ + 1 , y i = − 1 \begin{cases} & \text w^{T}x+b\ge +1, y_{i}=+1;\\ & \text w^{T}x+b\le +1, y_{i}=-1 \end{cases} {wTx+b≥+1,yi=+1;wTx+b≤+1,yi=−1
3.2 支持向量机的数学原理
根据支持向量机的定义,要找到一个最大间隔的划分超平面,等价于求解能让 γ 最大的参数 w 和 b \gamma最大的参数w和b γ最大的参数w和b,即
max w , b 2 ∣ ∣ w ∣ ∣ s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . , m \begin{align*} \\\max_{w,b}\frac{2}{||w||} \\s.t. y_{i}\left ( w^{T}x_{i}+b\right) \ge 1,i=1,2,..,m \end{align*} w,bmax∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,..,m
为了求解方便,上式等价于最小化 ∣ ∣ w ∣ ∣ 2 ||w||^{2} ∣∣w∣∣2,即等价于
min w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . , m \begin{align*} \\\min_{w,b}\frac{1}{2}||w||^{2} \\s.t. y_{i}\left ( w^{T}x_{i}+b\right) \ge 1,i=1,2,..,m \end{align*} w,bmin21∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,..,m
上式便是SVM的数学表达,显然它是一个二次凸优化问题
本节主要讲述求解能够使 γ 最大的 w 和 b \gamma最大的w和b γ最大的w和b,使用的方法是拉格朗日算子法,能够得到SVM数学表达的对偶问题,即给每个约束条件增加一个拉格朗日乘子 α i ≥ 0 \alpha_{i}\ge0 αi≥0,所以根据SVM数学表示得到 L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) L(w,b,\alpha)=\frac{1}{2}||w||^{2}+\sum_{i=1}^{m}\alpha _{i}\left ( 1-y_{i}\left ( w^{T}x_{i+b} \right ) \right ) L(w,b,α)=21∣∣w∣∣2+∑i=1mαi(1−yi(wTxi+b))
然后 L L L函数对 w 和 b w和b w和b求偏导,可得到
w = ∑ i = 1 m α i y i x i w=\sum_{i=1}^{m} \alpha_{i}y_{i}x_{i} w=∑i=1mαiyixi
0 = ∑ i = 1 m α i y i 0=\sum_{i=1}^{m}\alpha_{i}y_{i} 0=∑i=1mαiyi
(详细计算结果见南瓜书对应章节)
将计算得到的 w 和 b 代入到 L w和b代入到L w和b代入到L中就可以得到SVM数学表达的对偶问题
max α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j \max _{\boldsymbol{\alpha}} \sum_{i=1}^{m} \alpha_{i}-\frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j} αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxj
s.t. ∑ i = 1 m α i y i = 0 α i ⩾ 0 , i = 1 , 2 , … , m \begin{array}{ll} \text { s.t. } & \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ & \alpha_{i} \geqslant 0, \quad i=1,2, \ldots, m \end{array} s.t. ∑i=1mαiyi=0αi⩾0,i=1,2,…,m
显然,上述对偶问题的本质是一个二次规划问题,现在有很多高效的算法,比如SMO算法(详细介绍可见西瓜书p124)可以来解决二次规划问题,可以根据上述公式求得
f ( x ) = w T x + b = ∑ i = 1 m α i y i x i T x + b \begin{aligned} f(\boldsymbol{x}) &=\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b \\ &=\sum_{i=1}^{m} \alpha_{i} y_{i} \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}+b \end{aligned} f(x)=wTx+b=i=1∑mαiyixiTx+b
在2.1中所求解得到的 α i \alpha_{i} αi就是SVM原型中样本( x i , y i x_{i},y_{i} xi,yi)的拉格朗日乘子,而且由于原式中有不等式的约束条件,所以在求解上述对偶问题时要遵循KTT 条件,即要满足如下不等式
{ α i ⩾ 0 y i f ( x i ) − 1 ⩾ 0 α i ( y i f ( x i ) − 1 ) = 0 … \left\{\begin{array}{l} \alpha_{i} \geqslant 0 \\ y_{i} f\left(\boldsymbol{x}_{i}\right)-1 \geqslant 0 \\ \alpha_{i}\left(y_{i} f\left(\boldsymbol{x}_{i}\right)-1\right)=0 \ldots \end{array}\right. ⎩ ⎨ ⎧αi⩾0yif(xi)−1⩾0αi(yif(xi)−1)=0…
所以根据上式能够看出SVM的一个性质,即在训练完毕之后,只需要保留支持向量就行,因为最早的模型只和支持向量有关系
核函数 κ ( ⋅ , ⋅ ) \kappa \left ( \cdot , \cdot \right ) κ(⋅,⋅)的作用概括来说就是能够将低维的非线性可分的数据集变为高维的线性可分的数据集,如下图
符号定义
ϕ ( x ) \phi(x) ϕ(x) : x x x映射之后的特征向量
κ ( ⋅ , ⋅ ) \kappa \left ( \cdot , \cdot \right ) κ(⋅,⋅):核函数的数学定义
f ( x ) = w T ϕ ( x ) + b f(x)=w^{T}\phi(x)+b f(x)=wTϕ(x)+b:在映射空间的超平面模型表达
计算过程
第一步:首先将SVM原型改写为
min w , b 1 2 ∥ w ∥ 2 s.t. y i ( w T ϕ ( x i ) + b ) ⩾ 1 , i = 1 , 2 , … , m \begin{aligned} \min _{w, b} & \frac{1}{2}\|w\|^{2} \\ \text { s.t. } & y_{i}\left(w^{\mathrm{T}} \phi\left(x_{i}\right)+b\right) \geqslant 1, \quad i=1,2, \ldots, m \end{aligned} w,bmin s.t. 21∥w∥2yi(wTϕ(xi)+b)⩾1,i=1,2,…,m
则能够得到对偶问题
max ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ϕ ( x i ) T ϕ ( x j ) \operatorname{max} \sum_{i=1}^{m} \alpha_{i}-\frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \phi\left(x_{i}\right)^{\mathrm{T}} \phi\left(x_{j}\right) max∑i=1mαi−21∑i=1m∑j=1mαiαjyiyjϕ(xi)Tϕ(xj)
s.t. ∑ i = 1 m α i y i = 0 α i ⩾ 0 , i = 1 , 2 , … , m \begin{array}{ll} \text { s.t. } & \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ & \alpha_{i} \geqslant 0, \quad i=1,2, \ldots, m \end{array} s.t. ∑i=1mαiyi=0αi⩾0,i=1,2,…,m
第二步:使用核函数来对公式进行改写,(即 κ ( x i , x j ) = ⟨ ϕ ( x i ) , ϕ ( x j ) ⟩ = ϕ ( x i ) T ϕ ( x j ) \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\left\langle\phi\left(\boldsymbol{x}_{i}\right), \phi\left(\boldsymbol{x}_{j}\right)\right\rangle=\phi\left(\boldsymbol{x}_{i}\right)^{\mathrm{T}} \phi\left(\boldsymbol{x}_{j}\right) κ(xi,xj)=⟨ϕ(xi),ϕ(xj)⟩=ϕ(xi)Tϕ(xj)),可以得到如下改写:
max α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j κ ( x i , x j ) s . t . ∑ i = 1 m α i y i = 0 α i ⩾ 0 , i = 1 , 2 , … , m . \max _{\boldsymbol{\alpha}} \sum_{i=1}^{m} \alpha_{i}-\frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right) s.t. \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ \alpha_{i} \geqslant 0, \quad i=1,2, \ldots, m \text {. } αmaxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjκ(xi,xj)s.t.i=1∑mαiyi=0αi⩾0,i=1,2,…,m.
第三步:计算最终结果,可得
f ( x ) = w T ϕ ( x ) + b = ∑ i = 1 m α i y i ϕ ( x i ) T ϕ ( x ) + b = ∑ i = 1 m α i y i κ ( x , x i ) + b \begin{aligned} f(\boldsymbol{x}) &=\boldsymbol{w}^{\mathrm{T}} \phi(\boldsymbol{x})+b \\ &=\sum_{i=1}^{m} \alpha_{i} y_{i} \phi\left(\boldsymbol{x}_{i}\right)^{\mathrm{T}} \phi(\boldsymbol{x})+b \\ &=\sum_{i=1}^{m} \alpha_{i} y_{i} \kappa\left(\boldsymbol{x}, \boldsymbol{x}_{i}\right)+b \end{aligned} f(x)=wTϕ(x)+b=i=1∑mαiyiϕ(xi)Tϕ(x)+b=i=1∑mαiyiκ(x,xi)+b
在进行映射的过程中,选择合适的核函数是非常重要的,下面是常用的一些核函数
名称 | 表达式 | 参数 |
---|---|---|
线性核 | κ ( x i , x j ) = x i T x j \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j} κ(xi,xj)=xiTxj | |
多项式核 | κ ( x i , x j ) = ( x i T x j ) d \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\left(\boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j}\right)^{d} κ(xi,xj)=(xiTxj)d | d ≥ 1 d\ge1 d≥1为多项式的次数 |
高斯核 | κ ( x i , x j ) = exp ( − ∣ x i − x j ∣ 2 2 σ 2 ) \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\exp \left(-\frac{\left|\boldsymbol{x}_{i}-\boldsymbol{x}_{j}\right|^{2}}{2 \sigma^{2}}\right) κ(xi,xj)=exp(−2σ2∣xi−xj∣2) | σ > 0 \sigma>0 σ>0为高斯核的带宽 |
拉普拉斯核 | κ ( x i , x j ) = exp ( − ∣ x i − x j ∣ σ ) \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\exp \left(-\frac{\left|\boldsymbol{x}_{i}-\boldsymbol{x}_{j}\right|}{\sigma}\right) κ(xi,xj)=exp(−σ∣xi−xj∣) | σ > 0 \sigma>0 σ>0 |
Sigmoid核 | κ ( x i , x j ) = tanh ( β x i T x j + θ ) \kappa\left(\boldsymbol{x}_{i}, \boldsymbol{x}_{j}\right)=\tanh \left(\beta \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j}+\theta\right) κ(xi,xj)=tanh(βxiTxj+θ) | tanh为双曲正切函数, β > 0 \beta>0 β>0, θ < 0 \theta<0 θ<0 |
除了上述列出的核函数之外,还可以对两个或者更多的核函数进行几何变换得到新的核函数
迄今为止我们所讨论的都是理想情况下,存在一个超平面可以将样本集完美的划分开,但是在实际生活中往往不存在如何完美的数据集,所以应该允许一些错误的出现,否则即使存在一个超平面对数据集进行了完美的划分,也可能是过拟合导致的,泛化能力依旧有问题,于是规定了软间隔的概念
与前面的硬间隔相对应,软间隔允许若干样本可以不满足硬间隔中的约束条件,但是这样的样本在最大化的过程中是要控制在一定数量之中的,所以原本SVM的数学模型可以改写为
min w , b 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ℓ 0 / 1 ( y i ( w T x i + b ) − 1 ) \min _{\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum_{i=1}^{m} \ell_{0 / 1}\left(y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right)-1\right) w,bmin21∥w∥2+Ci=1∑mℓ0/1(yi(wTxi+b)−1)
ℓ 0 / 1 \ell_{0 / 1} ℓ0/1是损失函数,其表达式为
ℓ 0 / 1 ( z ) = { 1 , if z < 0 0 , otherwise \ell_{0 / 1}(z)=\left\{\begin{array}{ll} 1, & \text { if } z<0 \\ 0, & \text { otherwise } \end{array}\right. ℓ0/1(z)={1,0, if z<0 otherwise
所以根据上式中能够看出,C越大,由于整个式子要趋于最小化,所以损失函数这一项就必须越小,相当于要求所以样本都满足SVM原式中的约束条件,反之,C为一个合适的取值时,就允许若干样本不满足约束
由于4.1中使用的0/1损失函数的数学性质并不好,所以通常使用一些连续的凸函数且取值都是0/1损失函数的上界,下表是常用的替代损失函数
名称 | 表达式 |
---|---|
hinge损失函数 | ℓ hinge ( z ) = max ( 0 , 1 − z ) \ell_{\text {hinge }}(z)=\max (0,1-z) ℓhinge (z)=max(0,1−z) |
指数损失 | ℓ e x p ( z ) = exp ( − z ) \ell_{e x p}(z)=\exp (-z) ℓexp(z)=exp(−z) |
对率损失 | ℓ log ( z ) = log ( 1 + exp ( − z ) ) \ell_{\log }(z)=\log (1+\exp (-z)) ℓlog(z)=log(1+exp(−z)) |
在引入新的损失函数之后,定义松弛变量 ξ i ≥ 0 \xi _{i}\ge 0 ξi≥0,则可以得到如下公式,这个公式也是软间隔SVM的表达式
min w , b , ξ i 1 2 ∥ w ∥ 2 + C ∑ i = 1 m ξ i \min _{\boldsymbol{w}, b, \xi_{i}} \frac{1}{2}\|\boldsymbol{w}\|^{2}+C \sum_{i=1}^{m} \xi_{i} minw,b,ξi21∥w∥2+C∑i=1mξi
s.t. y i ( w T x i + b ) ⩾ 1 − ξ i ξ i ⩾ 0 , i = 1 , 2 , … , m . \begin{array}{ll} \text { s.t. } & y_{i}\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}_{i}+b\right) \geqslant 1-\xi_{i} \\ & \xi_{i} \geqslant 0, i=1,2, \ldots, m . \end{array} s.t. yi(wTxi+b)⩾1−ξiξi⩾0,i=1,2,…,m.
则可以得到软间隔SVM的对偶问题:
max α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j s.t. ∑ i = 1 m α i y i = 0 0 ⩽ α i ⩽ C , i = 1 , 2 , … , m \begin{aligned} \max _{\boldsymbol{\alpha}} & \sum_{i=1}^{m} \alpha_{i}-\frac{1}{2} \sum_{i=1}^{m} \sum_{j=1}^{m} \alpha_{i} \alpha_{j} y_{i} y_{j} \boldsymbol{x}_{i}^{\mathrm{T}} \boldsymbol{x}_{j} \\ \text { s.t. } & \sum_{i=1}^{m} \alpha_{i} y_{i}=0 \\ & 0 \leqslant \alpha_{i} \leqslant C, \quad i=1,2, \ldots, m \end{aligned} αmax s.t. i=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxji=1∑mαiyi=00⩽αi⩽C,i=1,2,…,m
且上式要满足的KTT 条件为
{ α i ⩾ 0 , μ i ⩾ 0 y i f ( x i ) − 1 + ξ i ⩾ 0 α i ( y i f ( x i ) − 1 + ξ i ) = 0 ξ i ⩾ 0 , μ i ξ i = 0 \left\{\begin{array}{l} \alpha_{i} \geqslant 0, \quad \mu_{i} \geqslant 0 \\ y_{i} f\left(\boldsymbol{x}_{i}\right)-1+\xi_{i} \geqslant 0 \\ \alpha_{i}\left(y_{i} f\left(\boldsymbol{x}_{i}\right)-1+\xi_{i}\right)=0 \\ \xi_{i} \geqslant 0, \mu_{i} \xi_{i}=0 \end{array}\right. ⎩ ⎨ ⎧αi⩾0,μi⩾0yif(xi)−1+ξi⩾0αi(yif(xi)−1+ξi)=0ξi⩾0,μiξi=0
支持向量回归简称SVR,是SVM在回归问题的一种运用,主要目的是学到一个类似于在分类问题中的 w T x + b = 0 w^{T}x+b=0 wTx+b=0的模型,如下图
在上图中,如果训练样本落入到间隔带中,那就是预测正确,这就是SVR的基本思想,具体的计算思想和支持向量机是类似的,都是根据拉格朗日算子法将问题转换为对偶问题,在KTT 条件约束下进行计算求得模型,具体计算过程见西瓜书p135
核方法的基本概念就是指一系列的基于核函数的学习方法,其最基本也是使用最广泛的就是前面几章提到的用核函数将非线性数据集转换为线性可分的数据集,西瓜书上的本节主要是介绍了一种利用核函数将线性分类器转换为非线性分类器的方法,详细推导过程见西瓜书p139,这里不赘述