将L1、L2或L1和L2正则化同时应用于线性回归

你可能听说过“Ridge”、“Lasso”和“ElasticNet”这样的术语。这些技术术语背后的基本概念都是正规化。在这篇文章中我们将详细进行说明。

一般情况下,使用正则化的目的是缓解过拟合。 正则化的主要好处是减轻过拟合,因为正则化模型能够很好地概括不可见的数据。 正则化的基本原理是通过向我们试图最小化的损失(成本)函数添加另一个项来限制(控制)模型学习过程。

正则化项(也称为惩罚项)可以采用不同的形式,本文将介绍常见的三种形式。

预测连续值输出的线性回归模型通过最小化其损失函数来学习其系数的最佳值。 同样的方法也适用于预测离散值输出的逻辑回归模型。 在这两种情况下,我们都可以在模型训练阶段应用正则化。

当我们使用Scikit-learn逻辑回归模型的 LogisticRegression() 类时,有一个称为penalty的超参数来选择正则化的类型。

LogisticRegression(penalty='...')

有 4 个选项可供选择惩罚(正则化)类型。

  • ‘none’ - 不应用正则化
  • ‘l1’ - 应用 L1 正则化
  • ‘l2’ - 应用 L2 正则化(默认选择)
  • ‘elasticnet’ - 应用了 L1 和 L2 正则化

而线性回归模型的 LinearRegression() 类,没有特定的超参数来选择正则化的类型。 需要使用不同的正则化类。

  • 当我们将 L2 正则化应用于线性回归的损失函数时,称为Ridge回归。
  • 当我们将 L1 正则化应用于线性回归的损失函数时,它被称为Lasso 回归。
  • 当我们将 L1 和 L2 正则化同时应用于线性回归的损失函数时,称为Elastic Net回归。

以上所有回归类型都属于正则化回归的范畴。下面我们详细讨论每种类型。

Ridge回归

将 L2 正则化项(定义如下)应用于线性回归的损失函数:

L2 = α.Σ(系数的平方值)

Ridge回归的 Scikit-learn 类是:

Ridge(alpha=...)

alpha 是控制正则化强度的超参数。 它必须是一个正浮点数。 默认值为 1。较大的 alpha 值意味着更强的正则化(过拟合程度降低但可能会变为欠拟合!)。 较小的值意味着弱正则化(过度拟合)。 我们想要构建一个既不会过拟合也不会欠拟合数据的模型。 因此,我们需要为 alpha 选择一个最佳值。

当Ridge(alpha=0) 等价于由 LinearRegression() 类求解的正态线性回归。 不建议将 alpha=0 与 Ridge 回归一起使用。 相反,应该直接使用LinearRegression()。

Lasso 回归

将 L1 正则化项(定义如下)应用于线性回归的损失函数:

L1 = α.Σ(系数的绝对值)

Lasso 回归的 Scikit-learn 类是:

Lasso(alpha=...)

该 alpha 及其定义与Ridge回归定义的 alpha 相同。 默认值为 1。

注意:Lasso(alpha=0) 等价于由 LinearRegression() 类求解的正态线性回归。同样不建议使用

Elastic Net回归

同时将 L1 和 L2 正则化项应用于线性回归的损失函数。

弹性网络回归的 Scikit-learn 类是:

ElasticNet(alpha=..., l1_ratio=...)

超参数 l1_ratio 定义了我们如何混合 L1 和 L2 正则化。 因此,它被称为 ElasticNet 混合参数。 l1_ratio 的可接受值范围是:

0 <= l1_ratio <= 1

0 < l1_ratio < 1 表示调节 L1 和 L2 项的组合。 如果 l1_ratio 接近 1,则表示 L1 项占主导地位。 如果 l1_ratio 接近于 0,则表示 L2 项占主导地位,所以

  • l1_ratio = 0 表示没有 L1 项,只有 L2 正则化。
  • l1_ratio = 1 表示没有 L2 项,只有 L1 正则化。

总结

在实际应用中有没有必要总是对线性回归模型应用正则化呢?如何判断使用哪一个呢? 首先,可以尝试使用 LogisticRegression() ,如果测试 RMSE 的值较低,而训练 RMSE 的值较高,则模型可能过度拟合。 然后,可以尝试应用每种类型的正则化并查看输出。 还可以为超参数 alpha 和 l1_ratio 尝试不同的有效值。 最后,通过查看训练集和测试集上的 RMSE 来选择一个好的模型。 一个好的模型既不会过拟合也不会欠拟合数据。 它应该能够在训练数据上表现良好,并且在看不见的数据(测试数据)上也能很好地泛化。

注意:除了应用正则化之外,还有其他方法可以解决过拟合问题。

作者:Rukshan Pramoditha

一文读懂正则化:LASSO回归、Ridge回归、ElasticNet 回归相关推荐

  1. 【机器学习】一文读懂正则化与LASSO回归,Ridge回归

    该文已经收录到专题机器学习进阶之路当中,欢迎大家关注. 1.过拟合 当样本特征很多,样本数相对较少时,模型容易陷入过拟合.为了缓解过拟合问题,有两种方法: 方法一:减少特征数量(人工选择重要特征来保留 ...

  2. ​一文读懂EfficientDet

    一文读懂EfficientDet. 今年年初Google Brain团队在 CVPR 2020 上发布了 EfficientDet目标检测模型, EfficientDet是一系列可扩展的高效的目标检测 ...

  3. 【深度学习】一文读懂机器学习常用损失函数(Loss Function)

    [深度学习]一文读懂机器学习常用损失函数(Loss Function) 最近太忙已经好久没有写博客了,今天整理分享一篇关于损失函数的文章吧,以前对损失函数的理解不够深入,没有真正理解每个损失函数的特点 ...

  4. 一文读懂 Bias(偏差)、Error(误差)、Variance(方差)

    一文读懂 Bias(偏差).Error(误差).Variance(方差) 偏差 偏差度量了学习算法的期望预期与真实结果的偏离程度 ,即刻画了学习算法本身的拟合能力.偏差太高,就会出现欠拟合,即与真实结 ...

  5. 一文读懂Faster RCNN

    来源:信息网络工程研究中心本文约7500字,建议阅读10+分钟 本文从四个切入点为你介绍Faster R-CNN网络. 经过R-CNN和Fast RCNN的积淀,Ross B. Girshick在20 ...

  6. 一文读懂序列建模(deeplearning.ai)之序列模型与注意力机制

    https://www.toutiao.com/a6663809864260649485/ 作者:Pulkit Sharma,2019年1月21日 翻译:陈之炎 校对:丁楠雅 本文约11000字,建议 ...

  7. 语言相关系数显著性_相关性分析在SPSS中的具体操作,一文读懂相关系数的含义及使用——【杏花开生物医药统计】...

    相关性分析介绍 生物和医学统计中,相关分析属于流程前端的探索性分析,研究变量间关系及性质,其结果在为下一步采取何种方法做出指引,为数据挖掘之前的基础工作. 相关系数的选择 相关分析之前,需要先确认变量 ...

  8. 技术向:一文读懂卷积神经网络

     技术向:一文读懂卷积神经网络 技术网络 36大数据(张雨石) · 2015-03-06 05:47 自今年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural Ne ...

  9. 目标检测: 一文读懂 CenterNet (CVPR 2019)

    论文:Objects as Points 论文链接:https://arxiv.org/pdf/1904.07850.pdf 论文代码:https://github.com/xingyizhou/Ce ...

最新文章

  1. Github配置(git+vscode+python+jupyter)
  2. hdu5185 dp:和为n且满足后一项是前一项或者+1的数列个数
  3. 贝叶斯定理的实际应用
  4. 从脚本本身获取Bash脚本的源目录
  5. 华章7-8月份新书简介(2018年)
  6. ios多线程开发的常用三种方式
  7. 1005 Spell It Right (20 分)——13行代码Ac
  8. KernelPCA进行非线性数据的映射和分类
  9. Python学习之路:函数介绍
  10. oracle报sp20042,oracle中ora-04301故障处理
  11. php限制下载文件格式,php下载文件源代码(强制任意文件格式下载)_PHP教程
  12. 用Dart搭建HTTP服务器(1)
  13. LeetCode—数据库简单题(三)
  14. imageJ下载 安装插件
  15. Struts1与Struts2原理 区别 详解 汇总
  16. 程序员在国外:我用20天在加拿大找到首份工作
  17. 【Python】模拟登陆并抓取拉勾网信息(selenium+phantomjs)
  18. Vue单元素/组件的过渡
  19. 从java代码到网络编程
  20. Elasticsearch Index Aliases详解

热门文章

  1. win10 下9001 端口被System ntoskrnl.exe PID 4的进程占用
  2. 对称加密算法AES简介及在OpenSSL中使用举例
  3. 机器学习中的特征提取
  4. ESLint 的使用
  5. python 导入数据及作图
  6. 【第3版emWin教程】第32章 emWin6.x的矢量字体(支持汉字全字库,Unicode编码,QSPI Flash方案)
  7. CodeForces - 747D Winter Is Coming(xjb乱搞)
  8. 用Python大声说出“我爱你”
  9. 2023五一出游数据报告.pdf(附下载链接)
  10. RGB转YCbCr算法 之Matlab FPGA实现介绍