前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习入门 11-9 SVM思想解决回归问题

机器学习入门 11-9 SVM思想解决回归问题

作者头像
触摸壹缕阳光
发布2020-10-26 15:12:52
1.1K0
发布2020-10-26 15:12:52
举报
文章被收录于专栏:AI机器学习与深度学习算法

你对人人都喜欢,也就是说,你对人人都漠然。--王尔德

全文字数:1495字

阅读时间:9分钟

前言

本系列是《玩转机器学习教程》一个整理的视频笔记。本小节简单介绍如何使用支撑向量机的思想来解决回归问题,最后通过sklearn封装好的LinearSVR类实现波士顿房价的预测。

a

SVM的思想解决回归问题

回归问题的本质其实就是找到一根直线(或曲线)能够最大程度的拟合样本数据点,不同定义拟合的方式对应着不同的回归算法。比如前面介绍的线性回归算法定义拟合的方式就是让样本点到预测的这根直线的MSE的值最小。

SVM的思想解决回归问题对拟合的定义是指定一个margin值(在使用SVM的思想解决分类问题的时候,对应决策边界的上下也有一个margin),与SVM的思想解决分类问题的margin不同,使用SVM的思想解决回归问题期望在这个给定的margin范围内包含的样本点越多越好,margin范围内的样本点越多代表这个margin范围能够更好的表达我们的样本点,在这种情况下,取margin范围中间的这根直线作为真正的回归结果。

SVM的思想解决分类问题时,期望margin范围内的样本点越少越好,在极端情况下的hard margin svm要求margin范围里一个样本点都没有,但对于SVM的思想解决回归问题来说,恰恰相反,我们期望在margin范围里的样本点越多越好。

具体在使用SVM的思想解决回归问题的时候需要对这个margin范围进行一个指定,因此这里引入一个称为epsilon的超参数,超参数epsilon表示的是margin上下两根直线中任意一根直线到中间这根直线之间的距离。

b

sklearn中的SVC

sklearn针对SVM的思想解决回归问题提供了封装好的SVR类(support vector regression)。本小节使用波士顿房价的数据集,获取数据集之后使用train_test_split方法将数据集划分为训练集和测试集。

准备好了数据集,接下来就可以使用sklearn为我们封装好的使用SVM的思想解决回归问题的LinearSVR类和SVR类,如果需要使用这两个封装类需要从sklearn.svm模块中导入。LinearSVR和前面介绍的LinearSVC相对应,只不过LinearSVR是使用线性SVM的思想来解决回归问题,而LinearSVC是使用线性SVM的思想来处理分类问题(SVR: support vector regression,SVC: support vector classification)。类似于SVC(LinearSVC为线性分类器,而SVC为非线性分类器),在sklearn.svm模块中还有SVR类,对于SVR类来说我们可以传入不同的核函数进行计算,实例化SVR类时构造函数中参数的设置和之前介绍的SVC类近乎一样,只有一点区别就是对于SVR类来说,我们需要传入一个epsilon超参数,这个epsilon超参数就是上面提到的margin上下两根直线中任意一根直线到中间这根直线之间的距离。

相应的使用SVR之前也需要对数据进行标准化,所以使用Pipeline管道将标准化和回归这两个步骤连在一起。这里仅仅为了演示如何使用sklearn封装的SVM的思想解决回归问题,所以直接使用简单的LinearSVR,只指定用户传入的epsilon超参数,当然对于SVR来说还有一个非常重要的超参数C,为了简单起见,这里超参数C使用默认值。

接下来就可以实例化,在构造的时候不传入任何参数,epsilon超参数直接使用默认的0.1,之后使用fit方法对X_train和y_train进行拟合训练,训练完成之后调用score方法对X_test和y_test进行评估,在回归问题中score计算的是R方值。

此时计算出来的R方值为0.63,显然这个结果不够好,这里仅仅为了演示如何使用sklearn封装的SVM的思想解决回归问题。使用SVR有很多超参数可以调节,除了epsilon之外还包括C,如果使用的不是LinearSVR而是使用SVR类,还可以选择多项式核函数或者高斯核函数,对于不同的核函数又有不同的超参数,比如如果使用多项式核函数我们可以调节degree和小c的值,如果使用高斯核函数我们可以调节对应的gamma值。一定要注意我们不能仅仅看一次train_test_split得到的score值,很有可能此时模型已经对样本点过拟合,得到的score值并不准确,此时可以使用交叉验证的方式来得到更加准确的score值。

【机器学习】机器学习入门 11-6 到底什么是核函数

【机器学习】机器学习入门 11-7 RBF核函数

【机器学习】机器学习入门 11-8 RBF核函数中的gamma

【Pytorch】PyTorch入门视频笔记-PyTorch初见

【Linux】详解 Linux 中的硬链接与软链接

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI机器学习与深度学习算法 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档