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

人工智能-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.dtcms.com/a/325992.html

相关文章:

  • TopLiDM架构解析:DriveVLM如何融合VLM与E2E自动驾驶
  • 一文读懂 C# 中的 Lazy<T>
  • (三十二)-java+ selenium自动化测试-select 下拉框
  • Linux运维学习第十四周
  • wed前端第三次作业
  • 营销 “远交近攻”:开辟市场新天地-中小企实战运营和营销工作室博客
  • MySQL数据库简介
  • 【基本有序数组中找到有且仅有的一个无序元素并进行排序之顺序法】2022-10-12
  • 贪心----3. 跳跃游戏 II
  • 计算机网络:1、OSI参考模型和TCP/IP模型
  • 天塌了!HCIE数通实验预计今年Q4变题,难度再上升?!
  • Linux ethernet驱动移植之常见问题
  • 【Docker-Day 13】超越默认Bridge:精通Docker Host、None与自定义网络模式
  • 从 0 到 1:用 MyCat 打造可水平扩展的 MySQL 分库分表架构
  • 【算法专题训练】11、字符串中的变位词
  • 类和对象(中上)
  • 计算机网络---DNS(域名系统)
  • Go 语言中的切片排序:从原理到实践玩转 sort 包
  • 【第四章:大模型(LLM)】05.LLM实战: 实现GPT2-(6)贪婪编码,temperature及tok原理及实现
  • 云服务器部署SSM项目
  • 逻辑备份恢复工具gs_dump/gs_restore
  • Apache Ignite分片线程池深度解析
  • app,h5,微信,携带传递参数的两种方法getCurrentPages()
  • LAMP/LNMP示例
  • Unknown collation: ‘utf8mb4_0900_ai_ci‘
  • thymeleaf 日期格式化显示
  • 基于 ZooKeeper 的分布式锁实现原理是什么?
  • Vue 利用el-table和el-pagination组件,简简单单实现表格前端分页
  • 【数据库】如何使用一款轻量级数据库SqlSugar进行批量更新,以及查看最终的Sql操作语句
  • QT_QUICK_BACKEND 环境变量详解(AI生成)