深度学习笔记8 数据预处理
来源:互联网 发布:阿里云com续费 编辑:程序博客网 时间:2024/06/05 06:47
数据预处理标准流程
- 自然灰度图像
(1)灰度图像具有平稳特性,对每个数据样本分别做均值消减(即减去直流分量)——每个图像块,计算平均像素值,并将图像每个像素点减去均值。每个图像块有一个不同的均值。
x=x-repmat(mean(x,1),size(x,1),1);%x是144*10000,代表10000个patch
(2)然后采用PCA/ZCA白化处理,其中的epsilon要足够大以达到低通滤波的作用。epsilon值如何取,教程上说:
一种检验 epsilon 是否合适的方法是用该值对数据进行 ZCA 白化,然后对白化前后的数据进行可视化。如果 epsilon 值过低,白化后的数据会显得噪声很大;相反,如果 epsilon 值过高,白化后的数据与原始数据相比就过于模糊。一种直观上得到 epsilon 大小的方法是以图形方式画出数据的特征值,如下图的例子所示,你可以看到一条”长尾”,它对应于数据中的高频噪声部分。你需要选取合适的 epsilon,使其能够在很大程度上过滤掉这条”长尾”,也就是说,选取的 epsilon 应大于大多数较小的、反映数据中噪声的特征值。
如原始数据是x
sigma=x*x'./size(x,2);[u,s,v]=svd(sigma);plot(1:size(sigma,1),diag(s));
显示原数据的特征值曲线:
可以看到大约第50个特征值后面的部分要过滤掉,因此,epsilon>=第50个特征值就可以了。
>> s(50,50)ans = 0.1080
可以取epsilon=0.1080,教程上的代码给的值是epsilon=0.1,看来这个方法还是很有效的。
- 彩色图像
(1)对于彩色图像,色彩通道间并不存在平稳特性。因此首先对数据进行特征缩放(使像素值在[0,1]间)。对于图像[0,255],可将像素值除以255.
(2)对特征进行分量均值归零化
从下面代码中可看到是对同一通道的对应像素点(即特征)进行均值归零。——这属于特征标准化。
特征标准化:
首先计算每一维度上数据的均值(使用全体数据),之后再每个维度上减去该均值。下一步便是在数据的每一维度上除以该维度上数据的标准差。对于自然图像,方差归一化不用进行。
(3)使用足够大的epsilon来做PCA/ZCA。
——参考linearDecoderExercise.m
% Subtract mean patch (hence zeroing the mean of the patches)meanPatch = mean(patches, 2); %patches' size :192*10000 ,即10000个8*8*3块patches = bsxfun(@minus, patches, meanPatch);% Apply ZCA whiteningepsilon=0.1;sigma = patches * patches' / numPatches;[u, s, v] = svd(sigma);ZCAWhite = u * diag(1 ./ sqrt(diag(s) + epsilon)) * u';patches = ZCAWhite * patches;displayColorNetwork(patches(:, 1:100));
执行:
plot(1:size(s,1),diag(s))
结果:
要滤掉长尾,选第十几个特征值很合适。可选episilon=s(12,12)=0.0962.练习上给的是epsilon=0.1,看来这个方法还是比较靠谱的。~~呵呵
白化
- 基于重构的模型
episilon的选择就采用上面的方式——滤掉“长尾”。 - 基于正交化ICA的模型
对基于正交化ICA的模型来说,保证输入数据尽可能地白化(即协方差矩阵为单位矩阵)非常重要。这是因为:这类模型需要对学习到的特征做正交化,以解除不同维度之间的相关性(详细内容请参考 ICA 一节)。因此在这种情况下,epsilon 要足够小(比如 epsilon = 1e − 6)。
在上例采用epsilon=1e-6时,ZCA后的数据协方差矩阵,图示:
如果是单位矩阵,就是1对应的一条直线,而现在接近单位矩阵。 - 注意: 在使用分类框架时,我们应该只基于练集上的数据计算PCA/ZCA白化矩阵。需要保存以下两个参数留待测试集合使用:(a)用于零均值化数据的平均值向量;(b)白化矩阵。测试集需要采用这两组保存的参数来进行相同的预处理。
例:在linearDecoderExercise.m中,可以看到,把ZCA白化后的patches训练稀疏自编码器,保存了 ‘ZCAWhite’, ‘meanPatch’。这样当后面在有图像通过该稀疏自编码器提取特征时,就要和训练时一样的白化矩阵和平均值。
theta = initializeParameters(hiddenSize, visibleSize); % Use minFunc to minimize the function addpath minFunc/ options = struct; options.Method = 'lbfgs'; options.maxIter = 400; options.display = 'on'; [optTheta, cost] = minFunc( @(p) sparseAutoencoderLinearCost(p, ... visibleSize, hiddenSize, ... lambda, sparsityParam, ... beta, patches), ... theta, options); % Save the learned features and the preprocessing matrices for use in % the later exercise on convolution and pooling fprintf('Saving learned features and preprocessing matrices...\n'); save('STL10Features.mat', 'optTheta', 'ZCAWhite', 'meanPatch');
0 0
- 深度学习笔记8 数据预处理
- 深度学习-----数据预处理
- 深度学习中的数据预处理
- 数据预处理练习(深度学习)
- 深度学习中的数据预处理方法
- C语言深度剖析学习笔记-预处理
- 数据挖掘学习笔记2:数据预处理
- (二)机器学习笔记之数据预处理
- 【深度学习数据预处理1】使用Matlab分割音乐文件
- 深度学习-----数据预处理是必要的,一些经验化的预处理措施
- 数据挖掘学习笔记(三)数据预处理
- 【数据挖掘概念与技术】学习笔记3-数据预处理
- 斯坦福大学深度学习公开课cs231n学习笔记(6)神经网路输入数据预处理(归一化,PCA等)及参数初始化
- 数据预处理笔记
- 数据预处理一些笔记
- 机器学习数据预处理
- 【机器学习】数据预处理
- 机器学习算法笔记之6:数据预处理
- C/C++中赋值语句的返回值问题
- 杰西·李佛摩尔的股市存亡战
- 笔记——打印变量取值范围的两种方法
- 关于设置半透明背景的一些技巧
- 【j2ee spring】35、巴巴运动网的产品类别管理(2)
- 深度学习笔记8 数据预处理
- Android点击EditText文本框之外任何地方隐藏键盘的解决办法
- vs编写ActiveX控件,无法运行调试配置
- EditText自定义边框背景与动态检测用户输入
- JAVA JDK下载以及环境变量设置
- HDU 5238 Calculator(中国剩余定理+线段树)
- Delphi 各版本下载
- 城市_我们只是过客
- 开始。。。