AI算法14-套索回归算法Lasso Regression | LR

套索回归算法概述

套索回归算法简介

在统计学和机器学习中,套索回归是一种同时进行特征选择和正则化(数学)的回归分析方法,旨在增强统计模型的预测准确性和可解释性,

正则化是一种回归的形式,它将系数估计(coefficient estimate)朝零的方向进行约束、调整或缩小。也就是说,正则化可以在学习过程中降低模型复杂度和不稳定程度,从而避免过拟合的危险。一个简单的线性回归关系如下式。其中 Y 代表学习关系,β 代表对不同变量或预测因子 X 的系数估计。

Y ≈ β_0 + β_1X_1 + β_2X_2 + …+ β_pX_p

拟合过程涉及损失函数,称为残差平方和(RSS)。系数选择要使得它们能最小化损失函数。

这个式子可以根据你的训练数据调整系数。但如果训练数据中存在噪声,则估计的系数就不能很好地泛化到未来数据中。这正是正则化要解决的问题,它能将学习后的参数估计朝零缩小调整。

套索和岭回归都是正则化的方法,我们将对比着描述,其中套索需要最小化下图的函数:

很明显,这种变体只有在惩罚高系数时才有别于岭回归。它使用 |β_j|(模数)代替 β 的平方作为惩罚项。在统计学中,这被称为 L1 范数。让我们换个角度看看上述方法。岭回归可以被认为是求解一个方程,其中系数的平方和小于等于 s。而 套索 可以看作系数的模数之和小于等于 s 的方程。其中,s 是一个随收缩因子 λ 变化的常数。这些方程也被称为约束函数。

假定在给定的问题中有 2 个参数。那么根据上述公式,岭回归的表达式为 β1² + β2² ≤ s。这意味着,在由 β1² + β2² ≤ s 给出的圆的所有点当中,岭回归系数有着最小的 RSS(损失函数)。同样地,对 套索 而言,方程变为 |β1|+|β2|≤ s。这意味着在由 |β1|+|β2|≤ s 给出的菱形当中,套索 系数有着最小的 RSS(损失函数)。

下图描述了这些方程。

上图的绿色区域代表约束函数域:左侧代表 套索,右侧代表岭回归。其中红色椭圆是 RSS 的等值线,即椭圆上的点有着相同的 RSS 值。对于一个非常大的 s 值,绿色区域将会包含椭圆的中心,使得两种回归方法的系数估计等于最小二乘估计。但是,上图的结果并不是这样。在上图中,套索 和岭回归系数估计是由椭圆和约束函数域的第一个交点给出的。因为岭回归的约束函数域没有尖角,所以这个交点一般不会产生在一个坐标轴上,也就是说岭回归的系数估计全都是非零的。然而,套索 约束函数域在每个轴上都有尖角,因此椭圆经常和约束函数域相交。发生这种情况时,其中一个系数就会等于 0。在高维度时(参数远大于 2),许多系数估计值可能同时为 0。

这说明了岭回归的一个明显缺点:模型的可解释性。它将把不重要的预测因子的系数缩小到趋近于 0,但永不达到 0。也就是说,最终的模型会包含所有的预测因子。但是,在 套索 中,如果将调整因子 λ 调整得足够大,L1 范数惩罚可以迫使一些系数估计值完全等于 0。因此,套索 可以进行变量选择,产生稀疏模型。

套索回归发展历史

套索是由斯坦福大学统计学教授Robert Tibshirani于1996年基于Leo Breiman的非负参数推断(Nonnegative Garrote, NNG)提出。后者于其1995年的论文中发表。Robert Tibshirani最初使用套索来提高预测的准确性与回归模型的可解释性,他修改了模型拟合的过程,在协变量中只选择一个子集应用到最终模型中,而非用上全部协变量。

在随后的研究中不同的套索变体被创造出来。几乎所有这些变体都集中于尊重或利用协变量之间的不同类型的依赖性。2005年,Hui Zou和Trevor Hastie提出通过弹性网(elastic net)来实现正则化和变量选择。当预测变量的数量大于样本大小时,弹性网络正则化会增加额外的岭回归类惩罚,从而提高性能,允许方法一起选择强相关变量,并提高整体预测精度。

2006年Ming Yuan和Yi Lin提对变量进行组合,即group 套索,允许选择相关协变量组作为单个单元,主要针对某些情况下变量不单个出现而仅与其他变量一同出现。

2009年,Arnau Tibau Puig等人对group 套索进一步扩展,以在各个组(稀疏组套索)中执行变量选择并允许组之间的重叠(重叠组套索)。

套索结合了上述的两种方法,它通过强制让回归系数绝对值之和小于某固定值,即强制一些回归系数变为0,有效地选择了不包括这些回归系数对应的协变量的更简单的模型。这种方法和岭回归类似,在岭回归中,回归系数平方和被强制小于某定值,不同点在于岭回归只改变系数的值,而不把任何值设为0。

套索回归主要事件

年份

事件

相关论文/Reference

1995

Leo Breiman提出非负参数推断

Breiman, L.(1995). Better Subset Regression Using the Nonnegative Garrote. Technometrics. 37 (4): 373–384.

1996

斯坦福大学统计学教授Robert Tibshirani1996年基于Leo Breiman的非负参数推断(Nonnegative Garrote, NNG)提出套索

Tibshirani, R. (1996). Regression Shrinkage and Selection via the 套索. Journal of the Royal Statistical Society. Series B (methodological). 58 (1): 267–88.

2005

Hui ZouTrevor Hastie提出通过弹性网(elastic net)来实现正则化和变量选择

Zou, H.; Hastie, T. (2005). Regularization and Variable Selection via the Elastic Net. Journal of the Royal Statistical Society. Series B (statistical Methodology). 67 (2): 301–20.

2006

Ming YuanYi Lin提对变量进行组合,即group 套索

Yuan, M.; Lin, Y. (2006). Model Selection and Estimation in Regression with Grouped Variables. Journal of the Royal Statistical Society. Series B (statistical Methodology). 68 (1): 49–67.

2009

Arnau Tibau Puig等人对group 套索进一步扩展,以在各个组(稀疏组套索)中执行变量选择并允许组之间的重叠(重叠组套索)

Puig, A. T., Wiesel, A.; Hero, A. O. (2009). A Multidimensional Shrinkage-Thresholding Operator. Proceedings of the 15th workshop on Statistical Signal Processing, SSP’09, IEEE, pp. 113–116.

套索回归算法的原理及作用

套索回归算法的原理

套索算法的核心思想是在最小二乘估计的基础上,增加一个关于回归系数的L1正则化项。这个正则化项的作用是对回归系数进行惩罚,使得部分系数被压缩至零,从而实现特征选择。

具体来说,套索算法的优化目标可以表示为:

β_hat = argmin { ∑(y_i - β_0 - ∑x_ij * β_j)^2 + λ∑|β_j| }

其中,y_i表示观测值,x_ij表示特征值,β_0表示截距项,β_j表示回归系数,λ是正则化参数,用于控制正则化项的权重。

这个优化目标包含两部分:前半部分是最小二乘估计的损失函数,用于衡量模型拟合数据的能力;后半部分是L1正则化项,用于对回归系数进行惩罚。λ越大,惩罚力度越强,越多的回归系数将被压缩至零。

套索回归算法的作用

在处理具有大量特征的数据集时,我们常常面临两个主要的挑战:

  1. 特征之间可能存在多重共线性,这会导致模型参数估计不稳定甚至无法计算;
  2. 并非所有特征都对预测结果有显著影响,一些无关或冗余的特征可能会干扰模型的预测性能。传统的最小二乘法(Ordinary Least Squares, OLS)回归在这样的高维数据上往往会得到过拟合的模型,即模型在训练集上表现良好但在新数据上泛化能力弱。

为了解决这些问题,统计学家和发展机器学习算法的研究人员提出了一系列的正则化技术,其中套索回归(套索 Regression)就是一种被广泛应用的方法。套索回归通过在回归模型中加入一个调节复杂度的惩罚项来克服上述问题。这个惩罚项是模型系数绝对值之和的λ倍,也就是所谓的L1范数,其中λ是一个非负的调节参数。

引入L1范数作为惩罚项有几个关键的优势:

  1. 稀疏性:L1范数有助于模型产生稀疏解,即推动某些系数减小至零。这一性质特别有用,因为它不仅降低了模型的复杂性,还实现了特征选择的目的,即自动地识别出对响应变量有重要影响的变量。
  2. 可解释性:通过减少特征的数量,模型变得更加容易解释。这对于高维数据尤其重要,因为在高维情况下,找出重要的特征并理解每个特征如何影响预测结果是非常关键的。
  3. 计算效率:尽管套索回归是一个复杂的优化问题,存在多种算法可以高效地求解,如坐标下降法、最小角回归法等。

套索回归算法的实现过程

  1. 数据准备:首先,收集并整理好用于回归分析的数据集,包括观测值、特征值等。
  2. 参数设置:选择合适的正则化参数λ。这通常需要通过交叉验证等方法来确定最优值。
  3. 优化求解:利用优化算法(如坐标下降法、最小角回归等)求解上述优化目标,得到回归系数的估计值。
  4. 特征选择:根据回归系数的估计值,将绝对值较小的系数置为零,从而实现特征选择。这些被置为零的特征在后续建模中将不再考虑。
  5. 模型评估:利用测试数据集对得到的模型进行评估,包括拟合优度、预测误差等指标。根据评估结果调整模型参数,以达到更好的性能。

套索回归算法的代码实现

from sklearn.linear_model import Lasso

lamb = 0.025

lasso_reg = Lasso(alpha=lamb)

lasso_reg.fit(X_poly_d, y)

print(lasso_reg.intercept_, lasso_reg.coef_)

print(

    L_theta_new(intercept=lasso_reg.intercept_,

                coef=lasso_reg.coef_.T,

                X=X_poly_d,

                y=y,

                lamb=lamb))


X_plot = np.linspace(-3, 2, 1000).reshape(-1, 1)

X_plot_poly = poly_features_d.fit_transform(X_plot)

h = np.dot(X_plot_poly, lasso_reg.coef_.T) + lasso_reg.intercept_

plt.plot(X_plot, h, 'r-')

plt.plot(X, y, 'b.')

plt.show()

套索回归算法的应用场景

套索回归可以用于特征选择、解决多重共线性问题以及解释模型结果等应用场景。例如,在医疗诊断领域,我们可以使用套索回归来识别哪些疾病风险因素对预测结果具有最大的影响。在金融领域,我们可以使用套索回归来寻找哪些因素对股票价格变化有最大的影响。

此外,套索回归也可以与其他算法结合使用,例如随机森林、支持向量机等。通过结合使用,我们可以充分利用套索回归的特征选择功能,同时获得其他算法的优点,从而提高模型的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/797888.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

课程的概述

课程概述 课程类型 课程理论流派 制约课程开发的因素 课程设计的概念及两种模式 课程内容 课程评价 新课程改革理念

前一段时间比较火的刷网课平台源码,带数据库和教程

前一段时间比较火的刷网课平台源码,带数据库和教程。 好在疫情已经结束了,希望今后世上再无网课。 这个代码免费提供给大家学习开发用吧,作为一个php的入门学习案例用用还可以。 使用办法 网站根目录解压 打开nginx.htaccess文件&#x…

社交App iOS审核中的4.3问题:深入分析与解决策略

社交App审核中的4.3问题:深入分析与解决策略 在iOS应用开发和审核过程中,开发者经常会遇到苹果审核4.3问题。这一问题往往涉及应用的设计和内容重复性,导致应用被拒绝上架。为了帮助开发者更好地理解和解决这一问题,本文将对4.3问…

FPGA设计之跨时钟域(CDC)设计篇(1)----亚稳态到底是什么?

1、什么是亚稳态? 在数字电路中,如果数据传输时不满足触发器FF的建立时间要求Tsu和保持时间要求Th,就可能产生亚稳态(Metastability),此时触发器的输出端(Q端)在有效时钟沿之后比较长的一段时间都会处于不确定的状态(在0和1之间振荡),而不是等于数据输入端(D端)的…

集训 Day 3 总结 虚树 + dfs tree + 基环树

虚树 虚树,顾名思义是 只关注原树上的某些 关键点,在保留原树祖孙关系的前提下建出的一棵边数、点数大大减少的树 适用于优化某些在整棵树上进行 d p dp dp、 d f s dfs dfs 的问题 通常是题目中出现多次询问,每次给出树上的一些关键点&a…

taro小程序terser-webpack-plugin插件不生效(vue2版本)

背景 最近在做公司内部的小程序脚手架,为了兼容老项目和旧项目,做了vue2taro,vue3taro两个模板,发现terser-webpack-plugin在vue2和vue3中的使用方式并不相同,同样的配置在vue3webpack5中生效,但是在vue2webpack4中就…

【C++】哈希(散列)表

目录 一、哈希表的基本概念1.哈希的概念2.哈希冲突2.1 哈希函数2.2 哈希冲突的解决办法2.2.1 闭散列2.2.2 开散列 二、哈希表的实现1.闭散列的实现1.1 闭散列的结构1.2 闭散列的插入1.3 闭散列的删除1.4 闭散列的查找 2.开散列的实现2.1 key值不能取模的情况2.2 开散列的结构2.…

编译x-Wrt 全过程

参考自;​​​​​​c编译教程 | All about X-Wrt 需要详细了解的小伙伴还请参看原文 ^-^ 概念: x-wrt(基于openwrt深度定制的发行版本) 编译系统: ubuntu22.04 注意: 特别注意的是,整个编译过程,都是用 …

线程池笔记

笔记梳理 前言.PHONYC标准库头文件C/C通用或C特有头文件mkdirc_str()snprintfvsnprintfumaskopen函数可变参数列表va_startva_endfunctionalstatic_castpthread_cond_init_threads.emplace_backstd::bindstd::placeholdersThreadPool(const ThreadPool<T> &tp) dele…

springboot系列教程(三):全局异常映射(含源码)

一、异常分类 这里的异常分类从系统处理异常的角度看&#xff0c;主要分类两类&#xff1a;业务异常和系统异常。 1、业务异常 业务异常主要是一些可预见性异常&#xff0c;处理业务异常&#xff0c;用来提示用户的操作&#xff0c;提高系统的可操作性。常见的业务异常提示&…

学会电子期刊制作的必备工具

​随着数字化时代的到来&#xff0c;电子期刊作为一种新型的传播媒介&#xff0c;已经越来越受到大众的青睐。它以环保、便捷、互动性强等特点&#xff0c;逐渐成为传统纸质期刊的重要补充。那么&#xff0c;如何制作一款精美的电子期刊呢&#xff1f;本文将为你介绍学会电子期…

电子电气架构 --- 关于DoIP的一些闲思 上

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

什么? CSS 将支持 if() 函数了?

CSS Working Group 简称 CSSWG, 在近期的会议中决定将 if() 添加到 CSS Values Module Level 5 中。 详情可见&#xff1a;css-meeting-bot 、[css-values] if() function 当我看到这个消息的时候&#xff0c;心中直呼这很逆天了&#xff0c;我们知道像 less 这些 css 这些预…

给 「大模型初学者」 的 LLaMA 3 核心技术剖析

编者按&#xff1a; 本文旨在带领读者深入了解 LLaMA 3 的核心技术 —— 使用 RMSNorm 进行预归一化、SwiGLU 激活函数、旋转编码&#xff08;RoPE&#xff09;和字节对编码&#xff08;BPE&#xff09;算法。RMSNorm 技术让模型能够识别文本中的重点&#xff0c;SwiGLU 激活函…

传输层重点协议

目录 一、TCP协议 TCP协议段落格式 原理 1、确认应答机制 2、超时重传机制 3、连接管理机制 三次握手 四次挥手 &#xff08;1&#xff09;不能合并为三次挥手的原因 &#xff08;2&#xff09;延时应答机制—实现合并 &#xff08;3&#xff09;TIME_WAIT的作用 &…

代码随想录——不同路径Ⅱ(Leetcode 63)

题目链接 动态规划 class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int m obstacleGrid.length;int n obstacleGrid[0].length;int[][] dp new int[m][n];// 遇到障碍则从(0,0)到达for(int i 0; i < m && obstacleGrid[i][0] …

基于Vue和UCharts的前端组件化开发:实现高效、可维护的词云图与进度条组件

基于Vue和UCharts的前端组件化开发&#xff1a;实现高效、可维护的词云图与进度条组件 摘要 随着前端技术的迅速发展和业务场景的日益复杂&#xff0c;传统的整块应用开发方式已无法满足现代开发的需求。组件化开发作为一种有效的解决方案&#xff0c;能够将系统拆分为独立、…

浏览器出现 502 Bad Gateway的原理分析以及解决方法

目录 前言1. 问题所示2. 原理分析3. 解决方法 前言 此类问题主要作为疑难杂症 1. 问题所示 2. 原理分析 502 Bad Gateway 错误表示服务器作为网关或代理时&#xff0c;从上游服务器收到了无效的响应 通常出现在充当代理或网关的网络服务器上&#xff0c;例如 Nginx、Apache…

Go 语言返回组装数据

文章id 文章标题 ..... 分类 字段 &#xff1a;[分类名&#xff0c;分类描述 .... ]标签字段 : [标签名, 标签id ..... ]type ArticleWithCategoryLabel struct {system.SysArticleCategoryName system.SysCategorie json:"category_name"LabelName system.SysLab…

2024年7月13日全国青少年信息素养大赛Python复赛小学高年级组真题

第一题 题目描述 握情况。他决定让每个人输入一个正整数 N (0≤N≤1000)&#xff0c;然后计算并输出(5*N)的值。请用 在一个神秘的王国里&#xff0c;国王希望通过一个简单的测试来评估他的子民对基 础数学运算的掌 Python 编写程序&#xff0c;程序执行后要求用户输入一个正…