数据预处理在众多深度学习算法中都起着重要作用。实际情况中,将数据做归一化和白化处理后,很多算法能够发挥最佳效果。但是预处理的精确参数并非显而易见,一般需要尝试。
1.数据归一化
数据预处理中标准的第一步是数据归一化。这一步通常视具体情况选择。归一化的一般方法有如下3种:
1.简单缩放 2.逐样本均值消减(也称为移除直流分量) 3.特征标准化(使数据集中所有特征都具有零均值和单位方差)
1.1简单缩放
目的是通过对数据的每一个维度的值进行重新调节(这些维度可能是相互独立的),使得最终的数据向量落在 [0,1]或[ − 1,1] 的区间内(根据数据情况而定)。这对后续的处理十分重要,因为很多默认参数(如 PCA-白化中的 epsilon)都假定数据已被缩放到合理区间。
例如在处理自然图像时,我们获得的像素值在 [0,255] 区间中,常用的处理是将这些像素值除以 255,使它们缩放到 [0,1] 中。
Matlab函数mapminmax: x为向量。[y,ps]=mapminmax(x)。默认映射范围为[-1,1]。ps为映射规则,y为映射结果。可以对ps进行设置 ps.ymin和ps.ymax。然后进行自定义范围映射,当然可以把对本样本的ps规则应用到其他样本,如[y,ps]=mapminmax['apply',x1,ps]。实际映射方程y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin。
其他的缩放机制还有atan,log等。具体参考常见的样本数据归一化。