数据预处理、特征工程和特征学习

2023-11-15

  • 神经网络的数据预处理

数据预处理的目的是使原始数据更适于用神经网络处理,包括向量化、标准化、处理缺失值和特征提取。

1.向量化

       神经网络的所有输入和目标都必须是浮点数张量(特定情况下为整数张量)。无论处理什么数据,都必须先将其转换为张量。这一步叫做数据向量化。无论是路透社的数据集还是IMDB的数据集,都是文本分类的例子,开始时文本都为整数列表,然后使用了one-hot编码将其转换为float32格式的张量。而在手写数字分类和预测房价的例子中,数据已经是向量形式了。

2.值标准化

       在手写数字分类的例子中,开始时图像数据被编码为0-255范围内的整数。将这一数据输入网络之前,需要将其转换为float32格式并除以255,这样就得到了0-1范围内的浮点数、同样预测房价时开始时特征有各种不同的取值,所以将这一数据输入网络之前,需要对每个特征分别做标准化,使其均值为0,标准差为1。

       一般,若将取值相对较大的数据或异质(比如数据的一个特征在0-1范围内,另一个特征在100-200范围内)输入到神经网络中是不安全的。若将异质数据输入到神经网络中可能导致较大的梯度更新,进而导致网络无法收敛。所以输入数据应该具有以下特征

       ①取值较小,大部分值都应该在0-1范围内

       ②同质性:所有特征的取值都应该在大致相同的范围内

        如将每个特征分别标准化,使其平均值为0,标准差为1。这种标准化方法也很常见。

3.处理缺失值

       数据中有时会有缺失值,一般对于神经网络而言,将缺失值设为0是安全的,只要0不是一个有意义的值。网络就可以从数据中学到0意味着缺失数据,并且会忽略这个值。

       如果测试数据中可能有缺失值,而网络是在没有缺失值的数据上训练的,那么网络不可能学会忽略缺失值。所以在这种情况下应该人为生成一些有缺失项的训练样本:多次复制一些训练样本,然后删除测试数据中可能缺失的某些特征。

  • 特征工程

       特征工程是指将数据输入模型之前,利用自己关于数据和机器学习算法的知识对数据进行硬编码的变换(而这并不是模型学到的),以改善模型的效果。大多数情况下,一个机器学习模型无法从完全任意的数据中进行学习,呈现给模型的数据应该便于模型进行学习。

  • 过拟合和欠拟合

       机器学习的根本问题是优化与泛化的对立。优化是指调节模型以在训练数据上得到最佳性能,而泛化是指训练好的模型在前所未见的数据上的性能好坏,机器学习的目的是得到良好的泛化,但泛化是无法控制的,所以只能基于训练数据调节模型。

       训练开始时,优化和泛化是相关的,训练数据上的损失越小,测试数据上的损失也越小。这时的模型是欠拟合的,即还有改进的空间,因为网络还没有对训练数据中的所有的相关模式建模。但是训练数据上迭代一定次数之后,泛化不再提高,验证指标先是不变,再开始变差,即模型开始过拟合。这时模型开始学习仅和训练数据有关的模式,但这种模式对新数据来说是无关紧要的。

      为了防止模型从训练数据中学到错误或无关紧要的模式,最有解决方法是获取更多的训练数据。模型的训练数据越多,泛化能力自然就越好。如果无法获得更多的数据,次优解可以是调节模型允许存储的信息量,或对模型允许存储的信息加以约束。如果一个网络只能记住几个模式,那么优化过程会迫使模型集中学习最重要的模式。这样可能会得到更良好的泛化。

      这种降低过拟合的方法叫做正则化。

1.减小网络大小

       减小模型的大小是防止过拟合的一种很简单的方法,即减小模型中可学习参数的个数(可由每层的层数和每层的单元格数所决定)。在深度学习中,模型中可学习参数的个数被称为模型的容量(capacity)。参数更多的模型拥有更大的记忆容量,因此能够在训练样本和目标之间轻松地学会完美的字典式映射,但是这种映射没有任何的泛化能力。但是如果网络的资源有限,就难以学会这种映射。但模型又应该有足够的参数,防止欠拟合的发生,即模型应该避免容量不足。

2.添加权重正则化

       还有一种常见的降低的过拟合的方法就是强制让模型权重只能取较小的值,从而限制模型的复杂度,这使得权重值的分布更加规则,这种方法叫做权重正则化,实现方法是向网络损失函数中添加与较大权重值相关的成本。这个成本有两种形式:

       ①L1正则化(L1 regularization):添加的成本与权重系数的绝对值(权重的L1范数)成正比。

       ②L2正则化(L2 regularization):添加的成本与权重系数的平方(权重的L2范数)成正比。

#向模型添加L2权重正则化
from keras import regularizer

model = models.Sequential()
#l2(0.001)意思为该层权重矩阵的每个系数都会使网络总损失增加0.001×weight_coefficient_value。而这个惩罚只在训练时增加,所以这个网络的训练损失会比测试损失大很多
model.add(layers.Dense(16,kernel_regularizer=regularizersgularizers.l2(0.001),activation='relu', input_shape=(10000,)))
model.add(layers.Dense(16,kernel_regularizer=regularizersgularizers.l2(0.001), activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))

#也可同时做l1和l2正则化
regularizers.l1_l2(l1=0.001,l2=0.002)

3.添加dropout正则化

       dropout也是神经网络最有效的正则化方法之一。对某一层使用dropout,就是在训练过程中随机将该层的一些输出特征舍弃(设置为0)。假设在训练过程中,某一层对给定样本的返回值应该是向量[0.2,0.5,0.7,1.3,1.8],使用dropout后,这个向量会有几个随机的元素变成0,如[0.2,0,0.7,0,1.8]。dropout比率是被设为0的特征所占的比例,通常在0.2-0.5之间

model = models.Sequential()

model.add(layers.Dense(16,activation='relu', input_shape=(10000,)))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(16,activation='relu'))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(1, activation='sigmoid'))

总结,防止过拟合的常用方法:

1.获取更多的训练数据

2.减小网络容量

3.添加权重正则化

4.添加dropout

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据预处理、特征工程和特征学习 的相关文章

  • 讯飞AI算法挑战大赛-校招简历信息完整性检测挑战赛-三等奖方案

    前言 本文公开了 讯飞AI算法挑战大赛 校招简历信息完整性检测挑战赛 赛道的技术方案和代码 本次比赛主要采用 pdf解析 和 特征工程 的方法 通过使用 lightgbm 的树模型10折交叉验证进行 二分类 的任务 最终取得三等奖的成绩 一
  • 目前最火的大模型训练框架 DeepSpeed 详解来了

    目前 大模型的发展已经非常火热 关于大模型的训练 微调也是各个公司重点关注方向 但是大模型训练的痛点是模型参数过大 动辄上百亿 如果单靠单个GPU来完成训练基本不可能 所以需要多卡或者分布式训练来完成这项工作 一 分布式训练 1 1 目前主
  • 什么是概率匹配

    概率匹配是一种在信息论和统计学中常用的方法 用于将一个随机事件的概率分布与另一个概率分布进行匹配或逼近 它在数据处理 编码 压缩和模型选择等领域具有重要的应用 为我们理解和处理复杂的概率分布提供了一种有效的工具 首先 让我们来了解概率匹配的
  • 自信息量和一阶熵

    信息论中 自信息量和一阶熵是用来度量信息的重要概念 它们提供了一种方式来理解和量化信息的不确定性和平均量 对于解决信息传输 编码和存储等问题非常有用 首先 让我们来了解一下自信息量 自信息量是用来度量一个事件的信息量或不确定性的大小 假设有
  • 项目:IRIS数据集项目

    概述 机器学习是人工智能的一个子部分 涉及教导算法做出基于数据的决策并尝试像人类一样行事 有许多数据集可用于针对不同任务训练这些算法 例如 IRIS 数据集 涵盖三类花 Versicolor Setosa 和 Virginica 每种花有四
  • 人工智能知识表示与推理:构建智能系统的认知引擎

    导言 人工智能知识表示与推理是构建智能系统认知引擎的关键组成部分 本文将深入研究知识表示的方法和推理技术 以及它们在解决现实问题和提升智能系统智能水平中的作用 1 知识表示方法 符号表示法 使用符号和逻辑关系来表示知识 例如谓词逻辑 连接主
  • 软件测试/测试开发/人工智能丨机器学习中特征的含义,什么是离散特征,什么是连续特征。

    在机器学习中 特征 Feature 是输入数据中的属性或变量 用于描述样本或数据点 特征对于机器学习模型而言是输入的一部分 模型通过学习样本的特征与其对应的标签 或输出 之间的关系来做出预测或分类 特征可以分为不同类型 其中两个主要的类型是
  • 一网打尽目前常用的聚类方法,详细介绍了每一种聚类方法的基本概念、优点、缺点!!

    目前常用的聚类方法 1 K 均值聚类 K Means Clustering 2 层次聚类 Hierarchical Clustering 3 DBSCAN聚类 DBSCAN Clustering 4 谱聚类 Spectral Cluster
  • 第二部分相移干涉术

    典型干涉图 相移干涉术 相移干涉术的优点 1 测量精度高 gt 1 1000 条纹 边缘跟踪仅为 1 10 边缘 2 快速测量 3 低对比度条纹测量结果良好 4 测量结果不受瞳孔间强度变化的影响 独立于整个瞳孔的强度变化 5 在固定网格点获
  • 机器学习之迁移学习(Transfer Learning)

    概念 迁移学习 Transfer Learning 是一种机器学习方法 其核心思想是将从一个任务中学到的知识应用到另一个相关任务中 传统的机器学习模型通常是从头开始训练 使用特定于任务的数据集 而迁移学习则通过利用已经在一个任务上学到的知识
  • 第二部分相移干涉术

    典型干涉图 相移干涉术 相移干涉术的优点 1 测量精度高 gt 1 1000 条纹 边缘跟踪仅为 1 10 边缘 2 快速测量 3 低对比度条纹测量结果良好 4 测量结果不受瞳孔间强度变化的影响 独立于整个瞳孔的强度变化 5 在固定网格点获
  • 澳鹏干货解答!“关于机器学习的十大常见问题”

    探索机器学习的常见问题 了解机器学习和人工智能的基本概念 原理 发展趋势 用途 方法和所需的数据要求从而发掘潜在的商机 什么是机器学习 机器学习即教授机器如何学习的过程 为机器提供指导 帮助它们自己开发逻辑 访问您希望它们访问的数据 机器学
  • 互操作性(Interoperability)如何影响着机器学习的发展?

    互操作性 Interoperability 也称为互用性 即两个系统之间有效沟通的能力 是机器学习未来发展中的关键因素 对于银行业 医疗和其他生活服务行业 我们期望那些用于信息交换的平台可以在我们需要时无缝沟通 我们每个人都有成千上万个数据
  • 互操作性(Interoperability)如何影响着机器学习的发展?

    互操作性 Interoperability 也称为互用性 即两个系统之间有效沟通的能力 是机器学习未来发展中的关键因素 对于银行业 医疗和其他生活服务行业 我们期望那些用于信息交换的平台可以在我们需要时无缝沟通 我们每个人都有成千上万个数据
  • 什么是“人机协同”机器学习?

    人机协同 HITL 是人工智能的一个分支 它同时利用人类智能和机器智能来创建机器学习模型 在传统的 人机协同 方法中 人们会参与一个良性循环 在其中训练 调整和测试特定算法 通常 它的工作方式如下 首先 对数据进行人工标注 这就为模型提供了
  • 山西电力市场日前价格预测【2024-01-05】

    日前价格预测 预测说明 如上图所示 预测明日 2024 01 05 山西电力市场全天平均日前电价为259 10元 MWh 其中 最高日前电价为363 99元 MWh 预计出现在18 00 最低日前电价为0 00元 MWh 预计出现在11 1
  • 自动驾驶轨迹预测

    目录 神经网络轨迹预测综述 比较新的轨迹预测网络 Uber LaneRCNN 5 Google VectorNet 6 Huawei HOME 7 Waymo TNT 8 Aptive Covernet 9 NEC R2P2 10 商汤 T
  • 机器学习算法实战案例:时间序列数据最全的预处理方法总结

    文章目录 1 缺失值处理 1 1 统计缺失值 1 2 删除缺失值 1 3 指定值填充 1 4 均值 中位数 众数填充
  • 机器学习算法实战案例:Informer实现多变量负荷预测

    文章目录 机器学习算法实战案例系列 答疑 技术交流 1 实验数据集 2 如何运行自己的数据集 3 报错分析 机器学习算法实战案例系
  • GPT4+Python近红外光谱数据分析及机器学习与深度学习建模

    详情点击链接 GPT4 Python近红外光谱数据分析及机器学习与深度学习建模 第一 GPT4 入门基础 1 ChatGPT概述 GPT 1 GPT 2 GPT 3 GPT 3 5 GPT 4模型的演变 2 ChatGPT对话初体验 注册与

随机推荐

  • 机器学习实战——Kmeans聚类算法

    机器学习实战 Kmeans聚类算法 1 聚类算法介绍 1 1 K 均值聚类 1 2 聚类效果的评价 2 sklearn中的实现 1 聚类算法介绍 在无监督学习中 训练样本的标记是未知的 目标是通过对无标记训练样本的学习来揭示数据的内在性质及
  • 纷玩岛演唱会下单代码

    继大麦M端之后 再发现一个演唱会平台 纷玩岛 此平台不像大麦 猫眼那么火爆 相对来说比较容易研究 通过抓包软件发现下单很简单 就一个JWT登录后的头部token而已 下载地址 https download csdn net download
  • 结构体对函数指针的高级封装应用

    分层设计考虑 作用 降低对底层应用程序的高耦合度 示例 include mac h typedef struct phy t char channel char snd fail count char name char open flag
  • 软件测试用例覆盖率怎么算,如何计算增量测试覆盖率

    为了保证代码质量 一般会要求提交的源码要有测试用例覆盖 并对测试覆盖率有一定的要求 在实践中不仅会考核存量代码覆盖率 总体覆盖率 还会考核增量代码的覆盖率 或者说增量覆盖率更有实际意义 测试用例要随源码一并提交 实时保证源码的质量 而不是代
  • 进程和线程的区别,以及应用场景

    什么是线程 Linux下线程用进程PCB模拟描述 也叫轻量级进程 线程是进程内部的一个执行流 也就是线程在进程的地址空间内运行 一个进程内的所有线程共享进程资源 线程是CPU调度的基本单位 CPU调度是按照PCB进行调度的 创建 销毁一个线
  • Mule入门——DB、Rest、Soap接口开发

    一 DB查询接口开发 这里我用的mysql数据库 首先我们先查询下我们的数据库这里有很多数据 然后我们用AnypointStudio进行我们的接口开发 首先我们先新建一个Mule工程 File gt New gt Mule project
  • 计算机网络---传输层

    两个端的会话层之间提供建立 维护和取消传输连接的功能 这一层 数据传送的协议单元成为报文 网络层只是根据网络地址将源节点发出的数据包送到目的终点 而传输层负责将数据可靠的传送到相应的端口 传输层负责将上层数据分段提供端到端 可靠不可靠的传输
  • vue3-admin-template页面

    vue3 admin template 本人学习视频网址为 视频地址 源码 github 网页采用技术框架 本管理模板采用vue3开发 使用vue router来作为路由跳转 将登录成功后产生的菜单 token放入到vuex中存储 通过ax
  • 一般Python开发面试中可能会问到的大部分问题

    python语法以及其他基础部分 可变与不可变类型 浅拷贝与深拷贝的实现方式 区别 deepcopy如果你来设计 如何实现 new 与 init 的区别 你知道几种设计模式 编码和解码你了解过么 列表推导list comprehension
  • Linux嵌入式学习——c语言选择结构设计

    Linux嵌入式学习 c语言选择结构设计 一 if语句 1 1if语句的一般格式 1 2if语句常用的3种形式 1 3if语句的嵌套 二 关系运算符和关系表达式 2 1关系运算符及其优先次序 2 2关系表达式 三 逻辑运算符和逻辑表达式 3
  • @ControllerAdvice注解使用及原理探究

    最近在新项目的开发过程中 遇到了个问题 需要将一些异常的业务流程返回给前端 需要提供给前端不同的响应码 前端再在次基础上做提示语言的国际化适配 这些异常流程涉及业务层和控制层的各个地方 如果每个地方都写一些重复代码显得很冗余 然后查询解决方
  • PowerBI入门学习笔记

    下载安装 Win10系统 在微软商店里直接下载PowerBI desktop 打开即可 界面如下 接下来导入后面要用到的数据 我目前用的都是Excel文件 获取数据 选中后选择要导入的若干个工作表 点击 加载数据 就进入到power que
  • vue+element实现双向描点 反向联动

    前端项目里经常会有锚点得操作 以及反向联动的效果 就是一个菜单 点击会定位到一个块上 滚动的当前块的时候 菜单会出现定位的效果 差不多就是这种动起来的效果 由于不太懂之前的逻辑 今天又从重新看了下 上代码 html 滚动的区域
  • 关于Python中pip install 各种包下载不下来的问题解决办法

    你们有可能报安装不成功或者下面这个问题 已经安装了但并非在你的Python安装路径下 C Users xxx gt pip install ddt Requirement already satisfied ddt in e anacond
  • redis 实现乐观锁

    redis是单线程程序但是支持多进程同时访问同一个redis服务 这个时候就需要锁机制来处理一些并发问题 redis提供了watch指令来实现乐观锁 watch和事务配合使用 往往写在multi之前 用来监视一个key 比如watch mo
  • 实战wxPython:047 - Book控件(第一部分)

    在wxPython中 book控件允许用户在各种面板之间切换 最常见的例子是带有选项卡界面的浏览器和系统选项对话框 本文将向您介绍这些控件的创建和基本配置 wxPython目前内置了多个这样的控件 除文章 wxPython 高级控件之选项卡
  • 看完这篇 教你玩转渗透测试靶机Vulnhub——Grotesque:3.0.1

    Vulnhub靶机Grotesque 3 0 1渗透测试详解 Vulnhub靶机介绍 Vulnhub靶机下载 Vulnhub靶机安装 信息收集 漏洞发现 LFI漏洞利用 本地文件包含漏洞 SSH登入 提权 获取FLAG Vulnhub靶机渗
  • pyqt 万能简易模板(四)

    本文将介绍一些pyqt5基本使用技巧 不借助Qtdesigner 而是全部用代码编写 将实现页面布局 窗口自适应 字体自适应等功能 一般的简易工程均可使用 简单高效 对于pyqt5的一些基本技巧 本文内容基本够用 可以快速实现自己想要的界面
  • Java中的如何检测字符串是否相等

    文章目录 0 写在前面 1 介绍 2 举例 3 写在后面 0 写在前面 实际业务中有时候得检测字符串是否相等的场景 例如在数据库中提取uuid 检测两个uuid是否相等就需要用到这个地方 1 介绍 可以使用equals方法检测两个字符串是否
  • 数据预处理、特征工程和特征学习

    神经网络的数据预处理 数据预处理的目的是使原始数据更适于用神经网络处理 包括向量化 标准化 处理缺失值和特征提取 1 向量化 神经网络的所有输入和目标都必须是浮点数张量 特定情况下为整数张量 无论处理什么数据 都必须先将其转换为张量 这一步