大数据-208 数据挖掘 机器学习理论 - 岭回归 和 Lasso 算法 原理

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(已更完)
  • Elasticsearch(已更完)
  • DataX(已更完)
  • Tez(已更完)
  • 数据挖掘(正在更新…)

章节内容

上节我们完成了如下的内容:

  • 多重共线性 矩阵满秩
  • 线性回归算法

在这里插入图片描述

岭回归和Lasso

岭回归(Ridge Regression)和Lasso(Least Absolute Shrinkage and Selection Operator)是两种用于处理多重共线性问题的正则化回归方法。这两种方法通过添加正则化项(或惩罚项)来约束模型,使其在变量多、数据噪声大或者存在多重共线性(即自变量之间高度相关)的情况下,能够提高模型的泛化能力和预测效果。

岭回归的原理

岭回归是在普通线性回归的基础上加入了L2正则化项,使得模型更鲁棒。具体来说,岭回归的损失函数是普通最小二乘法的损失函数与一个L2正则化项之和。该正则化项是回归系数的平方和可以在极小化损失的同时,约束回归系数的大小,避免其过大从而导致模型过拟合。

Lasso回归的原理

Lasso回归与岭回归的主要区别在于它加入的是L1正则化项,即系数的绝对值之和Lasso回归的正则化项会迫使某些系数变为0,因此它可以在进行预测的同时,自动进行变量筛选,较岭回归更能减少特征数。

解决方式

解决共线性的问题的方法主要有以下三种:

  • 其一是在建模之前对各特征进行相关性检验,若存在多重共线性,则可以考虑进一步对数据集进行 SVD 分解或 PCA 主成分分析,在 SVD 或 PCA 执行的过程中会对数据集进行正交交换,最终所得数据集各列将不存在任务任何相关性。当然此举会对数据集的结构进行改变,且各列特征变得不可解释。
  • 其二则是采用逐步回归的方法,以此选取对因变量解释力度最强的自变量,同时对于存在相关性的自变量加上一个惩罚因子,削弱其对因变量的解释力度,当然该方法不能完全避免多重共线性的存在,但能够绕过最小二乘法对共线性较为敏感的缺陷,构建线性回归模型。
  • 其三则是在原有算法基础上进行修改,放弃对线性方程参数无偏估计的苛刻条件,使其能够容忍特征列存在多重共线性的情况,并且能够顺利建模,且尽可能的保证 SSE 取得最小值。

通常来说,能够利用一个算法解决的问题尽量不用多个算的组合来解决,因此此处我们主要考虑后两个方案,其中逐步回归我们将放在线性回归的最后一部分进行讲解,而第三个解决方案,则是我们接下来需要详细讨论的岭回归算法和 Lasso 算法。

岭回归和Lasso回归在加入正则化项的方式上有所不同,从而影响模型的选择和应用。岭回归更适合用于避免系数过大而导致的过拟合,而Lasso在特征选择方面更有优势,因此通常在高维数据中表现更佳。在实际应用中,可以通过交叉验证来选择最适合的正则化参数并在岭回归和Lasso之间做出选择,或者结合两者(Elastic Net)以获得更好的模型效果。

请添加图片描述

岭回归

基本原理

岭回归算法实际上是针对线性回归算法局限性的一个改进类算法,优化目的是解决系数矩阵XTX不可逆的问题,客观上同时也起到了克服数据集存在多重共线性的情况,而岭回归的做法也非常简单,就是在原方程系数计算公式中添加了一个扰动项,原先无法求广义逆的情况变成了求出其广义逆,使得问题稳定并得以求解。
岭回归在多元线性回归的损失函数上加上了正则项,表达为系数 w 的 L2 范式(即系数 w 的平方项)乘以正则化系数 λ,岭回归的损失函数的完整表达式写作:

在这里插入图片描述
我们仍然可以使用最小二乘法求解,可得:
在这里插入图片描述
此举看似简单,实则非常精妙,用一个满秩的对角矩阵和原系数矩阵计算进行相加的,实际上起到了两个作用,其一是使得最终运算结果(XTX + λI)满秩,即降低了原数据集特征列的共线性影响,其二也相当于对所有的特征列的因变量解释程度进行了惩罚,且λ越大惩罚作用越强。

现在,只要(XTX + λI)存在逆矩阵,我们就可以求解。一个矩阵存在逆矩阵的充分必要条件是这个矩阵的行列式不为0。假设原本的特征矩阵中存在共线性,则我们的方阵 XTX 就会不满秩(存在完全为零的行)。

在这里插入图片描述

此时方阵 XTX 就是没有逆的,最小二乘法就无法使用,加上了λI 之后,我们的矩阵就大不一样了:

在这里插入图片描述
最后得到的行列式还是一个梯形行列式,然而它已经不存在全 0 行或者全 0 列了,除非:

  • λ 等于 0
  • 原本的矩阵 XTX中存在对焦线上元素为 -λ,其他元素都为0 的行或者列

否则矩阵 XTX+λI 永远都是满秩,在 sklearn 中,λ的值我们可以自由的控制,因此我们可以让它不为 0,比避免第一种情况。而第二种情况,如果我们发现某个λ的取值下模型无法求解,那我们只需要更换一个λ的取值就好了,也可以顺利避免。也就是说,矩阵的逆永远存在,有这个保障,我们的 w 就可以写作:
在这里插入图片描述
如此,正则化系数λ就避免了精确相关关系带来的影响,至少最小二乘法在λ存在的情况下是一定可以使用。对于存在高度相关关系的矩阵,我们也可以通过调大λ,来让 XTX+λI 矩阵的行列式变大,从而让逆矩阵变小,以此控制参数向量 w 的偏移。当λ越大,模型越不容易受到共线性的影响。

在这里插入图片描述

Lasso

基本原理

在岭回归中,对自变量系数进行平方和处理也被称做 L2 正则化,由于此原因,岭回归中自变量系数虽然会很快衰减,但很难归为零,且窜在共线性的时候衰减过程也并非严格递减,这就是为何岭回归能够建模、判断共线性,但很难进行变量筛选的原因。为了弥补岭回归在这方面的不足,Tibshirani(1996)提出了 Lasso(The Least Absolute Shrinkage and Selectiontorperator)算法,将岭回归的损失函数中的自变量系数 L2 正则化修改为 L1 正则化,即 Lasso 回归损失函数为:
在这里插入图片描述
我们来看看 Lasso 的计算过程,当我们使用最小二乘法来求解 Lasso 中参数,我们依然对损失函数进行求导:
在这里插入图片描述
现在问题又回到了要求 XTX 的逆必须存在,在岭回归中,我们通过正则化系数λ能够向方阵 XTX 加上一个单位矩阵,以此来防止方阵 XTX 的行列式为 0,而现在 L1 范式所带的正则项λ在求导之后并不带有w 这个项,因此它无法对 XTX 造成任何影响。
也就是说,Lasso 无法解决特征之间精确相关的问题,当我们使用最小二乘法求解线性回归时,如果线性回归无解或者报除零的错误,换 Lasso 不能解决任何问题。
不过,在现实中我们其实会比较少遇到精确相关的多重共线性问题,大部分多重共线性问题应该时高度相关,而如果我们假设方阵 XTX 的逆是一定存在的,那我们可以有:

在这里插入图片描述
通过增大λ,我们可以为 w 的计算增加一个负项,从而限制参数估计中 w 的大小,而防止多重共线性引起的参数 w 被估计过大导致模型失准的问题,Lasso 不是从根本上解决多重共线性问题,是限制多重共线性带来的影响。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Spark Streaming

流处理和批处理 spark streaming底层原理 滑动窗口 window窗口操作二 过车数据案例

关于圆周率-3

最后一个问题,欧拉公式, 到底要说明的是什么。从欧拉函数的四个特殊值可以看出, 可见这个函数的作用是将角度映射回它原来的数值。在螺旋楼梯的例子中,我们用虚数单位的倍数搭建楼梯,并构造角度,角度是一系…

npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。

npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Exe cution_Policies。 所在位置 行:1 字符: 1 npm install ~~~ CategoryInf…

WPF+MVVM案例实战与特效(二十六)- 3D粒子方块波浪墙效果实现

文章目录 1、案例效果2、案例实现1、文件创建2. 功能代码实现3、粒子功能应用1、前端布局与样式2、代码解释2、 后端功能代码1、案例效果 2、案例实现 1、文件创建 打开 Wpf_Examples 项目、Models 文件夹下创建 3D粒子模型类 ParticleCubeWaveModel.cs 文件。在Tools 文件夹…

NVR设备ONVIF接入平台EasyCVR私有化部署视频平台如何安装欧拉OpenEuler 20.3 MySQL

在当今数字化时代,安防视频监控系统已成为保障公共安全和个人财产安全的重要工具。NVR设备ONVIF接入平台EasyCVR作为一款功能强大的智能视频监控管理平台,它不仅提供了视频远程监控、录像、存储与回放等基础功能,还涵盖了视频转码、视频快照、…

动态规划理论基础和习题【力扣】【算法学习day.26】

前言 ###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴&am…

webpack 执行流程 — 实现 myWebpack

前言 实现 myWebpack 主要是为了更好的理解,webpack 中的工作流程,一切都是最简单的实现,不包含细节内容和边界处理,涉及到 ast 抽象语法树和编译代码部分,最好可以打印出来观察一下,方便后续的理解。 re…

【WRF模拟】全过程总结:WPS预处理及WRF运行

【WRF模拟】全过程总结:WPS预处理及WRF运行 1 数据准备1.1 嵌套域设置(Customize domain)-基于QGis中gis4wrf插件1.2 静态地理数据1.2.1 叶面积指数LAI和植被覆盖度Fpar(月尺度)1.2.2 地面反照率(月尺度)1.2.3 土地利用类型+不透水面积1.2.4 数据处理:geotiff→tiff(W…

详解Gemini API的使用:在国内实现大模型对话与目标检测教程

摘要:本博客介绍了如何利用Gemini API实现多轮对话和图像目标检测识别功能,在Python中快速搭建自己的大模型完成实际任务。通过详细的步骤解析,介绍了如何申请Gemini API密钥,调用API、对话实现的代码,给出了上传图片识…

「QT」几何数据类 之 QPoint 整型点类

✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…

vue页签

效果: 快来学习: Vue 3 Composition API 和 script setup 语法 Composition API:Vue 3 引入的 Composition API 相比 Vue 2 的 Options API 提供了更灵活的代码组织方式。使用 setup 函数,可以将组件的所有功能和逻辑集中在一起&a…

参数高效微调

参数高效微调 参数高效微调简介 对于预训练数据涉及较少的垂直领域,大语言模型需要对这些领域及相应的下游任务进行适配。上下文学习和指令微调是进行下游任务适配的有效途径,但它们在效果或效率上存在缺陷。为弥补这些不足,参数高效微调&am…

第3篇 滑动开关控制LED__ARM汇编语言工程<一>

Q:如何设计实现滑动开关控制LED的ARM汇编程序呢?与Nios II汇编语言有何不同呢? A:基本原理:该应用程序用到DE1-SoC开发板上的10个红色LED、10个滑动开关SW和4个按钮开关。DE1-SoC_Computer system的qsys系统中IP的硬件…

Windows配置hosts文件域名本地解析IP地址,网页打开

在Windows系统中,配置hosts文件可以实现对域名的本地解析,即将特定的域名映射到指定的IP地址。以下是在Windows系统中配置hosts文件的详细步骤: 一、找到hosts文件位置 “C:\Windows\System32\drivers\etc” 二、备份hosts文件并打开 建议…

【主机游戏】艾尔登法环游戏攻略

艾尔登法环,作为一款备受好评但优化问题频发的游戏,就连马斯克都夸过 今天介绍一下这款游戏 https://pan.quark.cn/s/24760186ac0b 角色升级 在《艾尔登法环》中,角色升级需要找到梅琳娜。你可以在关卡前废墟的营地附近,风暴关…

网络原理(应用层)->HTTP

前言 大家好我是小帅,今天我们来了解应用层协议HTTP 文章目录 1. HTTP 请求响应格式(重点)1.1 HTTP 协议的⼯作过程1.2 HTTP请求格式1. 3HTTP响应格式 2. HTTP 请求 (Request)2.1 使⽤ ping 命令查看域名对应的 IP 地址2.2 URL encode2.3 认识…

JavaScript中执行上下文和执行栈是什么?

一、执行上下文 简单的来说,执行上下文是一种对Javascript代码执行环境的抽象概念,也就是说只要有Javascript代码运行,那么它就一定是运行在执行上下文中 执行上下文的类型分为三种: 全局执行上下文:只有一个&#…

2023上半年下午1,2

问题1不要看图1-1父图,直接看图1-2子图去找 用户就是农户和租户 按数据流输入的词语后面加表字即D的名称,流向D的 信息有包含,子图加了,父图就不平衡了 添加图一般不加实体,加联系(菱形)&#x…

Linux基础(2)

学习地点(泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频 (bilibili.com)) LInux目录介绍 Linux常见目录及作用 /:操作系统的根路径 /bin:存储二进制可执行目录,普通用户和管理员都可以执行的命令 /etc:…

算法简介:动态规划

动态规划 1. 动态规划2. 案例2.1 旅游行程最优化2.2 最长公共子串 1. 动态规划 背包问题:背包可以容纳的重量是4磅,吉他为1磅,价值1500元;音响为4磅,价值3000元;笔记本电脑为3磅,价值为2000元。…