SVR——一种“宽容的回归模型”

严格的线性回归

线性回归:在向量空间里用线性函数去拟合样本。该模型以所有样本实际位置到该线性函数的综合距离为损失,通过最小化损失来求取线性函数的参数。对于线性回归而言,一个样本只要不算正好落在作为模型的线性函数上,就要被计算损失。

宽容的支持向量回归(SVR)

介绍一种“宽容的”回归模型:支持向量回归(Support Vector Regression,SVR)

模型函数

支持向量回归模型的模型函数也是一个线性函数:y=wx+by=wx+b但是和线性回归是两个不同的回归模型!
不同点在于:计算损失的原则不同,目标函数和最优化算法也不同

原理

SVR在线性函数两侧制造了一个“间隔带”,对于所有落入到间隔带内的样本,都不计算损失;只有间隔带之外的,才计入损失函数。之后再通过最小化间隔带的宽度与总损失来最优化模型。如下图这样,只有那些圈了红圈的样本(或在隔离带边缘之外,或落在隔离带边缘上),才被计入最后的损失:
(系列笔记)13.SVR模型

SVR的两个松弛变量

有一点和SVM是正好相反的:SVR希望样本点都落在“隔离带”内,而SVM希望样本点都在“隔离带”外。这导致SVR要同时引入两个松弛变量:ξ\xiξ\xi^*
(系列笔记)13.SVR模型
上图显示了SVR的基本情况:

  1. f(x)=wx+bf(x)=wx+b是我们最终要求得的模型函数;
  2. wx+b+ϵwx+b+\epsilonwx+bϵwx+b-\epsilon(也就是f(x)+ϵf(x)+\epsilonf(x)ϵf(x)-\epsilon)是隔离带的上下边缘;
  3. ξ\xi^*是隔离带下边缘之下样本点,到隔离带下边缘上的投影,与该样本点yy值的差。

公式表述:
(系列笔记)13.SVR模型
对于任意样本xix_i,如果它在隔离带里面或者隔离带边缘上,则ξ\xiξ\xi^*都为0;如果它在隔离带上边缘上方,则ξ>0\xi>0 , ξ\xi^*=0;如果它在隔离带下边缘下方,则ξ=0\xi=0 , ξ0\xi^*0

SVR的主问题和对偶问题

SVR主问题的数学描述

(系列笔记)13.SVR模型

SVR的拉格朗日函数和对偶问题

我们针对上述主问题引入拉格朗日乘子:
(系列笔记)13.SVR模型
构建拉格朗日函数:
(系列笔记)13.SVR模型
它对应的对偶问题是:
(系列笔记)13.SVR模型

求解SVR对偶问题

按照前面讲的方法,首先要求最小化部分:
(系列笔记)13.SVR模型
然后分别对w,b,ξiξiw,b,\xi_i,\xi_i^*求偏导,并令偏导为0:
(系列笔记)13.SVR模型

用SMO算法求解SVR

使用SMO算法前,还需将αi\alpha_iαi\alpha_i^*转化为一个参数,因为SMO算法针对的是任意样本xix_i只对应一个参数αi\alpha_i的情况。

过程采用拉格朗日对偶法,对偶问题有解的充要条件是满足KKT条件,对于SVR的对偶问题,其KKT条件如下:
(系列笔记)13.SVR模型
由KKT条件可见,当且仅当f(xi)yiϵξi=0f(x_i)-y_i-\epsilon-\xi_i=0时,αi\alpha_i才可以取非0值,当且仅当
yif(xi)ϵξi=0y_i-f(x_i)-\epsilon-\xi_i^*=0αi\alpha_i^*才可以取非0值。

f(xi)yiϵξi=0=>yi=f(xi)ϵξif(x_i)-y_i-\epsilon-\xi_i=0=>y_i=f(x_i)-\epsilon-\xi_i对应的是在隔离带下边缘以下的样本;
yif(xi)ϵξi=0=>yi=f(xi)+ϵ+ξiy_i-f(x_i)-\epsilon-\xi_i^*=0=>y_i=f(x_i)+\epsilon+\xi_i^*对应的是在隔离带上边缘以上的样本。

一个样本不可能同时在上边缘上和上边缘下,所以这两个等式只有体格而成立,所以相应的αi\alpha_iαi\alpha_i^*中至少有一个为0。

假设:λi=αiαi\lambda_i=\alpha_i-\alpha_i^*
既然αi\alpha_iαi\alpha_i^*中至少有一个为0,且0<=αi,αi,<=C0<=\alpha_i,\alpha_i^*,<=C,于是:λi=αi+αi|\lambda_i|=\alpha_i+\alpha_i^*
λi\lambda_iλi|\lambda_i|代入对偶问题,则有:
(系列笔记)13.SVR模型
如此一来,即可以用SMO求解了(这个推导过程仅仅用于说明SMO也可以应用于SVR,具体的求解过程和SVM的SMO算法还是有所差异的)

支持向量与求解线性模型参数

因为f(x)=wx+bf(x)=wx+b,以及前面求出的w=i=1m(αiαi)xiw=\sum_{i=1}^{m}{(\alpha_i^*-\alpha_i)x_i},因此:
(系列笔记)13.SVR模型
由此可见,只有满足αiαi≠0\alpha_i^*-\alpha_i=\not 0的样本才对ww取值有意义,才是SVR的支持向量。也就上,当样本满足下列条件之一时,才是支持向量:
(系列笔记)13.SVR模型
换言之,这个样本要么在隔离带上边缘以上,要么在隔离带下边缘以下(含两个边缘本身),也就是说,落在ϵ\epsilon-隔离带之外的样本,才是SVR的支持向量。
可见,无论是SVM还是SVR,它们的解都仅限于支持向量,即只是全部训练样本的一部分,因此SVM和SVR的解都具有稀疏性。

通过最优化方法求解出了ww之后,我们还需要求b。
f(xi)=wxi+b=>b=f(xi)wxif(x_i)=wx_i+b=>b=f(x_i)-wx_i,而且对于那些落在隔离带边缘上的支持向量,有f(xi)=yi+ϵf(x_i)=y_i+\epsilon,落在隔离带下边缘上的支持变量有f(xi)=yiϵf(x_i)=y_i-\epsilon。因此,
(系列笔记)13.SVR模型
其中SuS_u是位于隔离带上边缘的支持向量集合,而SdS_d则是位于隔离带下边缘的支持向量集合。

SVR的核技巧

前面讲过的适用于SVM的核技巧也同样适用于SVR。SVR 核技巧的实施办法和 SVM 一样,也是将输入空间的xx通过映射函数ϕ(x)\phi(x)映射到更高维度的特征空间,然后再在特征空间内做本文前述的一系列操作。

因此,在特征空间中的线性模型为:f(x)=wϕ(x)+bf(x)=w\phi(x)+b
其中:
(系列笔记)13.SVR模型
对照SVM核函数的做法,我们也令:
(系列笔记)13.SVR模型
具体核技巧的实施过程,对照SVM即可。

相关文章: