当前位置:网站首页>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数字分类问题上取得成功之前,其解决方法通常是基于硬编码的特征,比如数字图像中的圆圈格式、图像中每个数字的高度、像素值的直方图。
幸运的是,对于现代深度学习,大部分特征工程都是不需要的,因为神经网络能够从原始的数据中自动提取有用的特征。这并不是意味着,只要使用深度神经网络,就无需担心特征工程。原因有以下两点:
- 良好的特征仍然可以让你用更少的资源更优雅的解决问题。例如,使用卷积神经网络来读取钟面上的时间是非常可笑的。
- 良好的特征可以让你用更少的数据解决问题。深度学习模型自主学习特征的能力依赖于大量的训练数据。如果只有很少的样本,那么特征的信息价值就变得十分重要。
边栏推荐
猜你喜欢
随机推荐
我将GuiLite移植到了STM32F4开发板上
富瑞宣布战略交易,以简化运营,持续专注于打造领先的独立全服务型全球投行公司
I ported GuiLite to STM32F4 board
log4j设置日志的时区
基于 jetpack compose,使用MVI架构+自定义布局实现的康威生命游戏
视频中场的概念(1080I和1080P)和BT601/656/709/1120/2020/2077
使用docker容器搭建MySQL主从复制
【uni-APP搭建项目】
Jincang Database Pro*C Migration Guide ( 5. Program Development Example)
mysql bool盲注
ESP8266-Arduino编程实例-MAX6675冷端补偿K热电偶数字转换器驱动
OpenFOAM extracts equivalency and calculates area
Jincang Database Pro*C Migration Guide (3. KingbaseES Pr*oc Compatibility with Oracle Pro*c)
Auto.js Pro write the first script hello world
vscode hide activity bar
DC-4靶场搭建及渗透实战详细过程(DC靶场系列)
基于flowable的upp(统一流程平台)运行性能优化(2)
基于WPF重复造轮子,写一款数据库文档管理工具(一)
积分商城可设置的四种兑换商品类型
Browser listens for tab closing