认识机器学习中的结构风险最小化准则

上一篇文章我们学习了关于经验风险最小化准则,其核心思想是通过最小化训练数据上的损失函数来优化模型参数,从而提高模型在训练集上的表现。但是这也会导致一个问题,经验风险最小化原则很容易导致模型在训练集上错误率很低,但在未知数据上错误率很高。这就是所谓的过拟合(Overfitting)。

过拟合问题往往是由于训练数据少和噪声以及模型能力强等原因造成的,为了解决过拟合问题, 一般在经验风险最小化的基础上再引入参数的正则化 (Regularization)来限制模型能力,使其不要过度地最小化经验风险。

这种准则,就是结构风险最小化(Structure Risk Minimization,SRM)准则

一、我们先来了解一下参数的正则化

机器学习中的参数正则化

参数正则化是一种防止模型过拟合的重要技术,目的是在优化模型性能的同时提高其泛化能力。通过对模型参数施加约束,正则化可以防止模型过度拟合训练数据而导致在测试数据上表现不佳。

1. 什么是正则化?

正则化的核心思想是向损失函数中加入一个惩罚项,该惩罚项与模型的参数相关。通过限制参数的大小,正则化鼓励模型选择更简单的解。这样可以避免模型在训练数据上过度复杂,从而提高在新数据上的泛化能力。

正则化后的损失函数通常形式为:

2. 常见的正则化方法

以下是几种常见的参数正则化方法:

(1) L1 正则化(Lasso)
  • 定义:正则化项为模型参数的绝对值之和:

  • 特点
    • 鼓励稀疏性(某些参数趋近于 0)。
    • 常用于特征选择,因为它可以将无关特征的参数变为 0。
  • 应用场景
    • 数据有许多无关特征,需要自动选择特征时。
(2) L2 正则化(Ridge)
  • 定义:正则化项为模型参数的平方和: 

  • 特点
    • 防止参数变得过大,但不会直接导致参数为 0。
    • 提供较平滑的正则化效果。
  • 应用场景
    • 数据噪声较大,但所有特征可能都与目标相关。
(3) Elastic Net
  • 定义:结合了 L1 和 L2 正则化:

  • 特点
    • 结合了 L1 的稀疏性和 L2 的稳定性。
  • 应用场景
    • 既需要稀疏性,又不希望完全丢弃部分特征时。

3. 正则化的作用

  1. 减少过拟合
    • 模型的高复杂度可能导致其过度拟合训练数据中的噪声,正则化通过限制参数大小来抑制过拟合。
  2. 提高泛化能力
    • 限制参数幅度,可以使模型对新数据具有更好的预测能力。
  3. 控制模型复杂度
    • 参数越小,模型复杂度越低。正则化可以通过引导参数趋向较小值,控制模型的复杂性。

4. 参数正则化的几何解释

从几何上看,正则化可以理解为将参数限制在一个特定的范围内:

  • 对于 L1 正则化,约束区域是一个菱形,参数可能集中在坐标轴上(导致稀疏解)。
  • 对于 L2 正则化,约束区域是一个球体,参数趋向均匀分布且较小。

在优化过程中,正则化会调整参数解,使其既满足误差最小化要求,又符合正则化约束。

5. 正则化超参数 λ\lambda 的影响

  • λ=0:表示没有正则化,模型会完全拟合数据。
  • λ 较小:正则化效果弱,模型可能仍然复杂。
  • λ 较大:正则化效果强,模型可能过于简单,导致欠拟合。

选择合适的 通常需要通过交叉验证来完成。

6. 实例代码

以下是一个使用 Python 的 scikit-learn 实现正则化的简单示例:

from sklearn.linear_model import Ridge, Lasso
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import numpy as np

# 示例数据
X = np.random.rand(100, 5)
y = np.random.rand(100)

# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# L2 正则化 (Ridge)
ridge = Ridge(alpha=1.0)  # alpha 对应正则化强度 λ
ridge.fit(X_train, y_train)
y_pred_ridge = ridge.predict(X_test)
print("Ridge MSE:", mean_squared_error(y_test, y_pred_ridge))

# L1 正则化 (Lasso)
lasso = Lasso(alpha=0.1)
lasso.fit(X_train, y_train)
y_pred_lasso = lasso.predict(X_test)
print("Lasso MSE:", mean_squared_error(y_test, y_pred_lasso))

参数正则化是机器学习中用于防止过拟合的重要技术,它通过向损失函数中加入与参数相关的惩罚项,限制模型的复杂性,增强泛化能力。根据具体任务的需求,可以选择 L1、L2 或 Elastic Net 等正则化方法,并通过超参数调节正则化的强度,找到模型性能和复杂度的平衡点。

二、结合参数正则化,我们来了解结构风险最小化准则

机器学习中的结构风险最小化(SRM)准则

1. 什么是结构风险最小化(SRM)准则?

结构风险最小化(Structural Risk Minimization, SRM)是统计学习理论(Statistical Learning Theory)中的一个重要概念。它是一种用于平衡模型复杂度和训练误差的策略,旨在提高模型的泛化能力。

SRM 的核心思想是,在选择模型时,不仅要考虑在训练数据上的损失(经验风险),还要考虑模型的复杂度(容量),通过引入一个额外的正则化项来综合优化,避免模型过拟合或欠拟合。

2. SRM 的目标

SRM 的目标是最小化以下目标函数:

SRM 希望找到一个模型,使得 整体风险 最小化,这样可以保证模型对未知数据有更好的预测性能。

3. SRM 与经验风险最小化(ERM)的区别

经验风险最小化(Empirical Risk Minimization, ERM)仅仅关注在训练集上的误差,目标是最小化经验风险:

  • 问题:ERM 容易导致模型过拟合,因为它完全忽略了模型复杂度,可能学到过于复杂的模型。

相比之下,SRM 将模型复杂度作为约束条件:

  • 优势:SRM 考虑了模型复杂度,使得模型在训练数据上的表现和泛化能力之间取得平衡。
4. 模型复杂度的度量

SRM 中的正则化项 Ω(θ)用于度量模型的复杂度,常见的方法包括:

  1. 参数范数
  2. 模型的自由度
    • 自由度越高,模型越复杂。
    • 例如:多项式回归中多项式的阶数。
  3. 模型的容量
    • 例如 VC 维(Vapnik-Chervonenkis Dimension)或 Rademacher 复杂度,用于度量模型的表示能力。
5. SRM 的实现方法

在实际中,SRM 通过正则化技术来实现,就是我们前面提到的参数正则化:

  1. L1 正则化(Lasso 回归):
    • 通过最小化参数绝对值之和,鼓励稀疏解。
  2. L2 正则化(Ridge 回归):
    • 通过最小化参数平方和,限制参数幅度,防止过拟合。
  3. Elastic Net 正则化
    • 结合 L1 和 L2 正则化的优点,适用于特征选择和防止过拟合。
7.. SRM 的优势
  1. 提高泛化能力:通过控制模型复杂度,SRM 能够减少过拟合,提高模型对未知数据的适应性。
  2. 提供模型选择的理论基础:SRM 提供了一个系统化的方法,用于在不同复杂度的模型中进行选择。
  3. 与正则化方法紧密结合:SRM 理论支持了正则化在机器学习中的广泛应用。

结构风险最小化是机器学习中用于提高模型泛化能力的重要理论。它通过在损失函数中引入正则化项,在经验风险和模型复杂度之间找到平衡点,从而防止过拟合或欠拟合。实际应用中,SRM 常与正则化方法结合,广泛用于各种机器学习模型中,如线性回归、支持向量机、神经网络等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式-工厂模式/抽象工厂模式

工厂模式 定义 定义一个创建对象的接口,让子类决定实列化哪一个类,工厂模式使一个类的实例化延迟到其子类; 工厂方法模式是简单工厂模式的延伸。在工厂方法模式中,核心工厂类不在负责产品的创建,而是将具体的创建工作…

Chatper 4: Implementing a GPT model from Scratch To Generate Text

文章目录 4 Implementing a GPT model from Scratch To Generate Text4.1 Coding an LLM architecture4.2 Normalizing activations with layer normalization4.3 Implementing a feed forward network with GELU activations4.4 Adding shortcut connections4.5 Connecting at…

Unity ShaderGraph中Lit转换成URP的LitShader

ShaderGraph中的LitShader如下: 在顶点和片元着色器暴露出了上图中的几个参数,要转换成URPLitShaderLab,首先要找到这几个参数,打开LitShader,找到第一个Pass,可以看到下图中的顶点和片元的定义函数,还有引…

uni-app的学习

uni-app 有着跨平台支持、丰富的插件和生态系统、高性能、集成开发工具HBuilderX的配合使用。允许使用者仅通过一套代码发布到多平台使用。 uni-app官网 uni-app 是一个适合开发跨平台移动应用和小程序的框架,能够大幅提高开发效率。 一、了解 1.1 工具准备 从Git…

USRP X310 Windows 烧录镜像

说明 USRP-X 系列设备包含两个用于两个以太网通道的 SFP 端口。由于 SFP 端口支持 1 千兆 (SFP) 和 10 千兆 (SFP) 收发器,因此 UHD 附带了多个 FPGA 图像,以确定上述接口的行为。 注意:Aurora 图像需要从 FPGA 源代码手动构建。 FPGA 图像…

Sprint Boot教程之五十八:动态启动/停止 Kafka 监听器

Spring Boot – 动态启动/停止 Kafka 监听器 当 Spring Boot 应用程序启动时,Kafka Listener 的默认行为是开始监听某个主题。但是,有些情况下我们不想在应用程序启动后立即启动它。 要动态启动或停止 Kafka Listener,我们需要三种主要方法…

Docker save load 镜像 tag 为 <none>

一、场景分析 我从 docker hub 上拉了这么一个镜像。 docker pull tomcat:8.5-jre8-alpine 我用 docker save 命令想把它导出成 tar 文件以便拷贝到内网机器上使用。 docker save -o tomcat-8.5-jre8-alpine.tar.gz 镜像ID 当我把这个镜像传到别的机器,并用 dock…

计算机网络(三)——局域网和广域网

一、局域网 特点:覆盖较小的地理范围;具有较低的时延和误码率;使用双绞线、同轴电缆、光纤传输,传输效率高;局域网内各节点之间采用以帧为单位的数据传输;支持单播、广播和多播(单播指点对点通信…

浅谈云计算01 | 云计算服务的特点

在当今数字化时代,云计算作为一种强大的技术解决方案,正逐渐改变着企业和个人对信息技术的使用方式。本文将详细探讨云计算的五个主要特点,包括按需自助服务、广泛的网络接入、资源池化、快速弹性伸缩以及可计量服务。 一、按需自助服务 云…

【Qt】01-了解QT

踏入QT的殿堂之路 前言一、创建工程文件1.1 步骤介绍1.2 编译介绍方法1、方法2、编译成功 二、了解框架2.1 main.cpp2.2 .Pro文件2.2.1 注释需要打井号。2.2.2 F1带你进入帮助模式2.2.3 build文件 2.3 构造函数 三、编写工程3.1 main代码3.2 结果展示 四、指定父对象4.1 main代…

DDD - 微服务设计与领域驱动设计实战(上)_统一建模语言及事件风暴会议

文章目录 Pre概述业务流程需求分析的困境统一语言建模事件风暴会议什么是事件风暴(Event Storming)事件风暴会议 总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服务、实体与值对…

ssh2详细使用步骤,以及常用方法介绍

开源地址:https://github.com/mscdex/ssh2 ssh2 是一个功能强大的 Node.js 库,用于通过 SSH 协议与远程服务器交互。它支持命令执行、文件上传下载、端口转发等操作,常用于自动化脚本和远程服务器管理。 下面是 ssh2 的详细使用步骤和常用方…

Leetcode 377. 组合总和 Ⅳ 动态规划

原题链接&#xff1a;Leetcode 377. 组合总和 Ⅳ 可参考官解 class Solution { public:int combinationSum4(vector<int>& nums, int target) {vector<int> dp(target 1);dp[0] 1;// 总和为 i 的元素组合的个数for (int i 1; i < target; i) {// 每次都…

从epoll事件的视角探讨TCP:三次握手、四次挥手、应用层与传输层之间的联系

目录 一、应用层与TCP之间的联系 二、 当通信双方中的一方如客户端主动断开连接时&#xff0c;仅是在客户端的视角下连接已经断开&#xff0c;在服务端的眼中&#xff0c;连接依然存在&#xff0c;为什么&#xff1f;——触发EPOLLRDHUP事件&#xff1a;对端关闭连接或停止写…

dockerfile实现lnmp

dockerfile实现lnmp 自定义镜像实现整个架构 (基础镜像centos7) nginx cd /opt mkdir nginx mysql php vim Dockerfile docker network create --subnet172.111.0.0/16 mynetwork #创建自定义网段 docker run -itd --name nginx -p 80:80 --cpu-quota 20000 -m 512m -v /op…

unity下载newtonsoft-json

Package Manager&#xff0c;输入com.unity.nuget.newtonsoft-json 右键Assets-Reinport All

python学opencv|读取图像(三十一)缩放图像的三种方法

【1】引言 前序学习进程中&#xff0c;我们至少掌握了两种方法&#xff0c;可以实现对图像实现缩放。 第一种方法是调用cv2.resize()函数实现&#xff0c;相关学习链接为&#xff1a; python学opencv|读取图像&#xff08;三&#xff09;放大和缩小图像_python opencv 读取图…

PyCharm 引用其他路径下的文件报错 ModuleNotFound 或报红

PyCharm 中引用其他路径下的文件提示 ModuleNotFound&#xff0c;将被引用目录添加到系统路径&#xff1a; # # 获取当前目录 dir_path os.path.dirname(os.path.realpath(__file__)) # # 获取上级目录 parent_dir_path os.path.abspath(os.path.join(dir_path, os.pardir))…

ClickHouse-CPU、内存参数设置

常见配置 1. CPU资源 1、clickhouse服务端的配置在config.xml文件中 config.xml文件是服务端的配置&#xff0c;在config.xml文件中指向users.xml文件&#xff0c;相关的配置信息实际是在users.xml文件中的。大部分的配置信息在users.xml文件中&#xff0c;如果在users.xml文…

自动连接校园网wifi脚本实践(自动网页认证)

目录 起因执行步骤分析校园网登录逻辑如何判断当前是否处于未登录状态&#xff1f; 书写代码打包设置开机自动启动 起因 我们一般通过远程控制的方式访问实验室电脑&#xff0c;但是最近实验室老是断电&#xff0c;但重启后也不会自动连接校园网账户认证&#xff0c;远程工具&…