前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >机器学习入门 8-9 lasso

机器学习入门 8-9 lasso

作者头像
触摸壹缕阳光
发布于 2020-01-14 07:58:42
发布于 2020-01-14 07:58:42
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

本系列是《玩转机器学习教程》一个整理的视频笔记。本小节介绍模型正则化的另外一种方式LASSO,依然通过具体的编程实现LASSO,并对α取值与过拟合(拟合曲线)之间的关系进行探讨,进而对LASSO与Ridge进行比较。

1

LASSO Regression

模型正则化的方式有很多种,在上一小节介绍了岭回归模型正则化的方式,在这一小节介绍另外一种模型正则化的方式LASSO Regression。LASSO这个词可能不像Ridge(岭)好理解,其实LASSO这个词是一大串英文单词首字母的缩写。

Ridge Regression的任务是最小化损失函数(在线性回归中为MSE)的同时让θ系数值尽量的小,为了达到这个目的,我们在原有损失函数的基础上添加了一项所有θ值平方和的正则化项,希望在最小化损失函数的同时考虑到新添加的正则化项,通过正则化项可以控制θ的大小,让θ值尽可能的小。为了能够灵活决定模型正则化的程度,引入了确定正则化程度的超参数α。

  1. 当α取值为0的时候,相当于没有添加正则化项,此时优化的目标函数仅仅包含MSE损失函数;
  2. 在极端情况下α取值为正无穷的时候,此时前面的MSE损失函数占整个待优化的目标函数的比重非常小,优化的主要任务变成了让θ系数尽可能的小,这种情况下只有当所有的θi都等于0的时候才能使得θi的平方尽可能的小;

很显然对于MSE(预测的准确度)和正则化项(让每个θ系数都尽量小)之间需要取得一个平衡。

LASSO Regression的原理和Ridge Regression是一样的,只不过对于如何表达θ值最小化这件事情上选择了不同的正则化方式。我们可以用θ平方来代表θ的大小,当然也可以使用θ的绝对值来代表θ的大小,而LASSO Regression的过程就是在损失函数MSE的基础上添加α乘以所有θi的绝对值,在LASSO Regression中的超参数α和在Ridge Regression中的作用一样,依然是用于调节θ系数小的程度占整个优化目标函数程度的多少。

那LASSO到底什么意思呢???

LASSO Regression是由Least Absolute Shrinkage and Selection Operator Regression这一系列单词的首字母大写组合而成的,当然了不需要记住这一大串单词,只需要记住LASSO这种说法就可以了。

在LASSO的英文拼写中可以看到"Selection Operator"这个关键词,中文翻译为"选择运算符",也就是说LASSO Regression有一定的selection的功能,下一小节会更为详细的解释。

在数学的意义上理解,LASSO Regression和Ridge Regression似乎都是让系数θ尽可能小。接下来通过具体的编程实践看看LASSO Regression具体的效果,并对比与Ridge Regression有哪些不同的地方。

  • Part1:代码基本和上一小节一样,首先创建一个虚拟的测试用例,x和y之间呈现有一定噪声的线性关系。
  • Part2:实现不使用任何正则化方式的多项式回归,将degree参数设置为20,计算在测试集上的均方误差,并绘制对应的拟合曲线。

绘制多像是回归阶数为20的拟合曲线。

没有添加任何正则化的多项式回归在测试用例上的均方误差值为167左右,这个误差相当的大,通过绘制出来的拟合曲线也可以看出,这根拟合曲线相对来说非常不规则和陡峭,很明显模型发生了过拟合,因此在测试集上的预测结果非常不好,模型的泛化能力非常差。

  • Part3:使用LASSO Regression的方式对生成的测试用例进行预测,求出相应的均方误差值,并绘制拟合曲线。

Ridge Regression在sklearn的linear_model包下,同样的LASSO Regression类也在sklearn的linear_model包下。实现LASSO Regression的方式和实现Ridge Regression的方式类似,只是将相应的Ridge类换成LASSO类即可。

接下来通过取不同的α值,观察在不同α值下,LASSO Regression的表现。为了试验准确性,将多项式回归到阶数统一设置为20。

  • Step1:LASSO Regression超参数α设置为0.01。

在LASSO Regression中首先尝试将α的取值设置为0.01。这里需要注意,此时在LASSO Regression中首先尝试的第一个α值比在上一小节介绍的Ridge Regression中首先尝试传入的α值要大很多,这是因为对于Ridge Regression来说,正则化的那一项是θ的平方和,平方后的结果会非常的大,所以将α设置的很小来将正则化项的结果调小。而对于LASSO Regression来说,它的正则化项是每个θ绝对值的和,所以相对来说LASSO Regression这个正则化项要比Ridge Regression中的正则化项要小很多,所以当设置LASSO的α取值的时候可以大一些。对于这些超参数都是根据经验进行取值的,如果具体进行机器学习算法的过程中需要通过不断的实验不断的观察结果慢慢地形成经验指导,这样在调参的时候可以大概指导参数在那个范围内选择会相应的比较好。

此时α取值为0.01的LASSO Regression在测试集上的均方误差值为1.14,相比于之前不使用任何正则化项的多项式回归167的均方误差值要小很多。

接下来使用封装的plot_model函数绘制α取值为0.01的LASSO回归的拟合曲线。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plot_model(lasso1_reg)
  • Step2:LASSO Regression超参数α设置为0.1。

实验的过程和上一小节实验Ridge Regression一致,将α的取值逐渐增大。此时将α取值设置为0.1。在测试集上得到的均方误差值为1.12,比没有使用正则化的多项式167以及将α设置为0.01的LASSO Regression得到的均方误差值都要小。

接下来使用封装的plot_model函数绘制α取值为0.1的LASSO Regression的拟合曲线。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plot_model(lasso2_reg)

通过绘制结果可以看出,拟合的曲线已经非常接近一根直线了。

  • Step3:LASSO Regression超参数α设置为1。

此时计算出来的均方误差值为1.84,虽然比没有使用正则化的多项式回归要好,但是比α取值为0.01以及α取值为0.1的均方误差结果要差一点,很明显当α取值为1的时候正则化过渡。

接下来使用封装的plot_model函数绘制α取值为1的LASSO回归的拟合曲线。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plot_model(lasso3_reg)

通过绘制结果可以看出,拟合的曲线已经是一条平行的直线了。那么当α取值为1的时候,LASSO Regression的正则化程度已经非常高了。当然在实际选择机器学习算法参数的时候,需要在完全不正则化(α取值为0)与正则化过头(就此例而言α取值为1,拟合曲线变成一条平行的直线)之间选择一个效果最好的取值。

回忆一下在上一个小节实验Ridge Regression的时候,随着α取值逐渐增大,相应的拟合曲线虽然变的越来越平滑,但是它始终呈现的是曲线的形态,但是对于LASSO Regression来说,当α取0.1的时候,拟合曲线近乎就是一条直线了,这个特性是由LASSO Regression正则化项式子的特殊性所决定的。

2

Ridge与LASSO

接下来简单比较一下Ridge和LASSO这两种正则化的方式。

右上角是将α值设置为100的Ridge Regression,此时可以发现得到的模型依然是一条曲线,事实上使用Ridge Regression很难让我们得到的这个模型是一根倾斜的直线,它总是保持着这种弯曲的形状。而当我们使用LASSO Regression的时候,在上图右下角α取值为0.1的时候,此时可以发现得到的模型其实严格来说依然是一根曲线,但是很显然比右上角的Ridge Regression得到的拟合曲线弯曲程度更低,更接近一根直线。换句话说,使用LASSO Regression这种方式得到的模型更倾向于是一根直线,而很显然使用Ridge Regression得到的依然是曲线。LASSO Regression更倾向于得到一根直线,如果将其反映到系数θ上,有很多的特征前面不再拥有系数(系数变为0),这也正是LASSO Regression的一个特点。

LASSO Regression倾向于使得我们在优化这个损失函数的过程中,让一部分系数θ变为0,而不是让所有的θ都变成一个很小的值(Ridge回归的倾向),正是由于这个特性LASSO名字中最后的"Selection Operator"的意思就在于LASSO能够当做是一种特征选择的方法。因为使用LASSO的过程中如果某些θ等于0,就代表了LASSO Regression认为这个θ值所对应的那个特征完全没有用,而剩下的θ不等于0的那些特征就是LASSO Regression认为这个θ值对应的特征是有用的,所以LASSO可以当做特征选择来使用,这就是英文"Selection Operator"的具体含义。

为什么LASSO会有Selection Operator这样的作用呢?首先来看一下Ridge回归。

对于Ridge Regression来说对应的损失函数为J(θ),现在我们单看模型正则化项,也就是Ridge Regression单独加上的这部分(此时可以认为将α值取无穷大),对于正则化项来说,我们了解此时θ值一定是逐渐变为0,但是现在关键是看θ是如何从一个初始化的θ值变为0的。我们可以使用梯度下降的角度来看这个问题,对J(θ)的正则化项求导,计算得到的梯度非常简单,每一个式子对每一个θi求导得到的结果就是二倍的θi,其他的θ对于θi而言都是常数,然后乘上前面的α\2得到的θi的导数就是θi,依次类推得到的梯度值如上图左下角所示,此时梯度中的θ1,θ2...θn都是有值的,所以如果此时初始化的点为蓝色的点,会顺着梯度反方向逐渐达到零点,也就是对应上图的右下角轨迹所示,梯度下降过程的每一步θ都是有值的。

对于LASSO Regression来说。

同样让LASSO Regression中的α值趋向于无穷,也就是说此时同样只看LASSO Regression中的正则化项,此时的正则化项中是绝对值函数,绝对值是不可导的,不过我们可以通过一个简单的分类函数sign来刻画绝对值函数的导数,得到的梯度如上图左下角所示。对于sign函数来说,当θ值大于0的时候取1,当θ值等于0的时候取0,当θ值小于0的时候取-1,这其实非常好理解,因为x的绝对值函数在x大于0的时候为y = x,在x小于0的时候y = -x,我们相当于分情况讨论。

对于LASSO Regression来说,如果不考虑MSE这一项,它的梯度就是α乘上sign(θi),梯度向量中的值不是1、-1就是0,也就是说如果从蓝色的坐标点开始使用LASSO Regression的方式,它会沿着一个方向首先走到轴为0的地方,如上图右下角所示,此时梯度的反方向沿着(-1, -1),走到了y轴之后再在y轴上沿着y轴方向达到0点,此时的方向就是(0, -1)。

LASSO Regression不能像前面Ridge Regression一样,用曲线的方式逐渐达到0点位置,而只能使用这种非常规则的方式,在这个过程中,很有可能达到某些轴的0点,使得LASSO Regression最终结果的θ值中包含很多的0。其实这也解释为什么叫做岭回归,因为岭回归的过程更像是爬山的过程,在梯度下降法中梯度下降的过程就是不断的找坡度缓的地方,一点一点的往下行进,这就像翻山越岭的过程,所以称Ridge Regression为岭回归。LASSO Regression具有一个非常重要的特性就是作为特征选择的过程,不过也正是因为这样的特征使得LASSO Regression这种方法有可能会错误的将一些原本有用的特征也变为无用特征,所以从计算的角度来看,还是Ridge Regression更为准确,但是如果你的特征特别大的话,比如说在多项式回归中非要将degree的值设置为100,可以想象此时的特征数量会非常非常的多,如果此时使用LASSO Regression的话可以非常好的起到将模型的特征变小的作用。

在下一小节继续总结Ridge Regression和LASSO Regression,并且据此提出另一种模型弹性网。

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
机器学习入门 8-8 模型泛化与岭回归
本系列是《玩转机器学习教程》一个整理的视频笔记。本小节通过探讨模型过拟合的现象,提出岭回归这个模型正则化方式,最后通过实验对α取值与过拟合(拟合曲线)之间的关系进行探讨,随着α取值从小到大,拟合曲线从弯弯曲曲到逐渐平滑。
触摸壹缕阳光
2020/01/14
1.1K0
机器学习入门 8-8 模型泛化与岭回归
突破最强算法模型,回归!!
读者问:“我听说在某些回归算法中,如岭回归和LASSO,数据标准化或归一化非常重要。但是,我不太清楚什么时候以及为什么需要进行这些步骤。方便大概解释一下吗?”
Python编程爱好者
2023/12/18
3720
突破最强算法模型,回归!!
机器学习(8)之范数正则与Lasso详解
关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 线性回归及L2正则 大家对于线性回归以及带有二范数正则的线性回归已经比较熟悉
昱良
2018/04/04
1.5K0
机器学习(8)之范数正则与Lasso详解
机器学习速成第二集——监督学习之回归(理论部分)!
监督学习中的回归部分主要涉及预测连续的、具体的数值,例如房价、股票价格等。在机器学习中,回归问题通常通过建立一个模型来描述输入变量和输出变量之间的关系,从而实现对未知数据的预测。
用户11315985
2024/10/16
2730
机器学习速成第二集——监督学习之回归(理论部分)!
机器学习入门 8-10 L1,L2和弹性网络
本系列是《玩转机器学习教程》一个整理的视频笔记。本小节主要介绍L1,L2正则项,引入Lp范数新概念,提出L0正则项。为了利用L1,L2正则项各自优点,提出了弹性网。实际进行模型正则化时,优先使用岭回归,如果特征数量非常多,选择弹性网。
触摸壹缕阳光
2020/02/17
1.7K0
机器学习入门 8-10 L1,L2和弹性网络
Python3入门机器学习(八)- 多项式回归
相当于我们为样本多添加了一些特征,这些特征是原来样本的多项式项,增加了这些特征之后,我们们可以使用线性回归的思路更好的我们的数据
Meet相识
2018/09/12
2.4K0
Python3入门机器学习(八)- 多项式回归
岭回归与LASSO回归:解析两大经典线性回归方法
岭回归,又称L2正则化,是一种用于解决多重共线性问题的线性回归技术。多重共线性是指自变量之间存在高度相关性的情况,这会导致普通最小二乘法(OLS)估计的不稳定性,使得模型的预测性能下降。岭回归通过在损失函数中添加一个正则化项来解决这个问题,其数学表达式如下:
小馒头学Python
2023/11/23
7.2K0
岭回归与LASSO回归:解析两大经典线性回归方法
【机器学习】第二部分上:线性回归
线性模型是自然界最简单的模型之一,它描述了一个(或多个)自变量对另一个因变量的影响是呈简单的比例、线性关系.例如:
杨丝儿
2022/02/17
2K0
【机器学习】第二部分上:线性回归
《Scikit-Learn与TensorFlow机器学习实用指南》 第4章 训练模型
在之前的描述中,我们通常把机器学习模型和训练算法当作黑箱来处理。如果你动手练习过前几章的一些示例,就能惊奇地发现优化回归系统、改进数字图像的分类器、甚至可以零基础搭建一个垃圾邮件的分类器,但是却对它们内部的工作流程一无所知。事实上,许多场合你都不需要知道这些黑箱子的内部有什么,干了什么。
SeanCheney
2018/09/19
9830
《Scikit-Learn与TensorFlow机器学习实用指南》 第4章 训练模型
【机器学习的基本思想】模型优化与评估
  在前几篇文章中,我们介绍了k近邻算法和线性回归两个基本的机器学习模型。或许已经注意到,除了模型本身以外,要训练一个好的机器学习模型,还有许多需要注意的地方。例如,我们将数据集分为训练集和测试集,在前者上用不同参数训练,再在后者上测试,以选出效果最好的模型参数。此外,在线性回归一文中,我们还对数据集做了预处理,把每个特征下的数据分别做归一化,放缩到同一数量级上。诸如此类的细节在机器学习中还有很多,它们虽然本身和算法关系不大,但对模型最终效果的好坏又有着至关重要的影响,而把握好这些细节的前提是深入理解机器学习的基本思想。本文就来讲解这些机器学习模型的基本思想。
Francek Chen
2025/01/22
1110
【机器学习的基本思想】模型优化与评估
机器学习三人行(系列五)----你不了解的线性模型(附代码)
到目前为止,我们已经将机器学习模型和他们的训练算法大部分视为黑盒子。 如果你经历了前面系列的一些操作,如回归系统、数字图像分类器,甚至从头开始建立一个垃圾邮件分类器,这时候你可能会发现我们只是将机器学习模型和它们的训练算法视为黑盒子,所有这些都不知道它们是如何工作的。 但是,了解事情的工作方式可以帮助我们快速找到合适的模型,以及如何使用正确的机器学习算法,为您的任务提供一套完美的超参数。 在本篇文章中,揭开它们的面纱,一睹芳容,我们将讨论以下内容: 线性回归参数模型的求解 多项式回归和学习曲线 正则化的线性
智能算法
2018/04/03
1.1K0
机器学习三人行(系列五)----你不了解的线性模型(附代码)
算法金 | 一个强大的算法模型,多项式回归!!
在许多实际场景中,简单的线性回归无法捕捉复杂的模式,这时候就该祭出我们多项式回归大法了,一种在数据分析和预测中常用的机器学习方法。
算法金
2024/06/12
2292
算法金 | 一个强大的算法模型,多项式回归!!
机器学习回归模型的最全总结!
回归分析为许多机器学习算法提供了坚实的基础。在这篇文章中,我们将介绍回归分析概念、7种重要的回归模型、10 个重要的回归问题和5个评价指标。
算法进阶
2023/09/21
2.1K0
机器学习回归模型的最全总结!
图解机器学习 | 逻辑回归算法详解
教程地址:http://www.showmeai.tech/tutorials/34
ShowMeAI
2022/03/10
1K0
图解机器学习 | 逻辑回归算法详解
机器学习入门 8-3 过拟合与欠拟合
本系列是《玩转机器学习教程》一个整理的视频笔记。通过之前的小节了解了多项式回归的基本思路,有了多项式就可以很轻松的对非线性数据进行拟合,进而求解非线性回归的问题,但是如果不合理的使用多项式,会引发机器学习领域非常重要的问题过拟合以及欠拟合。
触摸壹缕阳光
2019/12/25
1.1K0
最强总结!8个线性回归核心点!!
那从今天开始,我预计会陆陆续续出一些内容,来论述各个算法的基础核心点,大家感兴趣可以关注起来。
Python编程爱好者
2024/05/13
9470
最强总结!8个线性回归核心点!!
【干货】机器学习中的五种回归模型及其优缺点
【导读】近日,机器学习工程师 George Seif 撰写了一篇探讨回归模型的不同方法以及其优缺点。回归是用于建模和分析变量之间关系的一种技术,常用来处理预测问题。博文介绍了常见的五种回归算法和各自的特点,其中不仅包括常见的线性回归和多项式回归,而且还介绍了能用于高维度和多重共线性的情况的Ridge回归、Lasso回归、ElasticNet回归,了解它们各自的优缺点能帮助我们在实际应用中选择合适的方法。 编译 | 专知 参与 | Yingying 五种回归模型及其优缺点 线性和逻辑斯蒂(Logistic)回
WZEARW
2018/04/08
9.6K0
【干货】机器学习中的五种回归模型及其优缺点
机器学习 | 深度理解Lasso回归分析
上篇《线性回归中的多重共线性与岭回归》(点击跳转)详细介绍了线性回归中多重共线性,以及一种线性回归的缩减(shrinkage)方法 ----岭回归(Ridge Regression),除此之外另一种线性回归的缩减方法----Lasso回归亦可解决多重共线性问题,但是不一样的是Lasso回归针对不同的自变量,会使其收敛的速度不一样。有的变量就很快趋于0了,有的却会很慢。因此一定程度上Lasso回归非常适合于做特征选择。
数据STUDIO
2021/06/24
12.5K0
机器学习中的线性回归
线性回归是机器学习领域中最简单而有效的模型之一。它用于建立自变量(输入)和因变量(输出)之间的线性关系。在实际应用中,线性回归广泛用于预测、分析和建模。让我们深入了解线性回归的基本原理和应用。
GeekLiHua
2025/01/21
2250
机器学习 | 多项式回归处理非线性问题
之前我们学习了一般线性回归,以及加入正则化的岭回归与Lasso,其中岭回归可以处理数据中的多重共线性,从而保证线性回归模型不受多重共线性数据影响。Lasso主要用于高维数据的特征选择,即降维处理。
数据STUDIO
2021/06/24
1.4K0
推荐阅读
相关推荐
机器学习入门 8-8 模型泛化与岭回归
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验