【漫话机器学习系列】154.岭回归(Ridge Regression)

岭回归(Ridge Regression)详解
1. 引言
岭回归(Ridge Regression)是一种改进的线性回归方法,它通过引入正则化项来解决普通最小二乘法(OLS, Ordinary Least Squares)可能遇到的多重共线性问题。岭回归的核心思想是在损失函数中加入参数的 L2 正则化,从而使模型更具稳定性,减少过拟合的风险。
2. 岭回归的数学表达式
普通的线性回归模型可以表示为:
其中:
-
Y 为目标变量(因变量)
-
X 为特征矩阵(自变量)
-
β 为回归系数
-
ϵ 为误差项
普通最小二乘法的目标是最小化残差平方和(RSS, Residual Sum of Squares):
岭回归在此基础上增加了一个正则化项,即回归系数的平方和:
其中:
-
λ 为调节参数(Regularization Parameter),用于控制正则化的强度
-
为所有回归系数的平方和
3. 岭回归的作用
岭回归的主要作用是通过 L2 正则化(即回归系数的平方和)来防止模型过拟合。具体来说:
-
减少多重共线性影响:
-
当自变量之间高度相关时,普通最小二乘法可能会得到不稳定的回归系数,即某些回归系数的数值可能会非常大或方向不稳定。
-
岭回归通过对回归系数施加约束,使其保持在较小的范围内,从而减少多重共线性的影响。
-
-
特征缩减(Feature Shrinkage):
-
岭回归不会像 Lasso 回归那样将某些特征的系数直接降为 0,而是会缩小所有回归系数的绝对值,使其更接近于 0。
-
这样可以避免模型对某些特征的依赖过大,提高泛化能力。
-
-
降低模型的方差:
-
在高维数据集中,普通最小二乘法容易因噪声导致模型方差较大。
-
通过正则化项,岭回归减少了系数的波动,从而降低了模型的方差,提高了稳定性。
-
4. 岭回归的调节参数(λ)
调节参数 λ\lambdaλ 控制正则化的强度:
-
λ→0 时,岭回归退化为普通最小二乘回归(OLS)。
-
λ 较小时,模型仍然倾向于普通最小二乘法,但稍有正则化作用。
-
λ 较大时,正则化作用增强,回归系数被压缩得更接近 0,但不会完全归零。
λ 的选择
选择合适的 λ 值通常需要使用交叉验证(Cross Validation)来找到最优值。在实际应用中,可以使用以下方法:
-
网格搜索(Grid Search):在一组候选的 λ 值中进行搜索,选择最优的 λ 值。
-
交叉验证(Cross Validation):使用 K 折交叉验证(K-Fold Cross Validation)来评估不同 λ\lambdaλ 值下的模型表现,选取最优的 λ\。
5. 岭回归 vs. Lasso 回归
Lasso(Least Absolute Shrinkage and Selection Operator)回归是一种与岭回归类似的正则化方法,但它使用的是 L1 正则化(即参数的绝对值之和):
与岭回归相比,Lasso 回归的特点是:
-
Lasso 可将某些回归系数压缩为 0,从而实现特征选择,而岭回归只能缩小系数,但不会归零。
-
Lasso 更适用于高维稀疏数据集,因为它可以自动选择重要的特征并丢弃不重要的特征。
-
岭回归适用于所有特征都有贡献的情况,因为它不会让某些特征的系数变为 0。
6. 岭回归的应用场景
由于岭回归能够有效减少过拟合并提高模型的稳定性,因此它被广泛应用于:
-
高维数据建模:
-
当数据集的维度(特征数量)远大于样本数量时,普通回归方法容易出现过拟合,而岭回归可以很好地解决这个问题。
-
-
多重共线性问题:
-
在经济学、金融建模等领域,自变量之间往往存在较高的相关性,岭回归可以有效降低多重共线性的影响,使回归系数更稳定。
-
-
医疗和生物统计分析:
-
在基因研究、疾病预测等领域,数据通常是高维的,并且不同基因之间可能存在共线性,岭回归可以帮助构建更稳定的预测模型。
-
-
推荐系统:
-
在个性化推荐系统中,特征维度通常很高,岭回归可以有效控制模型复杂度,提高泛化能力。
-
7. 实现岭回归(Python 示例)
在 Python 中,我们可以使用 scikit-learn 库来实现岭回归:
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import numpy as np# 生成示例数据
np.random.seed(42)
X = np.random.rand(100, 5)
y = 3*X[:, 0] + 2*X[:, 1] - X[:, 2] + np.random.randn(100) * 0.1# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 训练岭回归模型
ridge = Ridge(alpha=1.0) # 这里的 alpha 就是 λ
ridge.fit(X_train, y_train)# 预测
y_pred = ridge.predict(X_test)# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print(f'均方误差:{mse}')
均方误差:0.021834065378890568
8. 总结
岭回归是一种强大的回归方法,它通过 L2 正则化减少过拟合,提高模型的稳定性。相比普通最小二乘回归,它更适用于高维数据和多重共线性问题,但不能像 Lasso 一样进行特征选择。适当调整正则化参数 λ\lambdaλ 是使用岭回归的关键,通常可以使用交叉验证来选择最优值。
通过本文的详细讲解,相信你已经掌握了岭回归的基本概念、数学原理、应用场景以及如何在 Python 中实现它。如果你对岭回归的实际应用有兴趣,可以尝试使用不同的数据集进行实验,并观察正则化参数 λ 对模型的影响!
相关文章:
【漫话机器学习系列】154.岭回归(Ridge Regression)
岭回归(Ridge Regression)详解 1. 引言 岭回归(Ridge Regression)是一种改进的线性回归方法,它通过引入正则化项来解决普通最小二乘法(OLS, Ordinary Least Squares)可能遇到的多重共线性问题…...
wsl2配置xv6全解(包括22.04Jammy)
文章目录 获取xv6源代码Ubuntu20.04 Version安装指令成功测试参考MIT2021年官方文档 24.04 Version安装指令成功测试参考MIT2024年官方文档 Ubuntu 22.04没有官方文档? 配置大体流程1. 卸载原本qemu(如果之前安装了)2. clone qemu官方源代码&…...
并查集——108. 冗余连接
108. 冗余连接 题目描述 有一个图,它是一棵树,他是拥有 n 个节点(节点编号1到n)和 n - 1 条边的连通无环无向图(其实就是一个线形图),如图: 现在在这棵树上的基础上,添加一条边(依然是n个节点,但有n条边),使这个图变成了有环图,如图: 先请你找出冗余边,删除后…...
初识XXL-JOB分布式任务调度
XXL-JOB架构分析 设计思想 将调度行为抽象形成"调度中心"公共平台,而平台自身并不承担业务逻辑,"调度中心"负责发起调度请求。 将任务抽象成分散的JobHandler,交由"执行器"统一管理,"执行器…...
第29章:Service Mesh概念与Istio架构解析
第29章:Service Mesh概念与Istio架构解析 作者:DogDog_Shuai 阅读时间:约30分钟 难度:高级 目录 1. 引言2. Service Mesh基础概念3. Istio架构详解4. Istio核心功能5. Istio部署与配置6. 服务治理实战...
AI 核心技术教程:LLM、Text Embedding、Speech2Text、Moderation、TTS
AI 核心技术教程:LLM、Text Embedding、Speech2Text、Moderation、TTS 引言 随着人工智能的快速发展,NLP(自然语言处理)、语音识别、内容审核等技术正在重塑各个行业。本教程将详细介绍 大语言模型(LLM)、…...
【数据结构进阶】位图
🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:数据结构 目录 前言 一、位图的概念与结构 二、位图的实现 1. 结构定义 2. 构造函数 3. 三大接口实现 set unset test 总代码 4. 测试 三、 标准库的…...
[极客大挑战 2019]BabySQL—3.20BUUCTF练习day4(3)
[极客大挑战 2019]BabySQL-3.20BUUCTF练习day4(3) 做题过程 打开是以下页面(前几天有它的第一版和第二版出现)输入1’ 回显以下内容(还是字符型以单引号闭合,因为有报错信息回显) 输入1 order by 4%23回显成这个 被过…...
`sscanf` 和 `scanf` 的区别
sscanf 和 scanf 都是 C 语言中用于从字符串中读取格式化输入的函数,但它们的主要区别在于输入源的不同。 1、### scanf scanf 函数用于从标准输入(通常是键盘)读取格式化的输入。它的原型如下: int scanf(const char *format, .…...
JVM 学习前置知识
JVM 学习前置知识 Java 开发环境层次结构解析 下图展示了 Java 开发环境的层级关系及其核心组件,从底层操作系统到上层开发工具,逐步构建完整的开发与运行环境: 1. 操作系统(Windows, MacOS, Linux, Solaris) 作用&…...
数智读书笔记系列021《大数据医疗》:探索医疗行业的智能变革
一、书籍介绍 《大数据医疗》由徐曼、沈江、余海燕合著,由机械工业出版社出版 。徐曼是南开大学商学院副教授,在大数据驱动的智能决策研究领域颇有建树,尤其在大数据驱动的医疗与健康决策方面有着深入研究,曾获天津优秀博士论文、…...
Oracle 常用语法汇总
系列文章目录 本文对Oracle 常用的语法进行汇总 文章目录 系列文章目录一、Oracle 表&表字段操作:1.1 DDL语句(数据定义语言)Create、Alter、Drop、Truncate:1.1.1 建表:建表:注释COMMENT :表中字段的约束:表中字…...
解决python配置文件类configparser.ConfigParser,插入、读取数据,自动转为小写的问题
配置类 [Section1] Key_AAA Value[Section2] AnotherKey Value默认情况下,ConfigParser会将ini配置文件中的KEY,转为小写。 重载后配置类: 继承类从configparser.ConfigParser改为configparser.RawConfigParser重载方法optionxform&#…...
第一天 UnityShader的结构
Shader初学者的学习笔记 第一天 Unity Shader的结构 文章目录 Shader初学者的学习笔记前言一、Unity Shader结构二、Unity Shader结构解析① Properties② Tags③ RenderSetup(可选状态)④ Name⑤ [Tags]⑥ [RenderSetup]⑦ 顶点着色器和片元着色器的代码 (Unity最聪明的孩子)…...
什么是 BA ?BA怎么样?BA和BI是什么关系?
前几天有朋友在评论区提到了BA这个角色,具体是干什么的,我大概来说一下。 什么是BA BA 英文的全称是Business Analyst,从字面上意思就是商业分析师,做过商业智能BI项目的应该比较了解。实际上以我个人的经验,BA 的角…...
Jmeter旧版本如何下载
1.Jmeter最新版本下载位置 https://jmeter.apache.org/download_jmeter.cgi2.Jmeter旧版本下载位置 https://archive.apache.org/dist/jmeter/binaries稳定版本:5.4.1...
Python帕累托图(Pareto Chart): 从数据排序到决策优化
帕累托图(Pareto Chart)是一种基于80/20法则的经典数据可视化工具,广泛应用于质量管理、项目管理、业务分析等领域。本文将从其原理、构成、实现方法到应用场景进行全面解析,并附Python代码示例。 一、帕累托图的定义与起源 帕累…...
Linux中执行 ifconfig 命令时提示 “未找到命令”
在 Linux 系统里,若执行 ifconfig 命令时提示 “未找到命令” 通常是由于系统没有安装 net-tools 包,或者该命令不在系统的 PATH 环境变量所包含的路径中 安装 net-tools 包 # Ubuntu/Debian sudo apt update sudo apt install net-tools# CentOS 7 及以…...
Python---数据分析(Pandas六:二维数组DataFrame,DataFrame的创建,DataFrame的属性)
一、 二维数组DataFrame DataFrame 是 Pandas 中的一个表格型的数据结构,包含有多列的数据,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame 即有行索引也有列索引,可以被看做是由 Series 组成的字典。 二、DataFrame的…...
内网安全-横向移动Kerberos 攻击SPN 扫描WinRMWinRSRDP
1.WinRM&WinRS 条件: 双方开启winrm winrs服务 2008版本以上默认开启,win 7默认关闭 检测使用cs内置端口扫描5985开放情况 进行连接 winrs -r:http://192.168.93.30:5985 -u:administrator -p:Whoami2021 whoami 2.内网-spn shell setspn -T …...
深入理解 lt; 和 gt;:HTML 实体转义的核心指南!!!
🛡️ 深入理解 < 和 >:HTML 实体转义的核心指南 🛡️ 在编程和文档编写中,< 和 > 符号无处不在,但它们也是引发语法错误、安全漏洞和渲染混乱的头号元凶!🔥 本文将聚焦 <&#…...
使用uniapp的vite版本进行微信小程序开发,在项目中使用mqtt连接、订阅、发布信息
1、保证在微信公众平台配置socket合法域名 2、项目中使用mqtt 建议在package.json中配置"mqtt": “4.1.0”,使用这个版本的依赖 页面中引入mqtt并配置连接 // ts-ignoreimport * as mqtt from mqtt/dist/mqtt.js; //要使用这里面的const state reacti…...
Trae 实战深度揭秘,开启高效编程新时代
导语 在AI编程工具层出不穷的当下,Trae凭借其独特的功能和强大的性能脱颖而出。它不仅是一款工具,更是提升编程效率、突破开发瓶颈的得力助手。本文将带你深入Trae实战,从项目创建到复杂代码优化,全方位展示Trae的魅力,让你迅速掌握这一编程利器。 一、Trae的安装与环境…...
SEARCH-R1:大型语言模型的多轮搜索推理革命
当AI学会"边搜索边思考" 2025年,语言模型领域迎来重大突破——SEARCH-R1框架通过强化学习(RL)让大模型实现"动态搜索自主推理"的协同进化。这项技术不仅让模型在回答"泰坦尼克号沉没时的船长是谁"时能自动检索…...
红数码影视(RED Digital Cinema)存储卡格式化后的恢复方法
红数码影视(RED Digital Cinema)的摄像机可以生成两种RAW级高清视频文件,一种是R3D,一种是MOV。其中MOV属于苹果(apple)公司的QT视频封装结构,使用的视频编码是Apple ProRes;而R3D则是RED公司自创的RAW视频文件,这种文件解码需要使…...
关于TVS管漏电流的问题?
问题描述: 在量产的带电池故事机生产中,工厂产线测试电流时,有1台机器电流比正常机器大10mA左右。 原因分析: 1、分析电路原理图,去除可能出现问题的电压或器件(不影响系统),发现…...
LS-NET-004-简单二层环路解决(华为锐捷思科)
LS-NET-004-简单二层环路解决(华为锐捷思科) 以下是为您准备的二层环路示意图及解决方案,包含四大厂商配置对比: 一、Mermaid 二层环路示意图 graph TD SW1 -->|Gi0/1| SW2 SW2 -->|Gi0/2| SW3 SW3 -->|Gi0/3| SW1 SW1…...
区块链交易所平台开发全解析
在数字化飞速发展的今天,区块链技术已成为金融领域的核心驱动力之一。作为数字货币交易的关键平台,区块链交易所的开发不仅涉及复杂的技术环节,还需要兼顾用户体验、安全性、合规性等多个方面。本文将深入探讨区块链交易所平台的开发流程、关…...
Redis 面试思路
分布式redis面试思路俩点 高性能 高并发 高性能 1.存储在内存 所以速度快 2. 线程模型 io多路复用 监控多个客户端socket 放入队列里面 只是文件分发机制是单线程的 处理队列中的数据 根据不同类型 分发给不同处理器 后面处理的过程 也是多线程的 3. 内存回收机制 定期懒惰 …...
蓝桥杯_拔河_java
佬们能不能对思路二提供点建议,一直过不了T_T。 题目 思路 首先感觉有个坑点,就是可以不用把所有学生都选上,但是一定要保证两个部分学生的编号是连续的。比如一共5个人,编号是{1,2,3,4…...
