Data Preprocessing

本文章转自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白化,但这在实践中并不常用。

你可能感兴趣的:(机器学习)