码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-03 23:41:49      阅读:415      评论:0      收藏:0      [点我收藏+]

标签:机器学习实验   机器学习   

引言

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

Kernel Ridge Regression

上次介绍的表示定理告诉我们,如果我们要处理的是有L2的正则项的线性模型,其最优解是数据zn的线性组合。我们可以将这样的线性模型变成Kernel的形式。
技术分享

既然我们知道这样带有L2-Regularizer的线性回归模型的最佳解的形式,那么我们就可以将这个最佳解代入进原始的ridge regression中,用求解最佳的β来代替求解最佳的w。
技术分享
我们将w是z的线性组合这个条件带进式子中,得到如下的式子,再将其转换成矩阵相乘的表示形式。
技术分享

Kernel Ridge Regression的求解

上面我们得到了Kernel Ridge Regression的损失函数,要求解这样的一个无条件的最优化问题,就是对这个损失函数Eaug(β)取梯度:
技术分享
令▽Eaug(β)=0,就是要将(λI+K)β-y=0,这样我们得到β的解。那么(λI+K)是不是一定可逆呢,我们知道核矩阵K是半正定的,所以这个(λI+K)的逆一定是存在的。
技术分享
这里的时间复杂度大概是O(N^3),而且注意到矩阵(λI+K)里面的元素大部分都不是0,所以如果求解一个很大的矩阵的逆是一个很困难的问题。

Linear Regression和Kernel Ridge Regression的比较

技术分享
Linear Regression的缺点是比较受限制,但在计算的复杂度方面,如果当数据量N比维度d大很多,线性回归的计算是比较高效的。
Kernel Ridge Regression由于使用了Kernel trick,比较灵活,适合做复杂的拟合。这种方法我们发现,计算的复杂程度都是和数据量有关的,如果数据量很大的时候,不适合使用这个方法。

所以,线性和核方法的差别在于计算效率和针对复杂问题灵活性的权衡和折中。


Support Vector Regression

在之前的介绍中,我们使用linear regression来作分类的问题,现在使用kernel ridge regression也可以来作分类。
我们把这种kernel ridge regression for classification的情况也成为最小二乘SVM(least-squares SVM, LSSVM)。
技术分享
我们从上图对比一下SVM和LSSVM的分界效果,我们会发现,虽然这两幅图的分类边界效果是差不多的,但是其标注的支持向量的数量却相差很大,在LSSVM差不多每一个数据都是支持向量,为什么会这样呢?
我们在Kernel Ridge Regression中计算的β的结果,大部分都不是0,所以这种方式的支持向量的数量很多。这样在预测的时候,就会花费很多的时间。
而标准的SVM中,系数α是稀疏的,而这里的β是很稠密的。

Tube Regression

我们现在假设有一个中立区Tube,数据在这个区域中,我们不将其计入误差函数,而只将在这个区域外的数据的距离计入误差函数。
技术分享
损失函数定义如下:
技术分享
我们对比一下Tube Regreesion和Squared Regression误差函数的曲线,我们可以看到在误差比较小的情况下,两种误差度量是差不多的,而当误差比较大的时候,squared error就会增长的很快,这说明squared error比较容易受到噪声的影响
技术分享
接下来,我们使用L2-regularized tube regression来得到稀疏的β。

L2-Regularized Tube Regression

技术分享
由于含有Regularizer的Tube Regression中含有max函数,而这个函数是不能微分的,所以我们想要模仿SVM中的求解技巧来解这个问题。

我们对比SVM,将w中的常数项b从中独立出来得到要变换的式子:
技术分享
我们回想一下,在SVM中我们引入了一个新的变量ξn,这个变量记录了对于错误数据的惩罚,所以我们用ξn来代替max,放到目标函数中去:
技术分享
由于这里还有一个绝对值的运算,它也不是可微的运算,所以我们将其拆开成两个部分,并且设置了两个ξ变量,这样就把我们的条件变成了线性的,于是我们就可以使用二次规划来求解这个式子了:
技术分享

上面我们得到了标准的Support Vector Regression,我们成为原始的SVR问题。
技术分享
相比于SVM,这里还多出一个可调节的变量ε。
技术分享

Support Vector Regression的对偶问题

下面我们使用拉格朗日乘子来化简有条件的最优化问题,分别使用两个拉格朗日乘数α对应两个ξ:
技术分享
接下来,我们将待优化的目标函数和条件写成拉格朗日函数,然后对其中的变量做微分,再使用KKT条件来替换,和之前介绍SVM的过程是很相似的,下面只给出几个重要的结果:
技术分享

我们通过对比对偶SVM和对偶SVR来阐述其实这些对偶问题是有迹可循的。
技术分享

经过以上的步骤求解,我们希望得到最后的结果是稀疏的,那我们来看看什么时候β为0。
当数据在tube中的时候,两个误差变量ξ都为0,那么由松弛条件(complementary slackness)得到两个α为0,这样最终得到的β为0,就可以保证支持向量的稀疏特点,只有在tube外和刚好在tube上的数据才是支持向量。

对Kernel模型的回顾

线性模型

在最初介绍的线性模型中,我们介绍了PLA算法、线性回归(带有正则项的称为Ridge Regression)、逻辑回归,这三个模型分别对应三种不同的误差函数。在最近的博文中我们又介绍了线性软间隔SVM,它也是解决线性的问题,它是通过二次规划来解决的。如果要解决回归的问题,我们还介绍了支持向量回归模型,它是通过tube的误差和二次规划来解决的。
技术分享

Kernel模型

Kernel的模型我们介绍了SVM和SVR,它们都是使用二次规划来解决化简的对偶问题。我们还介绍了将线性回归变成kernel的方法,即使用表示定理来推导其kernel的形式,核逻辑回归也是用的大体类似的方法。我们还使用概率SVM先做SVM,然后再做逻辑回归进行微调。
技术分享

针对这些模型,我们很少使用PLA、linear SVR,因为其效果不如另外三个线性模型好。而kernel ridge regression和kernel logistic regression也是不经常用的,因为其系数大都不是0,这样在预测的时候会花费很多无谓的计算。

转载请注明作者Jason Ding及其出处
GitCafe博客主页(http://jasonding1354.gitcafe.io/)
Github博客主页(http://jasonding1354.github.io/)
CSDN博客(http://blog.csdn.net/jasonding1354)
简书主页(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles)
百度搜索jasonding1354进入我的博客主页

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

标签:机器学习实验   机器学习   

原文地址:http://blog.csdn.net/jasonding1354/article/details/45463813

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!