当前位置:网站首页>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数字分类问题上取得成功之前,其解决方法通常是基于硬编码的特征,比如数字图像中的圆圈格式、图像中每个数字的高度、像素值的直方图。
幸运的是,对于现代深度学习,大部分特征工程都是不需要的,因为神经网络能够从原始的数据中自动提取有用的特征。这并不是意味着,只要使用深度神经网络,就无需担心特征工程。原因有以下两点:
- 良好的特征仍然可以让你用更少的资源更优雅的解决问题。例如,使用卷积神经网络来读取钟面上的时间是非常可笑的。
- 良好的特征可以让你用更少的数据解决问题。深度学习模型自主学习特征的能力依赖于大量的训练数据。如果只有很少的样本,那么特征的信息价值就变得十分重要。
边栏推荐
猜你喜欢

TCP 和UDP 的详细介绍

OpenFOAM extracts equivalency and calculates area

Kotlin multiplication, how do I multiply smaller and smaller?

Best Practices for Migration from Jincang Database from MySQL to KingbaseES (3. MySQL Database Migration Practice)

钢铁电商行业方案:钢铁工业产品全生命周期管理解决方案

Redis-Redisson介绍和用途

TCP相关面试常问

【笔记】混淆矩阵和ROC曲线

一文了解SAP IBP是什么?

种草一个让程序员男友编程时,记住一辈子的 IDEA 神仙插件!
随机推荐
I ported GuiLite to STM32F4 board
SkiaSharp 之 WPF 自绘 五环弹动球(案例版)
解析,强势供应商的管理方法
Task Scheduler 计划定时任务,修改时报错: One or more of the specified arguments are not valid
TCP 和UDP 的详细介绍
OpenFOAM extracts equivalency and calculates area
数字3d虚拟交互展厅顺应时代发展需求和趋势
online test paper concept
ESP8266-Arduino编程实例-MAX6675冷端补偿K热电偶数字转换器驱动
这个困扰程序员50年的问题,终于要被解决了?
计组错题集
银微转债,洁特转债上市价格预测
Jincang Database Pro*C Migration Guide (3. KingbaseES Pr*oc Compatibility with Oracle Pro*c)
工程水文学试题库
"Obs" start pushing flow failure: the Output. The StartStreamFailed call process
ClickHouse delete table
Have bosses know date field flinksql is synchronized to the use of the null on how to deal with
ClickHouse uninstall and reinstall
高等代数_笔记_配方法标准化二次型
C# WPF设备监控软件(经典)-上篇