本文章转自http://deeplearning.stanford.edu/wiki/index.php/Data_Preprocessing
数据预处理在许多深度学习算法中起着非常重要的作用。在实践中,许多方法在数据正常化和白化后效果最好。但是,数据预处理的确切参数通常不会立即显现,除非具有使用算法的丰富经验。在这个页面中,我们希望揭开一些预处理方法的神秘面纱,并提供预处理数据的提示(以及“标准管道”)。

提示:接近数据集时,首先要看数据本身并观察其属性。虽然这里的技术通常适用,但您可能想要根据数据集选择做某些不同的事情。例如,一个标准的预处理技巧是从自身中减去每个数据点的均值(也称为去除DC,局部均值减法,减法归一化)。虽然这对于自然图像等数据是有意义的,但对于平稳性不成立的数据来说,它并不那么明显。


数据标准化


数据预处理的标准第一步是数据标准化。虽然有几种可能的方法,但这一步通常取决于数据。特征标准化的常用方法是:

简单的重新调整

每个例子的平均减法(又称去除DC)

特征标准化(整个数据集中每个特征的零均值和单位差异)

简单的重新调整

在简单的重新缩放中,我们的目标是重新缩放每个数据维度(可能独立)的数据,以便最终数据矢量位于[0,1]或 [ - 1,1]范围内 (取决于您的数据集)。这对于后续处理很有用,因为许多默认参数(例如PCA-白化中的epsilon)将数据视为已被缩放至合理范围。

例如:处理自然图像时,我们经常会获取范围[0,255]内的像素值。通过将数据除以255将这些值重新设置为[0,1]是一种常见操作 。

每个示例均值减法

如果您的数据是固定的(即每个数据维度的统计数据遵循相同的分布),那么您可能需要考虑减去每个示例的平均值(按照每个示例计算)。

例如:在图像中,这种归一化具有去除数据点的平均亮度(强度)的属性。在很多情况下,我们对图像的光照条件不感兴趣,但更多的是在内容上; 去除每个数据点的平均像素值在这里是有意义的。注意:虽然此方法通常用于图像,但在将图像应用于彩色图像时,可能需要更加小心。特别是,平稳性质通常不适用于不同颜色通道中的像素。

功能标准化

特征标准化是指(独立)将数据的每个维度设置为零均值和单位方差。这是用于规范化的最常用方法,并且通常广泛使用(例如,在使用SVM时,功能标准化通常被推荐为预处理步骤)。在实践中,首先通过计算每个维度的平均值(穿过数据集)并从每个维度中减去它。接下来,每个维度除以其标准差。

例如:使用音频数据时,通常使用MFCC作为数据表示。但是,MFCC功能的第一个组件(代表DC)通常会掩盖其他组件。因此,恢复元件平衡的一种方法是独立地标准化每个元件中的值。


PCA / ZCA白化


在进行简单的归一化之后,白化常常是下一个预处理步骤,有助于使我们的算法更好地工作。在实践中,许多深度学习算法依赖于美白来学习好的特征。

在执行PCA / ZCA白化过程中,首先要确定这些特征(穿过数据集)是否有意义 \ frac {1} {m} \ sum_i x ^ {(i)} = 0 。具体来说,这应该在计算协方差矩阵之前完成。(唯一的例外是当执行每个示例平均减法并且数据在维度/像素上是固定的。)

接下来,需要选择执行PCA / ZCA白化时使用的epsilon的值(回想一下,这是对低通滤波数据有影响的正则化术语)。事实证明,选择这个值也可以在特征学习中扮演重要角色,我们讨论两种选择epsilon的情况:

基于重建的模型

在基于重构的模型(包括自动编码器,稀疏编码,RBM,k-Means)中,通常最好将epsilon设置为可实现低通滤波的值。一种检查方法是设置epsilon的值,运行ZCA白化,然后在白化之前和之后可视化数据。如果epsilon的值设置得太低,数据看起来会非常嘈杂; 相反,如果epsilon设置得太高,则会看到原始数据的“模糊”版本。感受epsilon尝试的幅度的好方法是在图上绘制特征值。如下图所示,您可能会看到与高频噪声成分相对应的“长尾巴”(long tail)。你会想要选择小量使得大多数“长尾”的被滤出,即,选择的ε-使得其比大多数对应于噪声小本征值的大。

在基于重建的模型中,损失函数包含一个惩罚远离原始投入的重建的术语。然后,如果epsilon设置得太低,数据将包含很多模型需要重建的噪声。因此,基于重建的模型具有低通滤波的数据是非常重要的。
提示:如果您的数据已合理缩放(例如,[0,1]),则以e p s i l o n = 0.01或e p s i l o n = 0.1开始。

基于ICA的模型(具有正交化)

对于具有正交化的基于ICA的模型,数据尽可能接近白色(身份协方差)非常重要。这是使用正交化来解除相关特征的副作用(ICA中的更多细节)。因此,在这种情况下,您需要使用尽可能小的epsilon(例如,e p s i l o n = 1 e - 6)。

提示:在PCA白化过程中,还可以选择在减少数据时进行降维。这通常是一个很好的想法,因为它可以大大加快算法(计算量少,参数少)。选择保留多少个主要组件的简单经验法则是保留足够的组件以保留99%的差异(PCA中的更多细节)

注意:在分类框架中工作时,应仅根据训练集计算PCA / ZCA白化矩阵。以下参数被保存用于测试集:(a)用于零均值数据的平均向量,(b)白化矩阵。测试集应该使用这些保存的值进行相同的预处理步骤。


大图片


对于大图像,由于协方差矩阵太大,基于PCA / ZCA的白化方法是不切实际的。对于这些情况,我们推荐使用1 / f-白化方法。


标准管道


在本节中,我们将介绍几种适用于某些数据集的“标准管道”:

自然灰度图像

由于灰度图像具有平稳特性,我们通常首先分别从每个数据示例中去除平均成分(去除DC)。此步骤之后,PCA / ZCA增白经常采用具有值的ε-设定得大到足够低通滤波器的数据。

彩色图像

对于彩色图像,平稳性属性不适用于颜色通道。因此,我们通常首先对数据进行重新缩放(确保其位于[0,1])广告,然后应用具有足够大的epsilon的 PCA / ZCA 。请注意,在计算PCA变换之前执行特征均值归一化很重要。

音频(MFCC /频谱图)

对于音频数据(MFCC和频谱图),每个维度通常具有不同的比例(差异); 例如,MFCC的第一个组件是DC组件,并且通常比其他组件大。当包含时间导数(音频处理中的常见做法)时尤其如此。因此,预处理通常从简单的数据标准化(零均值,每个数据维度的单位差异)开始,然后进行PCA / ZCA白化(使用适当的epsilon)。

MNIST手写数字

MNIST数据集的像素值范围为[0,255]。因此,我们从简单的重新缩放开始,将数据移入范围[0,1]。实际上,去除每个示例的平均值也可以帮助特征学习。注意:如果需要,也可以选择在MNIST上使用PCA / ZCA白化,但这在实践中并不常用。

Data Preprocessing相关推荐

  1. 【DeepLearning 文本分类实战】IMDB Data Preprocessing数据预处理

    一.Introduction 数据集下载地址 Sentiment Analysis (stanford.edu) 斯坦佛官方描述IMDB非常详细:用于二分类情感分类的数据集,包含25k训练集和25k测 ...

  2. Machine Learning --- zero-mean whiten(data preprocessing)

    1.零均值化(消常数项) 往往用于线性回归问题:y=wx+b,消除求参数w时截距b的影响.零均值处理即数据减其均值(x=x-mean(x),y=y-mean(y)).如何求截距b呢?只要代入最初的均值 ...

  3. AutoGluon处理多模态数据方法及案例——Multimodal Data Tables: Tabular, Text, and Image

    多模式数据表:表格.文本和图像 注意:本教程需要 GPU 才能训练图像和文本模型.此外,具有适当 CUDA 版本的 MXNet 和 Torch 需要安装 GPU. PetFinder 数据集 我们将使 ...

  4. INT303 Big Data 个人笔记

    又来到了经典半个月写一个学期内容的环节 目前更新至Lec{14}/Lec14 依旧是不涉及代码,代码请看学校的jupyter notebook~ Lec1 Introduction 介绍课程 Topi ...

  5. scJoint integrates atlas-scale single-cell RNA-seq and ATAC-seq data with transfer learning

    scJoint integrates atlas-scale single-cell RNA-seq and ATAC-seq data with transfer learning Nature B ...

  6. Kaggle Lending Club Loan Data数据可视化分析与不良贷款预测

    文章目录 数据集介绍 数据可视化分析前的数据预处理 引入包和数据集 对特征缺失值的处理 保存处理好的数据集 数据可视化分析 申请贷款金额和实际贷款金额的数据分布 每年贷款笔数直方图与每年贷款总金额直方 ...

  7. Caffe Layer 系列(一):Input层、Data层

    1.Input layer Input layer用在deploy文件测试模型效果,需要代码中手动指定网络输入数据,唯一的参数BlobShape设定输入数据的维度 caffe.proto中定义如下: ...

  8. Deep Learning for Remote Sensing Data

    Deep Learning for Remote Sensing Data_A technical tutorial on the state of the art 一,Abstract 二,ADVA ...

  9. GCN-LSTM预测道路车辆速度英文 Forecasting using spatio-temporal data with combined Graph Convolution LSTM model

    GCN-LSTM模型预测道路交通车辆速度 GCN:又称GNN,图神经网络    LSTM:长短时记忆网络 可做学习参考 Abstract Accurate traffic prediction is ...

最新文章

  1. Pip install: ImportError: cannot import name IncompleteRead
  2. openstack neutron-fwaas 中的几个概念
  3. python画函数曲线-Python 绘制你想要的数学函数图形
  4. [YTU]_2018 ( 约瑟夫问题)
  5. Linux环境 文件分割的方法
  6. 数据库主键设计之思考(转)
  7. 同时启动多个Tomcat 和 Linux部署多个tomcat
  8. 数据结构:(7)数据结构小结1
  9. SpringMVC注解 @initbinder 解决类型转换问题
  10. Java第五次作业--面向对象高级特性(抽象类和接口)
  11. CVPR2019 Oral!伯克利、麻省理工GAN图像合成最新成果(附开源代码)!
  12. 华为旗下哈勃投资公司入股光刻机制造商科益虹源
  13. 解决android混淆编译出现Proguard returned with error code 1和文件名、目录名或卷标语法不正确错误...
  14. 操作系统习题解答 (张尧学) 第一章
  15. MATLAB命令总结
  16. 接口测试之功能测试,性能测试,安全测试
  17. 你租的房子遇 “坑” 了么?
  18. 硬件工程师的真实前途我说出来可能你们不信
  19. SOME/IP与DDS对比及DDS测试策略和方案探讨
  20. 【Cocos Creator实战教程(6)】——镜头跟随

热门文章

  1. markdown写甘特图-软件开发进度实例--备忘
  2. unicode和中文字符互相转换
  3. steam客户端点击登录没反应怎么办
  4. java计算机毕业设计校园一卡通管理系统源码+mysql数据库+lw文档+系统+调试部署
  5. 实现Select与输入框的数据联动
  6. java stax_在Java中使用StAX的代码
  7. linux nas解决方案_Linux下配置NAS的一些总结经验
  8. 计算机网络的答案,计算机网络参考答案
  9. 【Spring Boot学习笔记】——配置文件
  10. 新手开店货源怎么找,怎么找到优质货源?