当前位置: 首页 > backend >正文

人工智能-python-机器学习- 欠拟合与过拟合:岭回归与拉索回归的应用

文章目录

  • 欠拟合与过拟合:岭回归与拉索回归的应用
    • 1. 引言
    • 2. 欠拟合与过拟合
      • 2.1 什么是欠拟合?
      • 2.2 什么是过拟合?
      • 2.3 欠拟合与过拟合的平衡
    • 3. 正则化方法
      • 3.1 正则化的概念
      • 3.2 岭回归(Ridge)
        • 3.2.1 岭回归的损失函数
      • 核心优势
        • 3.2.2 岭回归的API与示例
      • 3.3 拉索回归(Lasso)
        • 3.3.1 拉索回归的损失函数
        • 3.3.2 拉索回归的API与示例
    • 4. 使用场景与优缺点
      • 4.1 使用场景
      • 4.2 优缺点
        • 4.2.1 岭回归(Ridge)
        • 4.2.2 拉索回归(Lasso)
    • 5 . 为什么需要正则化?
    • 7. 总结


欠拟合与过拟合:岭回归与拉索回归的应用

1. 引言

在机器学习和统计建模中,欠拟合过拟合是影响模型性能的两个重要问题。为了克服这些问题,常用的技术之一是正则化,它可以帮助模型在偏差与方差之间找到平衡。本篇文章将讨论欠拟合、过拟合的概念,并介绍两种常见的正则化方法:岭回归(Ridge)拉索回归(Lasso)

2. 欠拟合与过拟合

2.1 什么是欠拟合?

欠拟合指的是模型过于简单,无法有效捕捉数据中的模式。通常发生在模型的复杂度不足时,例如:

  • 典型表现
    • 训练集和测试集误差双高 📉
    • 决策边界过于简单(如用直线拟合曲线数据)
  • 解决方案
    • 增加特征维度(多项式特征、交叉特征)
    • 选用更复杂模型(决策树→随机森林)

2.2 什么是过拟合?

过拟合指的是模型过于复杂,学到了数据中的噪声和随机波动,而不仅仅是数据的实际规律。过拟合通常发生在模型过度学习训练数据,导致它在测试集上的表现较差。

  • 危险信号
    • 训练误差接近0,测试误差骤增 🚨
    • 决策边界异常复杂(如用100次函数拟合线性数据)
  • 核心对策正则化(Regularization)

2.3 欠拟合与过拟合的平衡

为了在训练和测试数据之间保持较好的泛化能力,模型需要在偏差方差之间找到平衡。正则化就是用来控制模型复杂度,避免过拟合或欠拟合的有效手段。

3. 正则化方法

3.1 正则化的概念

正则化通过在损失函数中加入一个惩罚项,来控制模型的复杂度,从而减少过拟合的风险。常见的正则化方法包括岭回归(Ridge)拉索回归(Lasso)
核心目标:在损失函数中引入惩罚项,抑制过强参数
J(β) = MSE(β) + λ·Penalty(β)

3.2 岭回归(Ridge)

**岭回归(Ridge Regression)**是在普通最小二乘回归的损失函数中加入了L2范数的惩罚项。岭回归通过对回归系数施加惩罚,使得参数趋向于零,从而减小模型的复杂度。

3.2.1 岭回归的损失函数

岭回归的损失函数公式为:

L(β)=∑i=1m(yi−y^i)2+λ∑j=1nβj2L(\beta) = \sum_{i=1}^{m} (y_i - \hat{y}_i)^2 + \lambda \sum_{j=1}^{n} \beta_j^2 L(β)=i=1m(yiy^i)2+λj=1nβj2

  • λ\lambdaλ 是正则化参数,控制惩罚项的大小。
  • βj\beta_jβj 是回归系数。
  • y^i\hat{y}_iy^i 是模型预测值,yiy_iyi 是真实值。

损失函数
J(β) = ||y - Xβ||²₂ + λ||β||²₂

  • L2惩罚项:所有系数平方和(λ||β||²₂)
  • 几何解释:约束参数在球形空间内

核心优势

特性说明
多重共线性处理使XᵀX矩阵可逆
系数稳定性所有特征保留非零系数
计算效率闭式解β = (XᵀX + λI)⁻¹Xᵀy
3.2.2 岭回归的API与示例
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_regression# 生成示例数据
X, y = make_regression(n_samples=100, n_features=5, noise=0.1, random_state=42)# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 创建岭回归模型
ridge_model = Ridge(alpha=1.0)# 训练模型
ridge_model.fit(X_train, y_train)# 预测
y_pred = ridge_model.predict(X_test)# 输出回归系数
print("Ridge回归系数:", ridge_model.coef_)

3.3 拉索回归(Lasso)

**拉索回归(Lasso Regression)**是在普通最小二乘回归的损失函数中加入了L1范数的惩罚项。拉索回归与岭回归的主要区别是,L1正则化不仅能减小系数的绝对值,还能将一些系数缩小为零,从而实现特征选择。

3.3.1 拉索回归的损失函数

拉索回归的损失函数公式为:

L(β)=∑i=1m(yi−y^i)2+λ∑j=1n∣βj∣L(\beta) = \sum_{i=1}^{m} (y_i - \hat{y}_i)^2 + \lambda \sum_{j=1}^{n} |\beta_j| L(β)=i=1m(yiy^i)2+λj=1nβj

  • λ\lambdaλ 是正则化参数,控制惩罚项的大小。
  • βj\beta_jβj 是回归系数。
  • y^i\hat{y}_iy^i 是模型预测值,yiy_iyi 是真实值。

损失函数:
J(β) = ||y - Xβ||²₂ + λ||β||₁

  • L1惩罚项:系数绝对值之和(λ|β|₁)
  • 核心价值:自动特征选择(产生稀疏解)
3.3.2 拉索回归的API与示例
from sklearn.linear_model import Lasso# 创建拉索回归模型
lasso_model = Lasso(alpha=0.1)# 训练模型
lasso_model.fit(X_train, y_train)# 预测
y_pred_lasso = lasso_model.predict(X_test)# 输出回归系数
print("Lasso回归系数:", lasso_model.coef_)

4. 使用场景与优缺点

4.1 使用场景

  • 岭回归(Ridge):适用于特征之间高度相关的情况。当特征较多且相关性强时,岭回归能有效减少多重共线性问题。
  • 拉索回归(Lasso):适用于特征较多的高维数据,尤其在某些特征对目标变量影响较小,且希望通过模型自动筛选特征时。拉索回归的L1正则化能有效地将不重要的特征系数压缩为零,实现特征选择。

4.2 优缺点

4.2.1 岭回归(Ridge)
  • 优点

    • 能有效处理多重共线性问题,尤其在特征间高度相关时。
    • 保留所有特征,但通过正则化控制它们的大小,减少过拟合。
  • 缺点

    • 不能实现特征选择,所有特征都会保留。
    • 可能对于不重要的特征过于依赖。
4.2.2 拉索回归(Lasso)
  • 优点

    • 能自动进行特征选择,适用于高维数据。
    • 对于数据中不重要的特征,能够将其系数缩小为零,从而简化模型。
  • 缺点

    • 对于特征之间有较强相关性的情况,拉索回归可能会随机选择某一个特征,忽略其他相关特征。
    • 当特征非常多时,可能会存在过于“激进”的特征选择,导致欠拟合。

超参数λ调优策略

过拟合
欠拟合
Yes
No
λ=0
验证集效果
增大λ
减小λ
λ过大导致欠拟合?
找到最佳λ

5 . 为什么需要正则化?

维度诅咒防御:当特征维度>100时,过拟合概率超80%
业务解释增强:拉索回归可筛选TOP10关键特征
计算效率提升:稀疏矩阵运算速度提升5-100倍 ⚡
模型泛化保障:医疗诊断模型测试集准确率提升12-15%

7. 总结

欠拟合过拟合是机器学习模型中常见的问题,而正则化方法(如岭回归拉索回归)提供了有效的解决方案。根据数据的特性,选择合适的回归方法和正则化参数,可以帮助我们在训练数据和测试数据之间找到最佳的平衡。通过岭回归和拉索回归,不仅可以减少过拟合,还可以实现特征选择,提高模型的泛化能力。


http://www.xdnf.cn/news/17484.html

相关文章:

  • 【安全发布】微软2025年07月漏洞通告
  • SharePlay确保最佳游戏体验
  • 基恩士 CA CNX10U 视觉连接器REPEATER CA CN or CV- C 日本原装进口
  • 数字IC后端层次化Hierarchical Flow子系统Sub-System模块 block partition和pin assignment细节盘点
  • istio如何采集method、url指标
  • 飞算JavaAI vs 传统开发:效率与质量的双重突破
  • conda一键配置python开发环境
  • CI/CD的持续集成和持续交付
  • 在 Rocky Linux 9.2 上使用 dnf 安装 Docker 全流程详解
  • PyCATIA深度解析:基于装配截面自动化创建参考几何平面群的专业方案
  • Redis一站式指南二:主从模式高效解决分布式系统“单点问题”
  • windows运维
  • opencv:图像轮廓检测与轮廓近似(附代码)
  • 部署一个免费开源的博客系统
  • Gin 框架错误处理机制详解
  • 【Tomcat】企业级web应用服务器
  • 如何培养自己工程化的能力(python项目)
  • (LeetCode 每日一题) 869. 重新排序得到 2 的幂 (哈希表+枚举)
  • 机器学习之K-means(K-均值)算法
  • Unity3D游戏中如何制作空气墙
  • actuary notes[2]
  • Spring Boot整合knife4j实战
  • BGP综合大实验
  • 152-基于CWT-CNN-BiGRU-Attention-SABO-LSSVM对滚动轴承的故障诊断
  • iceberg安装部署
  • java报错“ NoSuchMethodError:com.test.Service.doRoomList(Ljava/lang/String;)V解决方案
  • Text2SQL 自助式数据报表开发(Chat BI)
  • “骑行热”正当时,维乐Eden ANGEL坐垫守护舒适与健康
  • Kafka 生产者与消费者分区策略全解析:从原理到实践
  • 消息队列系统测试报告