转载来自ufldl.stanford.edu/wiki/index.php/数据预处理
一、简单缩放
分为:最大值缩放和均值缩放
在简单缩放中,我们的目的是通过对数据的每一个维度的值进行重新调节(这些维度可能是相互独立的),使得最终的数据向量落在[0,1]或[− 1,1]的区间内(根据数据情况而定)。
例子:在处理自然图像时,我们获得的像素值在[0,255]区间中,常用的处理是将这些像素值除以255,使它们缩放到[0,1]中。
二、逐样本均值消减(也称为移除直流分量)
如果你的数据是平稳的(即数据每一个维度的统计都服从相同分布),那么你可以考虑在每个样本上减去数据的统计平均值(逐样本计算)。
例子:对于图像,这种归一化可以移除图像的平均亮度值(intensity)。很多情况下我们对图像的照度并不感兴趣,而更多地关注其内容,这时对每个数据点移除像素的均值是有意义的。
注意:虽然该方法广泛地应用于图像,但在处理彩色图像时需要格外小心,具体来说,是因为不同色彩通道中的像素并不都存在平稳特性。
例如
Caffe demo 里头的 classification_demo.m脚本文件中对原始数据有这样的处理
im_data = im_data - mean_data;
三、特征标准化(使数据集中所有特征都具有零均值和单位方差)
特征标准化的具体做法是:首先计算每一个维度上数据的均值(使用全体数据计算),之后在每一个维度上都减
去该均值。下一步便是在数据的每一维度上除以该维度上数据的标准差。
简单的说就是:减去原始数据的均值再除以原始数据的标准差
例子
x
= [ones(m, 1), x];
%x包括2个特征值和1个偏置项,所以矩阵x的规模是 x:[mX3]
sigma = std(x);%X的标准差;
mu = mean(x);%X的均值;
x(:,2)
= (x(:,2) - mu(2))./ sigma(2);
x(:,3)
= (x(:,3) - mu(3))./ sigma(3);