【SVM最后一课】详解烧脑的Support Vector Regression

简介: 【SVM最后一课】详解烧脑的Support Vector Regression


1   Kernel Ridge Regression


首先回顾一下上节课介绍的Representer Theorem,对于任何包含正则项的L2-regularized linear model,它的最佳化解w都可以写成是z的线性组合形式,因此,也就能引入kernel技巧,将模型kernelized化。

image.png

image.png

idge regression可以写成矩阵的形式,其中第一项可以看成是βn的正则项,而第二项可以看成是βn的error function。这样,我们的目的就是求解该式最小化对应的βn值,这样就解决了kernel ridge regression问题。


求解βn的问题可以写成如下形式:

image.png

Eaug(β)是关于β的二次多项式,要对Eaug(β)求最小化解,这种凸二次最优化问题,只需要先计算其梯度,再令梯度为零即可。∇Eaug(β)已经在上式中写出来了,令其等于零,即可得到一种可能的β的解析解为:

image.png

这里需要关心的问题是(λI+K)的逆矩阵是否存在?答案是肯定的。因为我们之前介绍过,核函数K满足Mercer’s condition,它是半正定的,而且λ>0,所以(λI+K)一定是可逆的。从计算的时间复杂上来说,由于(λI+K)是N x N大小的,所以时间复杂度是O(N^3)。还有一点,∇Eaug(β)是由两项乘积构成的,另一项是K,会不会出现K=0的情况呢?其实,由于核函数K表征的是z空间的内积,一般而言,除非两个向量互相垂直,内积才为零,否则,一般情况下K不等于零。这个原因也决定了(λI+K)是dense matrix,即β的解大部分都是非零值。这个性质,我们之后还会说明。


所以说,我们可以通过kernel来解决non-linear regression的问题。下面比较一下linear ridge regression和kernel ridge regression的关系。

image.png

如上图所示,左边是linear ridge regression,是一条直线;右边是kernel ridge regression,是一条曲线。大致比较一下,右边的曲线拟合的效果更好一些。这两种regression有什么样的优点和缺点呢?对于linear ridge regression来说,它是线性模型,只能拟合直线;其次,它的训练复杂度是O(d^3+d^2N),预测的复杂度是O(d),如果N比d大很多时,这种模型就更有效率。而对于kernel ridge regression来说,它转换到z空间,使用kernel技巧,得到的是非线性模型,所以更加灵活;其次,它的训练复杂度是O(N^3),预测的复杂度是O(N),均只与N有关。当N很大的时候,计算量就很大,所以,kernel ridge regression适合N不是很大的场合。比较下来,可以说linear和kernel实际上是效率(efficiency)和灵活(flexibility)之间的权衡。、

image.png

2

Support Vector Regression Primal

我们在机器学习基石课程中介绍过linear regression可以用来做classification,那么上一部分介绍的kernel ridge regression同样可以来做classification。我们把kernel ridge regression应用在classification上取个新的名字,叫做least-squares SVM(LSSVM)。


先来看一下对于某个问题,soft-margin Gaussian SVM和Gaussian LSSVM结果有哪些不一样的地方。

image.png

那么,针对LSSVM中dense β的缺点,我们能不能使用一些方法来的得到sparse β,使得SV不会太多,从而得到和soft-margin SVM同样的分类效果呢?下面我们将尝试解决这个问题。


方法是引入一个叫做Tube Regression的做法,即在分类线上下分别划定一个区域(中立区),如果数据点分布在这个区域内,则不算分类错误,只有误分在中立区域之外的地方才算error。

image.png

通常把这个error叫做ϵ-insensitive error,这种max的形式跟我们上节课中介绍的hinge error measure形式其实是类似的。所以,我们接下来要做的事情就是将L2-regularized tube regression做类似于soft-margin SVM的推导,从而得到sparse β

image.png

上图中,红色的线表示squared error,蓝色的线表示tube error。我们发现,当|s-y|比较小即s比较接近y的时候,squared error与tube error是差不多大小的。而在|s-y|比较大的区域,squared error的增长幅度要比tube error大很多。error的增长幅度越大,表示越容易受到noise的影响,不利于最优化问题的求解。所以,从这个方面来看,tube regression的这种error function要更好一些。


现在,我们把L2-Regularized Tube Regression写下来:

image.png

这个最优化问题,由于其中包含max项,并不是处处可微分的,所以不适合用GD/SGD来求解。而且,虽然满足representer theorem,有可能通过引入kernel来求解,但是也并不能保证得到sparsity β。从另一方面考虑,我们可以把这个问题转换为带条件的QP问题,仿照dual SVM的推导方法,引入kernel,得到KKT条件,从而保证解β是sparse的。

image.png

值得一提的是,系数λ和C是反比例相关的,λ越大对应C越小,λ越小对应C越大。而且该式也把w0即b单独拿了出来,这跟我们之前推导SVM的解的方法是一致的。


现在我们已经有了Standard Support Vector Regression的初始形式,这还是不是一个标准的QP问题。我们继续对该表达式做一些转化和推导:

image.png

SVR的标准QP形式包含几个重要的参数:C和ϵ。C表示的是regularization和tube violation之间的权衡。large C倾向于tube violation,small C则倾向于regularization。ϵ表征了tube的区域宽度,即对错误点的容忍程度。ϵ越大,则表示对错误的容忍度越大。ϵ是可设置的常数,是SVR问题中独有的,SVM中没有这个参数。另外,SVR的QP形式共有d^+1+2N个参数,2N+2N个条件。

image.png


3    Support Vector Regression Dual

image.png

image.png

image.png

image.png

所以,对于分布在tube内的点,得到的解βn=0,是sparse的。而分布在tube之外的点,βn≠0。至此,我们就得到了SVR的sparse解。


4   Summary of Kernel Models


这部分将对我们介绍过的所有的kernel模型做个概括和总结。我们总共介绍过三种线性模型,分别是PLA/pocket,regularized logistic regression和linear ridge regression。这三种模型都可以使用国立台湾大学的Chih-Jen Lin博士开发的Liblinear库函数来解决。

image.png

image.png

其中SVM,SVR和probabilistic SVM都可以使用国立台湾大学的Chih-Jen Lin博士开发的Libsvm库函数来解决。通常来说,这些模型中SVR和probabilistic SVM最为常用。


5   Summary


本文主要介绍了SVR,我们先通过representer theorem理论,将ridge regression转化为kernel的形式,即kernel ridge regression,并推导了SVR的解。但是得到的解是dense的,大部分为非零值。所以,我们定义新的tube regression,使用SVM的推导方法,来最小化regularized tube errors,转化为对偶形式,得到了sparse的解。最后,我们对介绍过的所有kernel模型做个总结,简单概述了各自的特点。在实际应用中,我们要根据不同的问题进行合适的模型选择。

相关文章
|
7月前
|
机器学习/深度学习 算法 Python
Python高级算法——支持向量机(Support Vector Machine,SVM)
Python高级算法——支持向量机(Support Vector Machine,SVM)
447 2
|
7月前
|
算法 数据可视化 数据挖掘
Python Monte Carlo K-Means聚类实战研究
Python Monte Carlo K-Means聚类实战研究
|
7月前
|
vr&ar
R语言如何做马尔科夫转换模型markov switching model
R语言如何做马尔科夫转换模型markov switching model
|
机器学习/深度学习 编解码 监控
NWD-Based Model | 小目标检测新范式,抛弃IoU-Based暴力涨点(登顶SOTA)(一)
NWD-Based Model | 小目标检测新范式,抛弃IoU-Based暴力涨点(登顶SOTA)(一)
919 0
|
数据可视化 计算机视觉
NWD-Based Model | 小目标检测新范式,抛弃IoU-Based暴力涨点(登顶SOTA)(二)
NWD-Based Model | 小目标检测新范式,抛弃IoU-Based暴力涨点(登顶SOTA)(二)
735 0
|
BI 容器
Machine Learning-L9-贝叶斯分类器(涉及贝叶斯的全在这了)(上)
Machine Learning-L9-贝叶斯分类器(涉及贝叶斯的全在这了)
Machine Learning-L9-贝叶斯分类器(涉及贝叶斯的全在这了)(上)
|
Python
Machine Learning-L9-贝叶斯分类器(涉及贝叶斯的全在这了)(下)
Machine Learning-L9-贝叶斯分类器(涉及贝叶斯的全在这了)(下)
Machine Learning-L9-贝叶斯分类器(涉及贝叶斯的全在这了)(下)
|
机器学习/深度学习 算法 数据可视化
SVM(Support Vector Machines)支持向量机算法原理以及应用详解+Python代码实现
SVM(Support Vector Machines)支持向量机算法原理以及应用详解+Python代码实现
507 0
SVM(Support Vector Machines)支持向量机算法原理以及应用详解+Python代码实现
|
人工智能 移动开发 Go
第二周编程作业 -Logistic Regression with a Neural Network mindset(一)
第二周编程作业 -Logistic Regression with a Neural Network mindset(一)
233 0
第二周编程作业 -Logistic Regression with a Neural Network mindset(一)
|
数据挖掘 Go
第二周编程作业 -Logistic Regression with a Neural Network mindset(三)
第二周编程作业 -Logistic Regression with a Neural Network mindset(三)
148 0
第二周编程作业 -Logistic Regression with a Neural Network mindset(三)