当前位置:网站首页>13.机器学习基础:数据预处理与特征工程
13.机器学习基础:数据预处理与特征工程
2022-08-03 04:05:00 【好名字能更容易让朋友记住】
数据预处理、特征工程和特征学习
在深入研究模型开发之前,我们还必须解决另一个重要问题:将数据输入神经网络之前,如何准备输入数据和目标?许多数据预处理方法和特征工程技术都是和特定领域相关的(比如只和文本数据或图像数据相关)。以下是所有数据领域通用的基本方法。
神经网络的数据预处理
数据预处理的目的是使原始数据更适于用神经网络处理,包括向量化、标准化、处理缺失值和特征提取。
向量化
神经网络的所有输入和目标都必须是浮点数张量(在特定情况下可以是整数张量)。无论是什么数据都必须首先将其转换为张量,这一步叫做数据张量化(data vectorization)。
标准值化
在手写数字分类中,开始时图像数据被编码为0255范围内的整数,表示灰度值。将这一数据输入网络之前,你需要将其转换为float格式并处以255,这一就得到01范围内的浮点值。一般来说,将取值相对较大的数据(比如多为整数,比网络权重的初始值大很多)或异质数据(heterogeneous data,比如数据的一个特征在01范围内,另一个特征在100200之内)输入到神经网络中是不安全的。**这么做可能导致较大的梯度更新,进而导致网络无法收敛。**为了让网络的学习变得更容易,输入的数据应该具有以下特征:
- 取值较小:大部分值都应该在0~1范围内。
- 同质性(homogenous):所有特征的取值都应该在大致相同的范围内。
此外,下面这种更严格的标准化方法也很常见,而且很有用,虽然不一定总是必须的
- 将每个特征分别标准化,使其平均值为0。
- 将每个特征分别标准化,使其标准差为1。
这对于Numpy 数组很容易实现
# 假设x是一个形状为(samples, features)的二维矩阵。
x -= x.mean(axis=0)
x /= x.std(axis=0)
处理缺失值
你的数据中有时候可能会有缺失值。在神经网络中,将缺失值设为0是安全的,只要0不要是一个有意义的值。网络中能够从数据中学到0意味着缺失数据,并且会忽略这个值。
注意:如果测试数据中可能有缺失值,而网络是在没有缺失值的数据上训练的,那么网络不可能学会忽略缺失值。在这种情况下,你应该人为生成一些有缺失值的训练样本:多次复制一些训练样本,然后删除测试数据中可能缺失的某些特征。
特征工程
**特征工程(feature engineering)**是指将数据输入模型之前,利用你自己关于数据和机器学习算法的知识对数据进行硬编码的变化,以改善模型的效果。多数情况下,一个机器学习模型无法从完全任意的数据进行学习。呈现给模型的数据应该便于模型进行学习。
特征工程的本质:用更简单的方式表达问题,从而使问题变得更容易。它通常需要深入理解问题。
深度学习出现之前,特征工程曾经非常重要,因为经典的浅层算法没有足够大的假设空间来自己学习有用的表示。将数据呈现给算法的方式对解决问题至关重要。 例如卷积神经网络在MNIST数字分类问题上取得成功之前,其解决方法通常是基于硬编码的特征,比如数字图像中的圆圈格式、图像中每个数字的高度、像素值的直方图。
幸运的是,对于现代深度学习,大部分特征工程都是不需要的,因为神经网络能够从原始的数据中自动提取有用的特征。这并不是意味着,只要使用深度神经网络,就无需担心特征工程。原因有以下两点:
- 良好的特征仍然可以让你用更少的资源更优雅的解决问题。例如,使用卷积神经网络来读取钟面上的时间是非常可笑的。
- 良好的特征可以让你用更少的数据解决问题。深度学习模型自主学习特征的能力依赖于大量的训练数据。如果只有很少的样本,那么特征的信息价值就变得十分重要。
边栏推荐
- 让环境自己说话,论环境自描述的重要性
- mysql bool盲注
- Shenzhen Offline Registration|StarRocks on AWS: How to conduct rapid and unified analysis of real-time data warehouses
- 基于flowable的upp(统一流程平台)运行性能优化(3)
- 高等代数_证明_矩阵乘以自身的转置的特征值不小于0
- t conditional judgment statement and if loop
- synchronized原理
- Pro * C Jin Cang database migration guide (4) KingbaseES Pro * C migration guide)
- 计组错题集
- ClickHouse delete table
猜你喜欢
随机推荐
vscode hide activity bar
Smart fitness gesture recognition: PP - TinyPose build AI virtual trainer!
工程制图第九章作业
我将GuiLite移植到了STM32F4开发板上
How to write test cases in software testing technology (2)
DC-5靶场下载及渗透实战详细过程(DC靶场系列)
Dialog manager in the fourth chapter: the dialog message loop
多线程使用哈希表
高等代数_证明_不同特征值的特征向量线性无关
找不到符号@SuperBuilder,你以为真的是Lombok的问题?
肖sir__自动化面试题
leetcode刷题学习之路
基于flowable的upp(统一流程平台)运行性能优化(3)
单元测试是什么?怎么写?主要测试什么?
IDEC和泉触摸屏维修HG2F-SS22V HG4F软件通信分析
HI3521D 烧录128M nand flash文件系统过程-一定要注意flash的容量
计组错题集
Redis-Redisson介绍和用途
"Obs" start pushing flow failure: the Output. The StartStreamFailed call process
synchronized原理