本文是机器学习技法系列文章的第六篇。介绍了支持向量回归的推导过程。


文章目录

  • Support Vector Regression
    • 6.1 Kernel Ridge Regression
    • 6.2 Support Vector Regression Primal
    • 6.3 Support Vector Regression Dual
    • 6.4 Summary of Kernel Models
    • Summary

Support Vector Regression

上一节课讲了KLR,如果想要把SVM这类稀疏的模型用在 soft classification 问题上,可以使用两阶段学习的方式,先用SVM求解最佳的参数 w,bw,bw,b,然后作为LR(Linear Regression)的初始化参数,进一步求解。或者通过representor theorem的方法,即将 www 用一系列的 zzz 表示,将其转换为 Kernel 的形式再求解。本节课介绍更一般地Kernel Regression情形。


6.1 Kernel Ridge Regression


上一节课,介绍了representor theorem,即何时可以将最佳的权重向量 w∗w_*w∗​ 表示成一系列 znz_nzn​ 的线性组合。如果处理的是含有正则化的线性模型,则最好的 w∗w_*w∗​ 为 znz_nzn​ 的线性组合,并且可以通过反证法证明。 也就是说,人任何包含L2正则化的线性模型,都可以把它变为Kernel的形式。本节课探讨,如何把回归转换为Kernel的形式。

对于线性回归,其损失函数为:

err(y,wTz)=(y−wTz)2err(y,w^Tz) = (y − w^Tz)^2err(y,wTz)=(y−wTz)2

如果加入正则化项,则变为 岭回归(Ridge Regression)

在线性回归和岭回归模型中是有解析解(Analytic Solution)的。我们希望引入Kernel的这两类回归模型也可以有解析解。其推导过程如下:


即将最佳的权重向量 w∗w_*w∗​ 的表示形式代入目标函数,转化为求解最佳的的 β\betaβ,并用向量形式表示。有了这种转化,就可以把原来学过的回归算法中应用Kernel,诸如Polynomial和Gaussian Kernel 就都可以使用了。现在,问题变为如何求解最佳的参数 β\betaβ。

仔细看上式,不难发现,其实就是一个 β\betaβ 的二次多项式。因为是一个无条件的最优化问题,所以可用梯度下降算法求解。

上式中,KKK 是Kernel算出来的结果,是一个对称矩阵(KT=KK^T=KKT=K),为了方便公式推导,记为 KTK^TKT,为了之后方便讨论,添加一个 identity matrix III,最够得到公式:

∇Eaug(β)==2NKT((λI+K)β−y)∇E_{aug}(β)==\frac{2}{N}K^T((λI + K)β − y)∇Eaug​(β)==N2​KT((λI+K)β−y)

现在令梯度等于零,则可得到解析解。一个可用的 Kernel KKK 一定是半正定的,再加上一个单位矩阵 III ,一定是可逆的。要求解这个方程,计算复杂度约为 O(N3)O(N^3)O(N3) ,并且 Kernel 中的参数大部分不为零,上一节课推导过程中,将最佳的权重向量w∗w_*w∗​分解为了垂直和平行向量相加的形式,所以只有当两个向量垂直时,β\betaβ 的分量才会为零。所以求解比较困难。通过上式,求出的 β\betaβ 就是岭回归算法在 zzz 空间最佳的解。

理论上,现在就可以求解非线性回归。下面比较一下,岭回归和带Kernel的岭回归算法。

通过以上对比可以看出linear与kernel的差别。使用linear的缺点是受到很多限制,只能处理线性可分的情况,对于非线性的输入空间,则无法处理的很好;使用kernel,则不会有过多的限制,可以处理更多的问题。如果仅考虑计算复杂度,linear适用于样本数量 NNN 远大于特征空间维度 ddd 的情况;如果使用Kernel,则所有计算都与样本数量 NNN 相关,当样本数量增大时,需要重新审视是否使用kernel。

对于linear来说,关注点在更关注控制复杂度还是更关注控制效率。如果要计算更加复杂的情况,则可能需要使用kernel。使用kernel的优点是可以对复杂的输出空间进行建模,并且不容易过拟合,但是需要花费较多的训练时长。


习题1:


6.2 Support Vector Regression Primal

有了Kernel Ridge Regression之后,也可以向Linear Regression一样,用在做分类任务。这种方法通常叫做least-squares SVM(LSSVM)。下面对比一下两类分类算法:

只看分隔超平面好像没有什么区别,但是如果看支持向量(图中方框框起来的样本点)会发现,使用Gaussian Kernel的 LSSVM 的分类结果中,几乎每一个样本点那都是支持向量,这远远多于 Soft-Margin Gaussian SVM,为什么会这样呢?原因是求解 KKK 时,其中很多的 β\betaβ 分量不为零。支持向量多意味着未来使用假设函数做预测时,靠的是每一个Kernel 乘上 β\betaβ ,然后算出分数,也就是说,支持向量多,预测的时候要花费更多的时间。

LSSVM和kernel LogReg算法求解出的参数β\betaβ 是稠密的,即很多不是零;标准的SVM算法通过KKT条件求出的参数 α\alphaα 是稀疏的,即只有少数不为零,这样就可以降低算法复杂度,提高训练和预测速度。现在,考虑尝试找出结果是稀疏的回归模型,类似 Soft-Margin SVM 的形式。

考虑一个新的问题 tube regression,引入中立区的概念,也就是超平面与margin之间的区域。

图中,蓝色线表示超平面,阴影部分表示两个margin的区域(中立区)。期望输出与预测输出的距离减去在中立区的部分,也就是红色线段表示的误差error。落在中立区的部分不算误差,落在中立区之外的才算误差。这与之前学过的折叶损失函数很像,这种做法使得可以与有稀疏解的SVM联系起来。接下来进行推导,得到稀疏的解。

对比这两类算法的误差函数曲线可知,squared error 在两侧趋向无穷时,增长得很快,表示容易受到噪声的影响,容易为了减少误差而做出比较复杂的分隔超平面,从而导致过拟合;而tube error增长得相对较缓。下面看L2-Regularized Tube Regression问题:

通过对比两种算法可知,RTR是无条件约束最优化问题,理论上可以使用无约束的优化方法求解,但是跟之前的SVM推导一样,存在max函数,导致不一定可微分;而标准的SVM转化为二次规划问题求解。那么如何转化为带Kernel的求解呢?RTR可以使用representer theorem 求解,但是没办法保证求解结果就是稀疏的的解;而标准的SVM,通过二次规划求解,有KKT条件限制,可以直接得到稀疏的解。现在,想办法将RTR转换为SVM的形式再求解。

由上式可知,引入了参数 CCC 、 ϵ\epsilonϵ 和 bbb。现在回顾SVM的求解方法,扩展到RTR:

这就得到了Support Vector Regression (SVR) 的初始形式,即由minimize regularizer + (upper tube violations ξn∧ξ^∧_nξn∧​ & lower violations ξn∨ξ^∨_nξn∨​)两部分组成。此时目标函数变为了有条件约束的最优化问题:

其参数说明如下:

参数 CCC 表示更注重正则项还是更注重最小化分类错误样本点的误差。ϵ\epsilonϵ 表示中立区的宽度,即对错误的容忍程度。该参数是SVR独有的参数。然后通过二次规划求解,将求解变量变为 d~+1+2N\tilde{d}+1+2Nd~+1+2N ,限制条件变为 2N+2N2N+2N2N+2N。

下一步想推导SVM算法一样,想办法消除 zzz 空间中特征维度 d~\tilde{d}d~ 的影响。


习题3:


6.3 Support Vector Regression Dual

与推导SVM一样,要消除 d~\tilde{d}d~ 的影响,需要转化为朗格朗日对偶问题求解。首先引入两个拉格朗日乘子 α∧\alpha^∧α∧ 和 α∨α^∨α∨,然后经过推导可以将这两个拉格朗日乘子暗含到 ξn∨\xi^∨_nξn∨​ 中,从而得到:

其KKT条件为:

以上两式就是SVR松弛条件。其实,SVM primal与SVM dual的参数是对应的,可以直接从SVR primal推导出SVR dual形式。

更具松弛条件求解得:

由此可以得到,分布在中立区(tube)内的点,βn=0\beta_n=0βn​=0;在中立区之外的点,βn≠0\beta_n \neq 0βn​​=0 。此时,得到SVR的解就是稀疏解。


习题3:


6.4 Summary of Kernel Models

至此,本课程中所有带Kernel的模型已经讲解完毕。下面做一个总结,首先回顾线性模型,主要有:

  • PLA/pocket
  • Linear Ridge Regression
  • Regularized Logistic Regression
  • Linear Soft-Margin SVM
  • Linear SVR

带 Kernel 的模型主要有:

常用的方法是:

  • SVM
  • SVR
  • probabilistic SVM


习题4:


Summary

本节课介绍了Support Vector Regression(SVR),问题的切入点是把原来学过的 岭回归(Ridge Regression)变为kernel的形式,然后可以使用representer theorem来实现,但是结果不一定是稀疏的。所以,通过tube regression error入手,导出了QP问题以及对偶问题,证明了其结果是稀疏的。最后总结了所学的模型以及如何选择。

下一节课开始学习集成学习模型。


机器学习技法06:支持向量回归(Support Vector Regression)相关推荐

  1. python 最小二乘回归 高斯核_机器学习技法6-(支持向量回归)

    一.核岭回归 线性分类模型加入了L2正则化以后,最佳解是w关于z的线性组合,因此带有L2正则化的线性分类模型能引入核函数,也就是把线性模型变成核函数的形式. 在线性回归模型中,损失函数为: 当给线性回 ...

  2. 台湾大学林轩田机器学习技法课程学习笔记6 -- Support Vector Regression

    红色石头的个人网站:redstonewill.com 上节课我们主要介绍了Kernel Logistic Regression,讨论如何把SVM的技巧应用在soft-binary classifica ...

  3. 学习SVM(四) 理解SVM中的支持向量(Support Vector)

    学习SVM(四) 理解SVM中的支持向量(Support Vector) 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/chaipp0607/articl ...

  4. 【机器学习基础】支持向量回归

    引言 这一小节介绍一下支持向量回归,我们在之前介绍的核逻辑回归使用表示定理(Representer Theorem),将逻辑回归编程Kernel的形式,这一节我们沿着这个思路出发,看看如何将回归问题和 ...

  5. 机器学习(19)之支持向量回归机

    微信公众号 关键字全网搜索最新排名 [机器学习算法]:排名第一 [机器学习]:排名第二 [Python]:排名第三 [算法]:排名第四 前言 机器学习(15)之支持向量机原理(一)线性支持向量机 机器 ...

  6. 【机器学习】支持向量回归

    有任何的书写错误.排版错误.概念错误等,希望大家包含指正. 在阅读本篇之前建议先学习: [机器学习]支持向量机[上]硬间隔 [机器学习]支持向量机[下]软间隔与核函数 支持向量回归 支持向量回归(su ...

  7. 支持向量机 (三): 优化方法与支持向量回归

    拉格朗日乘子法 - KKT条件 - 对偶问题 支持向量机 (一): 线性可分类 svm 支持向量机 (二): 软间隔 svm 与 核函数 支持向量机 (三): 优化方法与支持向量回归 优化方法 一.S ...

  8. 支持向量机与支持向量回归(support vector machine and support vector regression)

    支持向量机和支持向量回归是目前机器学习领域用得较多的方法,不管是人脸识别,字符识别,行为识别,姿态识别等,都可以看到它们的影子.在我的工作中,经常用到支持向量机和支持向量回归,然而,作为基本的理论,却 ...

  9. 【机器学习系列】之支持向量回归SVR

    作者:張張張張 github地址:https://github.com/zhanghekai [转载请注明出处,谢谢!] [机器学习系列]之SVM硬间隔和软间隔 [机器学习系列]之SVM核函数和SMO ...

  10. 机器学习西瓜书笔记:软间隔和支持向量回归SVR

    1.首先由SVM问题(最大间隔超平面模型):所有样本都可以正确分类的最优化问题,引入软间隔SVM(允许分类错误)的最优化问题,即需要添加损失函数(样本不满足约束的程度,或者说分类错误的程度),然后最优 ...

最新文章

  1. 1059 Prime Factors
  2. asp.net MVC 路由
  3. 【Tiny4412】EMMC启动最小网络文件系统
  4. springMVC3学习(十一)--文件上传CommonsMultipartFile
  5. 深圳dotnet俱乐部新群
  6. java中的位移运算符_java中的移位运算符(, , )
  7. BugkuCTF-MISC题猫片
  8. Kubernetes学习总结(1)——Kubernetes入门简介
  9. as本地仓库更改_如何将源仓库的更改同步到fork仓库?
  10. 使用Foxit Reader实现批量打印以及一页多版设置技巧
  11. 【Verilog基础】Verilog语法之标量(Scalar)与向量(Vector)
  12. 渗透之代理小知识--
  13. 师资博后是个什么样的职位?
  14. delphi学习笔记(2)-object pascal语言的语句 选择自 xmz2629 的 Blog
  15. unity 使用像素实现墙面子弹留孔效果(给已有贴图模型叠加贴图)
  16. 许奔创新社-第27问:创新者们如何进行跨界交流?
  17. 【大厂直通车】哔哩哔哩日常实习_测开面经
  18. Linux调整网卡MAC地址(指令)
  19. Ubuntu编译内核树
  20. Azure:陪伴你们,是我最长情的告白

热门文章

  1. 打开网址自动跳转 php,HTML网页自动跳转的5种方法
  2. github构建自己的代码库
  3. 本地音乐播放器Demo
  4. Ubuntu系统如何进行屏幕截图
  5. 如何快速入门学习UG编程
  6. 手机查看IGES,STP,STEP文件APP推荐-Glovius
  7. 排名 教材 数字电子技术_数字电子技术教材改革及实践
  8. python绝对值_绝对值排序 (Python代码)
  9. python字符串怎么加绝对值_每日一练 | Python绝对值有哪些实例?
  10. ms17010漏洞复现-2003