深度学习之图像回归(二)

前言

这篇文章主要是在图像回归(一)的基础上对该项目进行的优化。(一)主要是帮助迅速入门 理清一个深度学习项目的逻辑 这篇文章则主要注重在此基础上对于数据预处理和模型训练进行优化前者会通过涉及PCA主成分分析  特征选择 后者通过正则化

数据预处理

数据预处理的原因

思路链

未经过处理的原始数据存在一些问题-> 对数据进行处理 (涉及多种方法)->提升模型性能

数据可能存在的问题

  • 冗余信息:数据中可能存在重复的特征或高度相关的特征,这些信息不会为模型提供额外的价值,反而会增加计算负担和过拟合的风险。

  • 噪声数据:数据中可能存在错误、异常值或随机波动,这些数据点可能来源于测量失误、数据录入错误或自然噪声。

  • 高重复度:某些特征或数据点可能高度相似或重复,导致模型对这些重复模式过度拟合,而无法泛化到新的数据。

  • 缺失值:数据中可能存在缺失值,需要通过填充或删除等方式处理。

  • 不一致性:数据可能来自不同的源,格式或单位不一致,需要进行标准化或归一化处理。

最终的目的

  • 提高模型训练效率:减少特征数量和数据维度,降低计算复杂度。

  • 增强模型泛化能力:去除噪声和冗余信息,使模型更专注于数据中的真实规律。

  • 提升模型可解释性:减少特征数量后,模型更容易理解和解释。

数据预处理的方式

这里的几种方式就是对原始数据特征提取的方式不同 或者对

PCA主成分分析

核心:化繁为简 直击核心

是什么:

降维 用更少的维度就表现出多维数据的特征 

为什么:

简化数据 去除冗余

怎么做:

步骤1:整理数据

首先,要把数据整理好,让每个特征的平均值为0。这就好比把一堆杂乱的数据“摆平”,让它们在一个统一的水平线上。这一步在数学上叫做“数据标准化”。

步骤2:找最重要的方向

接下来,PCA会找数据中最“重要”的方向。这里的“重要”是指数据变化最大的方向。想象一下,你有一堆点,PCA会找一条线,让这些点在这条线上的投影尽可能地分散。这条线就是第一个“主成分”。

步骤3:找次重要的方向

找到第一个最重要的方向后,PCA会继续找第二个最重要的方向,但这个方向要和第一个方向垂直(也就是完全独立)。这样,PCA会依次找到多个方向,每个方向都比前一个方向“重要”一点。

步骤4:简化数据

最后,PCA会把数据投影到这些最重要的方向上,得到新的特征。这些新特征就是“主成分”。因为主成分的数量通常比原始特征少,所以数据就被简化了。

def get_feature_importance_with_pca(feature_data, k=4, column=None):"""使用PCA进行特征降维,并找出对前k个主成分影响最大的原始特征。参数:feature_data (pd.DataFrame or np.ndarray): 特征数据。k (int): 选择的主成分数目,默认为4。column (list, optional): 特征名称列表。如果feature_data是DataFrame,则可以省略此参数。返回:X_new (np.ndarray): 降维后的特征数据。selected_features (list of lists): 对每个主成分影响最大的原始特征及其载荷。"""# 如果提供了列名或feature_data是DataFrame,获取列名if column is None and hasattr(feature_data, 'columns'):column = feature_data.columns.tolist()elif column is None:raise ValueError("Column names must be provided if feature_data is not a DataFrame.")# 数据标准化scaler = StandardScaler()feature_data_scaled = scaler.fit_transform(feature_data)# 应用PCApca = PCA(n_components=k)X_new = pca.fit_transform(feature_data_scaled)return X_new

载荷?

每个数据的原始特征在主成分中的重要性。比如用苹果 梨子 香蕉做一杯混合果汁 最后得到的果汁的新特征包含上述三种水果的味道和营养 这就是一个主成分 是原始特征的线性组合

载荷指的是每种水果在果汁中的贡献比例

比如

50% 苹果 + 30% 橙子 + 20% 香蕉

这里的“50%”、“30%”和“20%”就是每种水果在果汁中的“贡献比例”,在PCA中,这些比例就叫做载荷

特征选择

是什么

假设你有一个数据集,数据集中有很多特征(比如100个特征),但并不是所有特征都对预测结果有帮助。有些特征可能是多余的,或者和目标没有关系。特征选择的目的就是从这100个特征中挑选出最有用的几个特征(比如5个或10个),让模型只用这些重要的特征来学习。

为什么
  1. 减少计算量:模型只需要处理少量的特征,训练速度会更快。

  2. 提高模型性能:去除无关特征后,模型可以更专注于重要的特征,预测效果可能会更好。

怎么办
def get_feature_importance(feature_data, label_data, k =4,column = None):model = SelectKBest(chi2, k=k)      # 定义k个特征值的卡方检验得到的特征选择模型feature_data = np.array(feature_data, dtype=np.float64) # 特征值转化成浮点数 X_new = model.fit_transform(feature_data, label_data)   # 用这个函数选择k个最佳特征print('x_new', X_new)scores = model.scores_                # scores即每一列与结果的相关性indices = np.argsort(scores)[::-1]        # 默认小到大排序 [::-1]表示反转一个列表或者矩阵。 最终实现大到小排序 if column:                            # 打印k_best_features = [column[i+1] for i in indices[0:k].tolist()]         # 选中这些列 打印print('k best features are: ', k_best_features)return X_new, indices[0:k]                  # 返回选中列的特征和他们的下标。
卡方检验

适用场景:

①非负。卡方检验基于频率分布,计算的是观测频数与期望频数之间的差异。因此,它要求输入特征必须是非负的,例如布尔值(0或1)或频率计数

②离散特征。对于连续的需要先进行离散化处理。

③简单易用 快速筛选 

λ的设置
  • λ 过大 → 模型欠拟合(训练和验证损失都很高)
  • \lambdaλ 过小 → 可能过拟合(训练损失低但验证损失高)
  • \lambdaλ 适中 → 平衡拟合与泛化

 正则化的影响路径
  • 正向传播:损失值=预测误差 + 0.00075×所有权重平方和
  • 反向传播:梯度=原始梯度 + 2×0.00075×权重 → 权重会自动变小
  • 物理意义:强制让模型参数趋向于较小的值,抑制模型复杂度

模型训练的优化

模型复杂度的体现

在机器学习中,模型复杂度通常指的是模型的参数数量和参数的大小。一个复杂的模型可能具有以下特点:

  • 参数数量多:模型中有大量的参数,例如深度神经网络中的权重和偏置。

  • 参数值大:模型的参数值(权重)可能很大,这意味着模型对输入特征的响应非常敏感。

复杂模型虽然能够很好地拟合训练数据(甚至可以完美拟合),但往往会过拟合,即在训练数据上表现很好,但在新的、未见过的数据上表现不佳。这是因为复杂模型可能会学习到训练数据中的噪声和细节,而不是数据的真实规律。

为什么要限制模型复杂度

限制模型复杂度的主要目的是提高模型的泛化能力,即让模型在新的、未见过的数据上表现更好。具体原因包括:

  1. 防止过拟合:复杂模型容易过拟合,因为它们可以学习到训练数据中的噪声和细节。通过限制复杂度,模型更倾向于学习数据的基本规律,而不是噪声。

  2. 简化模型:减少模型的参数数量或参数大小,可以使模型更简洁、更易于解释。这也有助于减少计算成本和训练时间。

  3. 提高稳定性:限制复杂度可以减少模型对输入数据的敏感性,使其在面对小的扰动时更加稳定。

如何限制模型复杂度

通过正则化项对损失函数进行约束

原始的损失函数计算

def mseLoss(pred, target, model):loss = nn.MSELoss(reduction='mean')        # 计算loss函数regularization_loss = 0                    # 正则项for param in model.parameters():# regularization_loss += torch.sum(abs(param)) # 参数的绝对值之和 L1正则项regularization_loss += torch.sum(param ** 2)   # 计算所有参数平方 L2正则项return loss(pred, target) + 0.00075 * regularization_loss             # 返回损失。

常见的正则化方法

  1. L1正则化(Lasso)

    • 在损失函数中添加参数的绝对值之和作为惩罚项。

    • 公式:Lossnew​=Loss+λ∑i​∣wi​∣

    • 作用:L1正则化会促使某些参数变为零,从而实现稀疏性(即自动特征选择)。

    • 直观理解:通过惩罚参数的绝对值,强迫模型丢弃一些不重要的特征。

  2. L2正则化(Ridge)

    • 在损失函数中添加参数的平方和作为惩罚项。

    • 公式:Lossnew​=Loss+λ∑i​wi2​

    • 作用:L2正则化会使得所有参数的值变得更小(但不会变为零),从而减少模型对每个特征的依赖。

    • 直观理解:通过惩罚参数的平方,限制参数的大小,使模型更“平滑”。

  3. Dropout

    • 在训练过程中随机丢弃部分神经元的输出。

    • 作用:防止神经元之间的共适应性,减少模型对某些特定输入的依赖,从而提高泛化能力。

  4. Early Stopping

    • 在训练过程中监控模型在验证集上的性能,当性能不再提升时停止训练。

    • 作用:防止模型过度拟合训练数据

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安科瑞能源物联网平台助力企业实现绿色低碳转型

安科瑞顾强 随着全球能源结构的转型和“双碳”目标的推进,能源管理正朝着智能化、数字化的方向快速发展。安科瑞电气股份有限公司推出的微电网智慧能源管理平台(EMS 3.0),正是这一趋势下的创新解决方案。该平台集成了物联网&…

基于Spring Boot的农产品智慧物流系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

论文笔记-WSDM2024-LLMRec

论文笔记-WSDM2024-LLMRec: Large Language Models with Graph Augmentation for Recommendation LLMRec: 基于图增强的大模型推荐摘要1.引言2.前言2.1使用图嵌入推荐2.2使用辅助信息推荐2.3使用数据增强推荐 3.方法3.1LLM作为隐式反馈增强器3.2基于LLM的辅助信息增强3.2.1用户…

优化YOLOv8:如何利用ODConv卷积解决复杂背景下的目标识别问题

文章目录 1. YOLOv8的现状与挑战1.1 ODConv的提出背景1.2 ODConv卷积的原理 2. YOLOv8与ODConv的结合2.1 ODConv集成到YOLOv8中的架构2.2 代码实现示例2.3 性能评估与改进 3. ODConv的实际应用与优化3.1 ODConv在不同数据集上的表现3.1.1 COCO数据集3.1.2 VOC数据集3.1.3 自定义…

DPVS-2:单臂负载均衡测试

上一篇编译安装了DPVS,这一篇开启DPVS的负载均衡测试 : 单臂 FULL NAT模式 拓扑-单臂 单臂模式 DPVS 单独物理机 CLINET,和两个RS都是另一个物理机的虚拟机,它们网卡都绑定在一个桥上br0 , 二层互通。 启动DPVS …

Maven导入hutool依赖报错-java: 无法访问cn.hutool.core.io.IORuntimeException 解决办法

欢迎大家来到我的博客~欢迎大家对我的博客提出指导&#xff0c;有错误的地方会改进的哦~点击这里了解更多内容 目录 一、报错二、解决办法 一、报错 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-captcha</artifactId> </de…

flowable适配达梦数据库

文章目录 适配相关问题无法从数据库产品名称“DM DBMS”中推断数据库类型分析解决 构建ibatis SqlSessionFactory时出错&#xff1a;inStream参数为null分析解决 liquibase相关问题问题一&#xff1a;不支持的数据库 Error executing SQL call current_schema: 无法解析的成员访…

ElasticSearch公共方法封装

业务场景 1、RestClientBuilder初始化&#xff08;同时支持单机与集群&#xff09; 2、发送ES查询请求公共方法封装&#xff08;支持sql、kql、代理访问、集群访问、鉴权支持&#xff09; 3、判断ES索引是否存在&#xff08;/_cat/indices/${indexName}&#xff09; 4、判断ES…

题海拾贝:【枚举】P2010 [NOIP 2016 普及组] 回文日期

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》 欢迎点赞&#xff0c;关注&#xff01; 1、题…

《深入理解JVM》实战笔记(二): 类加载机制与类加载器

序言 Java 语言的强大之处之一在于其动态加载的能力&#xff0c;使得 Java 程序可以在运行时加载新的类&#xff0c;而不需要在编译时确定所有的类信息。这一切都离不开 JVM 的类加载机制。本篇博客将详细探讨 JVM 的类加载过程以及类加载器的工作原理&#xff0c;帮助你更深入…

vin码拍照识别-车牌识别api-vin码接口解析

在当今数字化飞速发展的背景下&#xff0c;如何高效、准确地管理和追踪车辆信息成为了众多企业和个人关注的焦点。VIN码&#xff08;Vehicle Identification Number&#xff09;和车牌作为车辆独一无二的身份标识&#xff0c;在车辆管理、保险理赔、二手车交易等多个场景中发挥…

Tomcat理论(Ⅰ)

目录 服务器流程图一览 一、JavaWeb前奏(了解) 1. C/S结构 2. B/S结构 3. 静态网页&动态网页 4.常见的网页 5.Web服务器 知名服务器&#xff1a; ​编辑 二、Tomcat安装&#xff08;熟练&#xff09; 1.Tomcat概述 2.Tomcat的作用 3.Tomcat安装 4.Tomcat测试 3.…

[实现Rpc] 通信-Muduo库的实现 | 完美转发 | reserve | unique_lock

目录 MudouBuffer ⭕右值引用 | 完美转发 右值引用 完美转发 实现原理 结合右值引用和完美转发的例子 LVProtocol ⭕vector 的 reserve 函数 1. 背景 2. reserve 函数原型 3. 示例代码 4. 输出结果 5. 结果解析 6. 关键点说明 MuduoConnection ⭕mudou 库 &am…

[OD E 100] 生成哈夫曼树

题目 题目描述 给定长度为 n 的无序的数字数组&#xff0c;每个数字代表二叉树的叶子节点的权值&#xff0c;数字数组的值均大于等于 1 。请完成一个函数&#xff0c;根据输入的数字数组&#xff0c;生成哈夫曼树&#xff0c;并将哈夫曼树按照中序遍历输出。 为了保证输出的二…

网络安全知识:网络安全概念、内容和主要技术纵览

21世纪全世界的计算机都将通过Internet联到一起&#xff0c;随着Internet的发展&#xff0c;网络丰富的信息资源给用户带来了极大的方便&#xff0c;但同时也给上网用户带来了安全问题。由于Internet的开放性和超越组织与国界等特点&#xff0c;使它在安全性上存在一些隐患。而…

【机器学习】多元线性回归算法和正规方程解求解

多元线性方差和正规方差解 一、摘要二、多元线性回归介绍三、正规方程解的求解及代码实现 一、摘要 本文围绕多元线性回归的正规方程解展开&#xff0c;为初学者系统介绍了相关基本概念、求解方法、实际应用以及算法封装要点。 首先&#xff0c;深入阐释了正规方程解这一多元…

Arcmap和ArcgisPro重装及配置迁移

近期要重装一下ArcgisPro&#xff0c;在此记录并作为大家的借鉴 1.备份配置文件&#xff1a;其中Desktop10.8为Arcmap的配置文件 2.通过控制面板卸载&#xff0c;arcpro卸载时间较长&#xff0c;先将语言包等卸载&#xff0c;最后再卸载5G主程序&#xff0c;有些文章会介绍清理…

【天线】IFA天线知识点摘抄

MIFA天线的尺寸与性能关系 1&#xff0c;辐射效率 天线越小&#xff0c;辐射效率越低。唯一好处是减少PCB占用空间 2&#xff0c;带宽 一般MIFA天线在2.4G频段内的带宽&#xff1a;S11≤-10dB的范围为2.44GHz230MHz。较小的尺寸可能会限制带宽 3&#xff0c;增益 MIFA天线的…

路由基本配置

学习目标 • 根据拓扑图进行网络布线。 • 清除启动配置并将路由器重新加载为默认状态。 • 在路由器上执行基本配置任务。 • 配置并激活以太网接口。 • 测试并检验配置。 • 思考网络实施方案并整理成文档。 任务 1&#xff1a;网络布线 使用适当的电缆类型连接网络设备。…

力扣27. 移除元素(快慢指针)

Problem: 27. 移除元素 文章目录 题目描述思路Code 题目描述 思路 定义快慢指针均指向数组起始位置&#xff0c;当fast指针指向的元素不等于val时将fast指针指向的元素赋值给slow并让slow指针向前移动&#xff0c;fast指针一直向前移动 时间复杂度: O ( n ) O(n) O(n); 空间复杂…