数据预处理之数据归一化

转载来自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);

你可能感兴趣的:(机器学习,算法,Matlab,算法,机器学习,数据预处理)