深度学习的正则化深入探讨
文章目录
- 一、说明
- 二、学习目标
- 三、什么是机器学习中的正则化
- 四、了解过拟合和欠拟合
- 五、代价函数的意义
- 六、什么是偏差和方差?
- 七、机器学习中的正则化?
一、说明
在训练机器学习模型时,模型很容易过拟合或欠拟合。为了避免这种情况,我们在机器学习中使用正则化来使模型正确地拟合到我们的测试集。正则化技术有助于减少过拟合的可能性,并帮助我们获得最优模型。
在本文中,您将探索使用 Python 进行机器学习中的正则化概念。我们将讨论它在防止过拟合方面的意义和意义,确保模型能够很好地推广到新数据。您将看到正则化技术的示例,例如 L1 和 L2,以及它们在实践中的实施方式。此外,我们将参考来自 Analytics Vidhya 的见解,以增强您对这些方法及其对模型性能影响的理解。到最后,您将清楚地掌握正则化如何改进您的机器学习项目。

二、学习目标
了解机器学习中的正则化概念及其在防止过拟合和欠拟合方面的作用。
了解不同的正则化技术,例如 Ridge、Lasso 和 Elastic Net 正则化。
获得使用 Python 和 scikit-learn 实现正则化技术的实践知识。
三、什么是机器学习中的正则化
正则化是机器学习中使用的一种技术,用于防止过度拟合并提高模型的泛化性能。从本质上讲,正则化为损失函数添加了一个惩罚项,阻止了模型学习过于复杂的模式,这些模式可能无法很好地推广到看不见的数据。这有助于创建更简单、更健壮的模型。
正则化的主要好处包括:
减少过度拟合:通过限制模型的复杂性,正则化有助于防止模型记住训练数据中的噪声或不相关的模式。
提高泛化性:正则化模型往往在新的、看不见的数据上表现更好,因为它们专注于捕获底层模式,而不是完美地拟合训练数据。
增强模型稳定性:正则化使模型对训练数据中的微小波动不太敏感,从而获得更稳定和可靠的预测。
启用特征选择:一些正则化技术(例如 L1 正则化)可以自动识别并丢弃不相关的特征,从而产生更易解释的模型。
最常见的正则化技术是 L1 正则化 (Lasso),它将模型权重的绝对值添加到损失函数中,以及 L2 正则化 (Ridge),它将权重的平方值相加。通过纳入这些惩罚项,正则化在拟合训练数据和保持机器学习中的正则化之间取得了平衡
正则化是机器学习中使用的一种技术,用于防止过度拟合并提高模型的泛化性能。从本质上讲,正则化为损失函数添加了一个惩罚项,阻止了模型学习过于复杂的模式,这些模式可能无法很好地推广到看不见的数据。这有助于创建更简单、更健壮的模型。
最常见的正则化技术是 L1 正则化 (Lasso),它将模型权重的绝对值添加到损失函数中,以及 L2 正则化 (Ridge),它将权重的平方值相加。通过合并这些惩罚项,正则化在拟合训练数据和保持模型简单之间取得了平衡,最终在新数据上实现了更好的性能。
四、了解过拟合和欠拟合
为了训练我们的机器学习模型,我们为其提供数据以供学习。绘制一系列数据点并绘制最佳拟合线以了解变量之间关系的过程称为数据拟合。当我们的模型可以在我们的数据中找到所有必要的模式并避免随机数据点和称为噪声的不必要模式时,它最适合。
如果我们允许机器学习模型查看数据太多次,它将在数据中发现许多模式,包括一些不必要的模式。它将在测试数据集上很好地学习并且非常适合。它将学习重要的模式,但它也会从我们数据中的噪声中学习,并且无法对其他数据集进行预测。
机器学习模型尝试从细节以及数据中的噪声中学习,并尝试将每个数据点拟合到曲线的场景称为过拟合。
在下图中,我们可以看到该模型适合我们数据中的每个点。如果提供了新数据,则模型曲线可能与新数据中的模式不匹配,并且模型可能无法很好地预测。

相反,当我们没有让模型查看我们的数据足够多的时间时,它将无法在我们的测试数据集中找到模式。它不能很好地适应我们的测试数据集,也不能处理新数据。
当机器学习模型无法学习测试数据中变量之间的关系或无法预测或分类新数据点时,就会发生欠拟合。
下图显示了一个装备不足的模型。我们可以看到它没有正确拟合给出的数据。他没有在数据中找到模式,并且忽略了大部分数据集。它不能同时处理已知和未知数据。

五、代价函数的意义
代价函数/误差函数:采用斜率截距(m 和 c)值并返回误差值/成本值。它显示预测结果与实际结果之间的误差进行比较。它解释了您的模型在预测中是如何不准确的。
它用于估计模型对给定数据集及其维度的性能有多糟糕。
为什么成本函数在机器学习中很重要?是的,成本函数帮助我们达到最佳解决方案,那么我们该怎么做呢。将看到使用 Python 库的所有可能方法和简单步骤。
此功能通过最小化误差来帮助我们找出最佳直线
最佳拟合线是该线周围误差平方和最小的线
六、什么是偏差和方差?
当算法从数据集中学习的灵活性有限时,就会出现偏差。这些模型很少关注训练数据,并且过度简化了模型,因此验证或预测误差和训练误差遵循类似的趋势。此类模型始终会导致训练和测试数据中出现高误差。高偏差会导致我们的模型调整不足。
方差定义算法对特定数据集的敏感度。高方差模型密切关注训练数据,并且不会泛化,因此验证或预测误差彼此相差甚远。此类模型通常在训练数据上表现非常好,但在测试数据上具有很高的错误率。高偏差会导致模型出现过冲。
最优模型是指模型对模型中的模式敏感,但也可以泛化到新数据的模型。当偏差和方差都是最佳时,就会发生这种情况。我们称之为 Bias-Variance Tradeoff,我们可以使用回归在过度拟合或欠拟合的模型中实现这一点。

上图显示,当偏差较高时,测试集和训练集中的误差也很高。当偏差较高时,模型在我们的训练集上表现良好,误差较低,但测试集上的误差非常高。在这中间,有一个区域,偏差和方差在这里也彼此完美平衡,但训练和测试误差很低。
七、机器学习中的正则化?
它是指用于校准机器学习模型以最小化调整后的损失函数并避免过拟合或欠拟合的技术。

正则化技术
让我们讨论可用的正则化技术,然后是实现

- 岭回归(L2 正则化):
基本上,在这里,我们将最小化误差的平方和以及系数的平方和 (β)。在背景中,
具有较大幅度的系数 (β) 将生成图形峰值和
深斜率,为了抑制这一点,我们使用 lambda (λ) 用于称为
惩罚因子,并帮助我们获得光滑的表面而不是不规则的图形。Ridge Regression 用于将 coefficients(β) 值在量级方面推向接近零。这就是 L2 正则化,因为它增加了一个等价于系数大小的平方的罚值。
Ridge 回归 = Loss 函数 + 正则化项

2. 套索回归(L1 正则化):
这与 Ridge 回归非常相似,在 Penalty Factor (惩罚因子) 中几乎没有差异,系数是量级而不是平方。其中许多系数有可能变为零,因此相应的属性/特征变为零并从列表中删除,这最终会减少维度并支持降维。那么决定这些属性/特征不适合作为预测目标值的捕食者。这是 L1 正则化,因为将绝对值添加为系数大小的惩罚等效值。
套索回归 = 损失函数 + 正则化项

3. Lambda 的特点
λ = 0λ => 最小值λ =>HighLambda 或罚因子 (λ)对系数 (β) 没有影响,模型会过拟合。不适用于
ProductionGeneralised 模型和可接受的精度,并且符合 Test and
Train 的条件。适合生产对系数 (β) 影响非常大,导致欠拟合。最终
不适合生产环境。
请记住一件事,Ridge 永远不会将系数归零,Lasso 会这样做。因此,您可以使用第二个进行特征选择。
正则化的影响
下面的图形表示清楚地表明了最佳配合。

4. 弹性网络回归正则化:
尽管 Python 提供了出色的库,但我们应该了解这背后的数学原理。以下是详细的推导供您参考。
山脊:α=0
套索:α=1
5. 正则化技术的图像表示

L1 和 L2 的数学方法
尽管 Python 提供了出色的库和简单的编码,但我们应该了解这背后的数学原理。以下是详细的推导供您参考。
让我们得到下面的多元线性回归数据集及其方程

正如我们所知道的,多元线性回归
y = β 0 + β 1 x 1 + β 2 x 2 + . . . . . . . . . . . . . . . . . . + β n x n ————– 1 y=β_0+ β_1 x_1+ β_2 x_2+..................+ β_n x_n — — — — –1 y=β0+β1x1+β2x2+..................+βnxn————–1
y i = β 0 + σ β i x i —————– 2 y_i= β_0+ σ β_i x_i — — — — — –2 yi=β0+σβixi—————–2
Σ yi– β0– Σ βi 习
成本/损失函数: Σ{ yi– β0– Σ βi xij}2 — — — — — –3
正则化项: λΣ βi2 — — — — — -4
岭回归 = 损失函数 + 正则化项 — — — — — –5
将 3 和 4 放入 5 中
岭回归 = Σ { yi– β0– Σ βi xij}2+ λ Σ βi2
套索回归 = Σ { yi– β0– Σ βi xij}2+ λ Σ |βi|
x ==> 个自变量
y ==> 个目标变量
β ==> 系数
λ ==> 罚因子
系数 (β) 如何在内部计算
正则化代码
让我们以 Automobile — Predictive Analysis 为例,应用 L1 和 L2 以及它如何帮助模型评分。
目标:使用汽车的给定特征预测汽车的里程/每加仑英里数 (mpg)。
import numpy as npimport pandas as pdimport seaborn as snsimport matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegressionfrom sklearn.linear_model import Ridgefrom sklearn.linear_model import 套索from sklearn.metrics importr2_scoredf_cars = pd.read_csv(“auto-mpg.csv”)
print(df_cars.head(5))

EDA:会做少量的 EDA(探索性数据分析),来理解数据集

观察:
- 我们可以看到 Features 及其数据类型,以及 Null 约束。
- 马力和名称特征是给定数据集中的对象。在建模过程中必须注意。
训练和测试拆分
from Sklearn model_selection import train_test_split X_train、X_test、y_train、y_test = train_test_split(X_scaled、y_scaled、test_size=0.25、random_state=1)

相关文章:
深度学习的正则化深入探讨
文章目录 一、说明二、学习目标三、什么是机器学习中的正则化四、了解过拟合和欠拟合五、代价函数的意义六、什么是偏差和方差?七、机器学习中的正则化? 一、说明 在训练机器学习模型时,模型很容易过拟合或欠拟合。为了避免这种情况…...
Token相关设计
文章目录 1. 双Token 机制概述1.1 访问令牌(Access Token)1.2 刷新令牌(Refresh Token) 2. 双Token 认证流程3. Spring Boot 具体实现3.1 生成 Token(使用 JWT)3.2 解析 Token3.3 登录接口(返回…...
【时序预测】在线学习:算法选择(从线性模型到深度学习解析)
——如何为动态时序预测匹配最佳增量学习策略? 引言:在线学习的核心价值与挑战 在动态时序预测场景中(如实时交通预测、能源消耗监控),数据以流式(Streaming)形式持续生成,且潜在的…...
React antd的datePicker自定义,封装成组件
一、antd的datePicker自定义 需求:用户需要为日期选择器的每个日期单元格添加一个Tooltip,当鼠标悬停时显示日期、可兑换流量余额和本公会可兑流量。这些数据需要从接口获取。我需要结合之前的代码,确保Tooltip正确显示,并且数据…...
学生管理前端
文章目录 首页student.html查询功能 首页 SpringBoot前端html页面放在static文件夹下:/src/main/resources/static 默认首页为index.html,我们可以用两个超链接或者两个button跳转到对应的页面。这里只是单纯的跳转页面,不需要提交表单等其…...
深入理解并实现自定义 unordered_map 和 unordered_set
亲爱的读者朋友们😃,此文开启知识盛宴与思想碰撞🎉。 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 在 C 的标准模板库(STL)中,unorder…...
顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-大模型电话机器人
语音流直接对接Realtime API 多模态大模型 直接把音频流输出给大模型,大模型返回音频流。 顶顶通CTI对Realtime API 的支持 提供了以下2个APP可对接任意 •cti_audio_stream 通过TCP推流和播放流,适合用于人机对话场景。 •cti_unicast_start 通过旁…...
kinova机械臂绿色灯一闪一闪及刷机方法
一、背景 实验室有两个kinova mico机械臂,但经常出现操纵杆上的绿色灯一闪一闪的,导致无法使用操纵杆或ROS进行控制,下面给出官方的教程以及所需要的FS 0CPP 0008_6.2.5_mico_6dof.hex文件。 重要的东西写在前面: a、如果出现操…...
第16天:C++多线程完全指南 - 从基础到现代并发编程
第16天:C多线程完全指南 - 从基础到现代并发编程 一、多线程基础概念 1. 线程创建与管理(C11) #include <iostream> #include <thread>void hello() {std::cout << "Hello from thread " << std::this_…...
中科大计算机网络原理 1.5 Internt结构和ISP
一、互联网的层次化架构 覆盖范围分层 主干网(Tier-1级) 国家级或行业级核心网络,承担跨区域数据传输和全球互联功能。例如中国的四大主干网(ChinaNET、CERNET等)以及跨国运营商(如AT&T、Deuts…...
Windows安装sql server2017
看了下官网的文档,似乎只有ubuntu18.04可以安装,其他debian系的都不行,还有通过docker的方式安装的。 双击进入下载的ISO,点击执行可执行文件,并选择“是” 不要勾选 警告而已,不必理会 至少勾选这两…...
计算机网络之传输层(tcp协议)
一、TCP协议的特点 面向连接:TCP使用面向连接的通信模式,通信双方需要先建立连接,然后才能进行数据的传输。连接建立过程采用三次握手的方式。 可靠性:TCP提供可靠的数据传输服务,确保数据的完整性、有序性和正确性。…...
从零到一:如何用阿里云百炼和火山引擎搭建专属 AI 助手(DeepSeek)?
本文首发:从零到一:如何用阿里云百炼和火山引擎搭建专属 AI 助手(DeepSeek)? 阿里云百炼和火山引擎都推出了免费的 DeepSeek 模型体验额度,今天我和大家一起搭建一个本地的专属 AI 助手。 阿里云百炼为 …...
Open3D解决SceneWidget加入布局中消失的问题
Open3D解决SceneWidget加入布局中消失的问题 Open3D解决SceneWidget加入布局中消失的问题1. 问题2. 问题代码3. 解决 Open3D解决SceneWidget加入布局中消失的问题 1. 问题 把SceneWidget加到布局管理其中图形可以展示出来,但是鼠标点击就消失了。 stackoverflow上已…...
计算机毕业设计Python+DeepSeek-R1大模型游戏推荐系统 Steam游戏推荐系统 游戏可视化 游戏数据分析(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
Linux笔记---缓冲区
1. 什么是缓冲区 在计算机系统中,缓冲区(Buffer) 是一种临时存储数据的区域,主要用于协调不同速度或不同时序的组件之间的数据传输,以提高效率并减少资源冲突。它是系统设计中的重要概念,尤其在I/O操作、网…...
如何流畅访问github
1.传输数据原理 本地计算机通过本地网接入运营骨干网,经过DNS域名解析,将输入的字符解析为要连接的真实IP地址,服务器返还一个数据包(github)给计算机 2.原因 DNS域名污染-DNS解析出现问题,导致访问一个不存在的服务器 3.解决…...
java基础+面向对象
Java基础语法 CMD命令 cls 清屏 cd 目录进入文件 cd… 退回 dir 查看当前目录所有文件 E:进入E盘 exit 退出 环境变量就是不用去专门的盘符去找,直接去环境变量里找到文件 语言优势 编译型语言c: 整体翻译 解释型语言python&#x…...
Linux 检测内存泄漏方法总结
文章目录 strace检测asan内存检测linux下gperf工具(tcmalloc)检查C/C代码内存泄露问题参考 strace检测 (1)启动程序 (2) strace -f -p <PID> -tt -e brk,mmap,mmap2,munmapbrk 变大 → 说明堆增长…...
本地部署deepseek大模型后使用c# winform调用(可离线)
介于最近deepseek的大火,我就在想能不能用winform也玩一玩本地部署,于是经过查阅资料,然后了解到ollama部署deepseek,最后用ollama sharp NUGet包来实现winform调用ollama 部署的deepseek。 本项目使用Vs2022和.net 8.0开发,ollam…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
