# 6 -- Support Vector Regression
上节课我们主要介绍了Kernel Logistic Regression,讨论如何把SVM的技巧应用在soft-binary classification上。方法是使用2-level learning,先利用SVM得到参数b和w,然后再用通用的logistic regression优化算法,通过迭代优化,对参数b和w进行微调,得到最佳解。然后,也介绍了可以通过Representer Theorem,在z空间中,引入SVM的kernel技巧,直接对logistic regression进行求解。本节课将延伸上节课的内容,讨论如何将SVM的kernel技巧应用到regression问题上。
### **Kernel Ridge Regression**
首先回顾一下上节课介绍的Representer Theorem,对于任何包含正则项的L2-regularized linear model,它的最佳化解w都可以写成是z的线性组合形式,因此,也就能引入kernel技巧,将模型kernelized化。
![这里写图片描述](https://img.kancloud.cn/be/f8/bef8b9c04d6757959e3ef487a0cac8ac_580x158.jpg)
那么如何将regression模型变成kernel的形式呢?我们之前介绍的linear/ridge regression最常用的错误估计是squared error,即![](https://img.kancloud.cn/ef/4a/ef4a628f0f1411d3c76453357db9e8b7_198x20.jpg)。这种形式对应的解是analytic solution,即可以使用线性最小二乘法,通过向量运算,直接得到最优化解。那么接下来我们就要研究如何将kernel引入到ridge regression中去,得到与之对应的analytic solution。
我们先把Kernel Ridge Regression问题写下来:
![这里写图片描述](https://img.kancloud.cn/97/f9/97f95fcf1bc7c74beceef5f49a270afc_581x123.jpg)
其中,最佳解![](https://img.kancloud.cn/f9/86/f986aaf25afadf31e3d5719928a0f301_19x11.jpg)必然是z的线性组合。那么我们就把![](https://img.kancloud.cn/1a/4f/1a4f3cdae6a705a13dd8d6c17fec4261_108x54.jpg)代入到ridge regression中,将z的内积用kernel替换,把求![](https://img.kancloud.cn/f9/86/f986aaf25afadf31e3d5719928a0f301_19x11.jpg)的问题转化成求![](https://img.kancloud.cn/ed/bb/edbbfa3694db051722568362e9ce30b7_18x16.jpg)的问题,得到:
![这里写图片描述](https://img.kancloud.cn/ea/07/ea078cbc381f551e2c477d234ca12d37_580x181.jpg)
ridge regression可以写成矩阵的形式,其中第一项可以看成是![](https://img.kancloud.cn/ed/bb/edbbfa3694db051722568362e9ce30b7_18x16.jpg)的正则项,而第二项可以看成是![](https://img.kancloud.cn/ed/bb/edbbfa3694db051722568362e9ce30b7_18x16.jpg)的error function。这样,我们的目的就是求解该式最小化对应的![](https://img.kancloud.cn/ed/bb/edbbfa3694db051722568362e9ce30b7_18x16.jpg)值,这样就解决了kernel ridge regression问题。
求解![](https://img.kancloud.cn/ed/bb/edbbfa3694db051722568362e9ce30b7_18x16.jpg)的问题可以写成如下形式:
![这里写图片描述](https://img.kancloud.cn/da/8a/da8a3a59f21a13192770aa842e684198_580x99.jpg)
![](https://img.kancloud.cn/f2/c3/f2c334ab217449465d95b2e1364e4418_59x20.jpg)是关于![](https://img.kancloud.cn/76/d0/76d0eb69ba026a58bbe3edd275fee712_11x16.jpg)的二次多项式,要对![](https://img.kancloud.cn/f2/c3/f2c334ab217449465d95b2e1364e4418_59x20.jpg)求最小化解,这种凸二次最优化问题,只需要先计算其梯度,再令梯度为零即可。![](https://img.kancloud.cn/12/fd/12fdd2b05cba5f3613d571ab57a18af6_74x20.jpg)已经在上式中写出来了,令其等于零,即可得到一种可能的![](https://img.kancloud.cn/76/d0/76d0eb69ba026a58bbe3edd275fee712_11x16.jpg)的解析解为:
![](https://img.kancloud.cn/d4/00/d4002c0932410e2b1eb102629cee61b8_134x20.jpg)
这里需要关心的问题是![](https://img.kancloud.cn/2e/9f/2e9fe871d3330fd3ba0c8cd09010b62e_70x18.jpg)的逆矩阵是否存在?答案是肯定的。因为我们之前介绍过,核函数K满足Mercer’s condition,它是半正定的,而且![](https://img.kancloud.cn/0b/85/0b852fd1bbc20f2966bf757a56186312_44x12.jpg),所以![](https://img.kancloud.cn/2e/9f/2e9fe871d3330fd3ba0c8cd09010b62e_70x18.jpg)一定是可逆的。从计算的时间复杂上来说,由于![](https://img.kancloud.cn/2e/9f/2e9fe871d3330fd3ba0c8cd09010b62e_70x18.jpg)是NxN大小的,所以时间复杂度是![](https://img.kancloud.cn/74/80/7480af2add8cf6c5be14fe028edc6967_51x20.jpg)。还有一点,![](https://img.kancloud.cn/12/fd/12fdd2b05cba5f3613d571ab57a18af6_74x20.jpg)是由两项乘积构成的,另一项是K,会不会出现K=0的情况呢?其实,由于核函数K表征的是z空间的内积,一般而言,除非两个向量互相垂直,内积才为零,否则,一般情况下K不等于零。这个原因也决定了![](https://img.kancloud.cn/2e/9f/2e9fe871d3330fd3ba0c8cd09010b62e_70x18.jpg)是dense matrix,即![](https://img.kancloud.cn/76/d0/76d0eb69ba026a58bbe3edd275fee712_11x16.jpg)的解大部分都是非零值。这个性质,我们之后还会说明。
所以说,我们可以通过kernel来解决non-linear regression的问题。下面比较一下linear ridge regression和kernel ridge regression的关系。
![这里写图片描述](https://img.kancloud.cn/52/72/5272a192c0c3d43368971d08c8e64250_498x156.jpg)
如上图所示,左边是linear ridge regression,是一条直线;右边是kernel ridge regression,是一条曲线。大致比较一下,右边的曲线拟合的效果更好一些。这两种regression有什么样的优点和缺点呢?对于linear ridge regression来说,它是线性模型,只能拟合直线;其次,它的训练复杂度是![](https://img.kancloud.cn/ad/71/ad71dff39da38389c0be832d63b1f4e8_99x20.jpg),预测的复杂度是![](https://img.kancloud.cn/6a/a4/6aa4498440ca535eb5814ef1122ead70_36x18.jpg),如果N比d大很多时,这种模型就更有效率。而对于kernel ridge regression来说,它转换到z空间,使用kernel技巧,得到的是非线性模型,所以更加灵活;其次,它的训练复杂度是![](https://img.kancloud.cn/74/80/7480af2add8cf6c5be14fe028edc6967_51x20.jpg),预测的复杂度是![](https://img.kancloud.cn/71/6d/716dff4132bf16ad61e88c7a261d267c_44x18.jpg),均只与N有关。当N很大的时候,计算量就很大,所以,kernel ridge regression适合N不是很大的场合。比较下来,可以说linear和kernel实际上是效率(efficiency)和灵活(flexibility)之间的权衡。
![这里写图片描述](https://img.kancloud.cn/ed/8d/ed8d315cf28aa344f4b0bbd6a694307b_560x231.jpg)
### **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结果有哪些不一样的地方。
![这里写图片描述](https://img.kancloud.cn/f3/bf/f3bf91822cb1e529daa745cd9203b0ad_513x152.jpg)
如上图所示,如果只看分类边界的话,soft-margin Gaussian SVM和Gaussian LSSVM差别不是很大,即的到的分类线是几乎相同的。但是如果看Support Vector的话(图中方框标注的点),左边soft-margin Gaussian SVM的SV不多,而右边Gaussian LSSVM中基本上每个点都是SV。这是因为soft-margin Gaussian SVM中的![](https://img.kancloud.cn/96/42/964237caf2be6185a33aa601075d68fb_19x11.jpg)大部分是等于零,![](https://img.kancloud.cn/2b/29/2b292820fbf0d4824e3c3f3616c1bec6_53x15.jpg)的点只占少数,所以SV少。而对于LSSVM,我们上一部分介绍了![](https://img.kancloud.cn/76/d0/76d0eb69ba026a58bbe3edd275fee712_11x16.jpg)的解大部分都是非零值,所以对应的每个点基本上都是SV。SV太多会带来一个问题,就是做预测的矩![](https://img.kancloud.cn/ad/ff/adffa50918e47df6966f6845d77a41e8_172x54.jpg),如果![](https://img.kancloud.cn/ed/bb/edbbfa3694db051722568362e9ce30b7_18x16.jpg)非零值较多,那么g的计算量也比较大,降低计算速度。基于这个原因,soft-margin Gaussian SVM更有优势。
![这里写图片描述](https://img.kancloud.cn/b1/32/b1323cb0c529e592725f8528d6d5156e_580x105.jpg)
那么,针对LSSVM中dense ![](https://img.kancloud.cn/76/d0/76d0eb69ba026a58bbe3edd275fee712_11x16.jpg)的缺点,我们能不能使用一些方法来的得到sparse ![](https://img.kancloud.cn/76/d0/76d0eb69ba026a58bbe3edd275fee712_11x16.jpg),使得SV不会太多,从而得到和soft-margin SVM同样的分类效果呢?下面我们将尝试解决这个问题。
方法是引入一个叫做Tube Regression的做法,即在分类线上下分别划定一个区域(中立区),如果数据点分布在这个区域内,则不算分类错误,只有误分在中立区域之外的地方才算error。
![这里写图片描述](https://img.kancloud.cn/fe/d5/fed52e4a1d208feafe6959fd04875b1a_209x207.jpg)
假定中立区的宽度为![](https://img.kancloud.cn/ec/cc/eccca11c4e50b2051cc2791395f4c570_16x12.jpg),![](https://img.kancloud.cn/01/e9/01e964be6f0e988aeec294a9064dbace_40x12.jpg),那么error measure就可以写成:![](https://img.kancloud.cn/f0/ce/f0cee0983999f889100c7fa07fe030a2_234x19.jpg),对应上图中红色标注的距离。
![这里写图片描述](https://img.kancloud.cn/01/e0/01e0ba46e8f289af4cdb8ef3823b6734_390x162.jpg)
通常把这个error叫做![](https://img.kancloud.cn/f1/f4/f1f442a329c8d3df85dce68831d660fe_7x8.jpg)-insensitive error,这种max的形式跟我们上节课中介绍的hinge error measure形式其实是类似的。所以,我们接下来要做的事情就是将L2-regularized tube regression做类似于soft-margin SVM的推导,从而得到sparse ![](https://img.kancloud.cn/76/d0/76d0eb69ba026a58bbe3edd275fee712_11x16.jpg)。
首先,我们把tube regression中的error与squared error做个比较:
![这里写图片描述](https://img.kancloud.cn/11/6f/116f85ea4c84b553ca6a8d0765b81de5_579x185.jpg)
然后,将err(y,s)与s的关系曲线分别画出来:
![这里写图片描述](https://img.kancloud.cn/13/31/1331b9907abf4db33ea5d582743f9a12_697x174.jpg)
上图中,红色的线表示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写下来:
![这里写图片描述](https://img.kancloud.cn/0b/49/0b49a5c55d33f4b2771f47f986614314_580x76.jpg)
这个最优化问题,由于其中包含max项,并不是处处可微分的,所以不适合用GD/SGD来求解。而且,虽然满足representer theorem,有可能通过引入kernel来求解,但是也并不能保证得到sparsity ![](https://img.kancloud.cn/76/d0/76d0eb69ba026a58bbe3edd275fee712_11x16.jpg)。从另一方面考虑,我们可以把这个问题转换为带条件的QP问题,仿照dual SVM的推导方法,引入kernel,得到KKT条件,从而保证解![](https://img.kancloud.cn/76/d0/76d0eb69ba026a58bbe3edd275fee712_11x16.jpg)是sparse的。
![这里写图片描述](https://img.kancloud.cn/6b/4b/6b4b93ba9adf08121dcaf0bb1b0a2970_560x169.jpg)
所以,我们就可以把L2-Regularized Tube Regression写成跟SVM类似的形式:
![这里写图片描述](https://img.kancloud.cn/1d/6d/1d6d8a0c3bf5420a9812308decfe8d9d_581x108.jpg)
值得一提的是,系数![](https://img.kancloud.cn/99/d3/99d394e7d0b74248114405067e0ffd51_10x12.jpg)和C是反比例相关的,![](https://img.kancloud.cn/99/d3/99d394e7d0b74248114405067e0ffd51_10x12.jpg)越大对应C越小,![](https://img.kancloud.cn/99/d3/99d394e7d0b74248114405067e0ffd51_10x12.jpg)越小对应C越大。而且该式也把![](https://img.kancloud.cn/d7/53/d7532e3dab17db34b5e43420e08b4859_19x11.jpg)即b单独拿了出来,这跟我们之前推导SVM的解的方法是一致的。
现在我们已经有了Standard Support Vector Regression的初始形式,这还是不是一个标准的QP问题。我们继续对该表达式做一些转化和推导:
![这里写图片描述](https://img.kancloud.cn/83/32/8332e64180ec7a0f259c0fabcbba292e_561x175.jpg)
如上图右边所示,即为标准的QP问题,其中![](https://img.kancloud.cn/ee/96/ee96ac59901c17eeb7f0162d34fcf6ab_20x21.jpg)和![](https://img.kancloud.cn/ef/0e/ef0e92081fec1a201a2f47ac154cf836_20x21.jpg)分别表示upper tube violations和lower tube violations。这种形式叫做Support Vector Regression(SVR) primal。
![这里写图片描述](https://img.kancloud.cn/a8/97/a8972b1cb7210d9eb54f013b54223cd2_580x131.jpg)
SVR的标准QP形式包含几个重要的参数:C和![](https://img.kancloud.cn/f1/f4/f1f442a329c8d3df85dce68831d660fe_7x8.jpg)。C表示的是regularization和tube violation之间的权衡。large C倾向于tube violation,small C则倾向于regularization。![](https://img.kancloud.cn/f1/f4/f1f442a329c8d3df85dce68831d660fe_7x8.jpg)表征了tube的区域宽度,即对错误点的容忍程度。![](https://img.kancloud.cn/f1/f4/f1f442a329c8d3df85dce68831d660fe_7x8.jpg)越大,则表示对错误的容忍度越大。![](https://img.kancloud.cn/f1/f4/f1f442a329c8d3df85dce68831d660fe_7x8.jpg)是可设置的常数,是SVR问题中独有的,SVM中没有这个参数。另外,SVR的QP形式共有![](https://img.kancloud.cn/96/d2/96d2faa25d6191d37e1ca4095345a73a_87x19.jpg)个参数,2N+2N个条件。
![这里写图片描述](https://img.kancloud.cn/69/9f/699f58284c098109fda4f62238f24a15_588x153.jpg)
### **Support Vector Regression Dual**
现在我们已经得到了SVR的primal形式,接下来将推导SVR的Dual形式。首先,与SVM对偶形式一样,先令拉格朗日因子![](https://img.kancloud.cn/5e/a2/5ea2cb73858cfcd7edf44117f825423c_23x16.jpg)和![](https://img.kancloud.cn/0b/3e/0b3e7835d0a8b10d6e307e94e6a9e97a_23x16.jpg),分别是与![](https://img.kancloud.cn/ee/96/ee96ac59901c17eeb7f0162d34fcf6ab_20x21.jpg)和![](https://img.kancloud.cn/ef/0e/ef0e92081fec1a201a2f47ac154cf836_20x21.jpg)不等式相对应。这里忽略了与![](https://img.kancloud.cn/30/b3/30b3195c9a8b7eb587948e12cf44fb2d_54x21.jpg)和![](https://img.kancloud.cn/87/2f/872f2b0cfba62d8681296cbb4c214f40_54x21.jpg)对应的拉格朗日因子。
![这里写图片描述](https://img.kancloud.cn/a6/c9/a6c9bf1ddc5998161bead9dbcb243d2a_580x130.jpg)
然后,与SVM一样做同样的推导和化简,拉格朗日函数对相关参数偏微分为零,得到相应的KKT条件:
![这里写图片描述](https://img.kancloud.cn/44/c9/44c92961725ba65f953c3a1eeccb557d_581x148.jpg)
接下来,通过观察SVM primal与SVM dual的参数对应关系,直接从SVR primal推导出SVR dual的形式。(具体数学推导,此处忽略!)
![这里写图片描述](https://img.kancloud.cn/93/f9/93f9603133609b95a2d31ca58d6408d0_560x338.jpg)
最后,我们就要来讨论一下SVR的解是否真的是sparse的。前面已经推导了SVR dual形式下推导的解w为:
![](https://img.kancloud.cn/4a/70/4a70faf7b9f9864fd5be6d0b49bfa1bf_162x54.jpg)
相应的complementary slackness为:
![这里写图片描述](https://img.kancloud.cn/f4/30/f430dedd09604c6ed6200b9c2cacf914_521x60.jpg)
对于分布在tube中心区域内的点,满足![](https://img.kancloud.cn/15/20/1520b8f9e805ade95af97fc9161be18d_149x21.jpg),此时忽略错误,![](https://img.kancloud.cn/ee/96/ee96ac59901c17eeb7f0162d34fcf6ab_20x21.jpg)和![](https://img.kancloud.cn/ef/0e/ef0e92081fec1a201a2f47ac154cf836_20x21.jpg)都等于零。则complementary slackness两个等式的第二项均不为零,必然得到![](https://img.kancloud.cn/73/45/7345d66125ea1fc3df41aefddd0f9675_56x21.jpg)和![](https://img.kancloud.cn/eb/04/eb0426c08dcb4f4e67d155818d6db719_56x21.jpg),即![](https://img.kancloud.cn/82/95/82959e365ad1f6613710fc5fda988a00_144x21.jpg)。
所以,对于分布在tube内的点,得到的解![](https://img.kancloud.cn/89/8e/898ea78e98ca80912a6874d39031e99a_52x16.jpg),是sparse的。而分布在tube之外的点,![](https://img.kancloud.cn/68/f0/68f0abcde6290bb09e8c6cff97531652_52x18.jpg)。至此,我们就得到了SVR的sparse解。
### **Summary of Kernel Models**
这部分将对我们介绍过的所有的kernel模型做个概括和总结。我们总共介绍过三种线性模型,分别是PLA/pocket,regularized logistic regression和linear ridge regression。这三种模型都可以使用国立台湾大学的Chih-Jen Lin博士开发的Liblinear库函数来解决。
另外,我们介绍了linear soft-margin SVM,其中的error function是![](https://img.kancloud.cn/c9/42/c94209330d57899e986ea129aa6fce84_50x16.jpg),可以通过标准的QP问题来求解。linear soft-margin SVM和PLA/pocket一样都是解决同样的问题。然后,还介绍了linear SVR问题,它与linear ridge regression一样都是解决同样的问题,从SVM的角度,使用![](https://img.kancloud.cn/ab/44/ab445dc55c55d0dff9519125b3f12fad_49x11.jpg),转换为QP问题进行求解,这也是我们本节课的主要内容。
![这里写图片描述](https://img.kancloud.cn/70/06/7006781e5bf58e74d530a22cccdfb6b1_585x258.jpg)
上图中相应的模型也可以转化为dual形式,引入kernel,整体的框图如下:
![这里写图片描述](https://img.kancloud.cn/4d/5b/4d5b119efe130105e6a638fc782324b2_585x375.jpg)
其中SVM,SVR和probabilistic SVM都可以使用国立台湾大学的Chih-Jen Lin博士开发的LLibsvm库函数来解决。通常来说,这些模型中SVR和probabilistic SVM最为常用。
### **总结**
本节课主要介绍了SVR,我们先通过representer theorem理论,将ridge regression转化为kernel的形式,即kernel ridge regression,并推导了SVR的解。但是得到的解是dense的,大部分为非零值。所以,我们定义新的tube regression,使用SVM的推导方法,来最小化regularized tube errors,转化为对偶形式,得到了sparse的解。最后,我们对介绍过的所有kernel模型做个总结,简单概述了各自的特点。在实际应用中,我们要根据不同的问题进行合适的模型选择。
**_注明:_**
文章中所有的图片均来自台湾大学林轩田《机器学习技法》课程
- 台湾大学林轩田机器学习笔记
- 机器学习基石
- 1 -- The Learning Problem
- 2 -- Learning to Answer Yes/No
- 3 -- Types of Learning
- 4 -- Feasibility of Learning
- 5 -- Training versus Testing
- 6 -- Theory of Generalization
- 7 -- The VC Dimension
- 8 -- Noise and Error
- 9 -- Linear Regression
- 10 -- Logistic Regression
- 11 -- Linear Models for Classification
- 12 -- Nonlinear Transformation
- 13 -- Hazard of Overfitting
- 14 -- Regularization
- 15 -- Validation
- 16 -- Three Learning Principles
- 机器学习技法
- 1 -- Linear Support Vector Machine
- 2 -- Dual Support Vector Machine
- 3 -- Kernel Support Vector Machine
- 4 -- Soft-Margin Support Vector Machine
- 5 -- Kernel Logistic Regression
- 6 -- Support Vector Regression
- 7 -- Blending and Bagging
- 8 -- Adaptive Boosting
- 9 -- Decision Tree
- 10 -- Random Forest
- 11 -- Gradient Boosted Decision Tree
- 12 -- Neural Network
- 13 -- Deep Learning
- 14 -- Radial Basis Function Network
- 15 -- Matrix Factorization
- 16(完结) -- Finale