UFLDL教程:数据预处理


数据预处理是深度学习中非常重要的一步!如果说原始数据的获得,是深度学习中最重要的一步,那么获得原始数据之后对它的预处理更是重要的一部分。
一般来说,算法的好坏一定程度上和数据是否归一化,是否白化有关。


数据归一化


数据预处理中,标准的第一步是数据归一化。虽然这里有一系列可行的方法,但是这一步通常是根据数据的具体情况而明确选择的。特征归一化常用的方法包含如下几种:

1.样本尺度归一化:简单缩放对数据的每一个维度的值进行重新调节,使其在 [0,1]或[-1,1] 的区间内。例子:在处理自然图像时,我们获得的像素值在 [0,255] 区间中,常用的处理是将这些像素值除以 255,使它们缩放到 [0,1] 中. 
2.逐样本均值消减(也称为移除直流分量)在每个样本上减去数据的统计平均值,用于平稳的数据(即数据每一个维度的统计都服从相同分布),对图像一般只用在灰度图上。
3.特征标准化(使数据集中所有特征都具有零均值和单位方差) 首先计算每一个维度上数据的均值(使用全体数据计算),之后在每一个维度上都减去该均值,然后在数据的每一维度上除以该维度上数据的标准差。

数据尺度归一化的原因是:

(1) 数据中每个维度表示的意义不同,所以有可能导致该维度的变化范围不同,因此有必要将他们都归一化到一个固定的范围,一般情况下是归一化到[0 1]或者[-1 1]。
(2) 这种数据归一化还有一个好处是对后续的一些默认参数(比如白化操作)不需要重新过大的更改。

逐样本的均值相减

(1) 主要应用在那些具有稳定性的数据集中,也就是那些数据的每个维度间的统计性质是一样的。
比如说,在自然图片中,这样就可以减小图片中亮度对数据的影响,因为我们一般很少用到亮度这个信息。
(2) 不过逐样本的均值相减这只适用于一般的灰度图,在rgb等色彩图中,由于不同通道不具备统计性质相同性所以基本不会常用。

在数据的每个维度的统计性质是一样的时候。对于图像来说就是,对图像的照度并不感兴趣,而更多地关注其内容,这时对每个数据点移除像素的均值是有意义的,这时可以逐样本均值消减,它一般只适用于灰度图。

彩色图像不能“逐样本均值消减”,它的归一化方法及原因见 UFLDL教程: Exercise:Learning color features with Sparse Autoencoders ,即:“每一维0均值化”,进行预处理。

特征标准化

特征标准化是指对数据的每一维进行均值化和方差相等化。这在很多机器学习的算法中都非常重要,比如SVM等。


数据白化


PCA白化、ZCA白化。重点是规则化项 epsilon的选择。

数据的白化是在数据归一化之后进行的。实践证明,很多deep learning算法性能提高都要依赖于数据的白化。

在对数据进行白化前要求先对数据进行特征零均值化。这保证了 \frac{1}{m} \sum_i x^{(i)} = 0
在数据白化过程中,最主要的还是参数epsilon的选择,因为这个参数的选择对deep learning的结果起着至关重要的作用。

在基于重构的模型中(比如说常见的RBM,Sparse coding, autoencoder都属于这一类,因为他们基本上都是重构输入数据),通常是选择一个适当的epsilon值使得能够对输入数据进行低通滤波。

但是何谓适当的epsilon呢?

epsilon太小,则起不到过滤效果,会引入很多噪声,而且基于重构的模型又要去拟合这些噪声
epsilon太大,则又对元素数据有过大的模糊

一般的方法是画出变化后数据的特征值分布图,如果那些小的特征值基本都接近0,则此时的epsilon是比较合理的。

如下图所示,让那个长长的尾巴接近于x轴。该图的横坐标表示的是第几个特征值,因为已经将数据集的特征值从大到小排序过。

这里写图片描述


epsilon的选择方法:

a.以图形方式画出数据的特征值
b.选取大于大多数较小的、反映数据中噪声的特征值作为 epsilon


实用技巧:

如果数据已被缩放到合理范围(如[0,1]),可以从epsilon = 0.01或epsilon = 0.1开始调节epsilon。

基于正交化的ICA模型中,应该保持参数epsilon尽量小,因为这类模型需要对学习到的特征做正交化,以解除不同维度之间的相关性。


参考文献


Deep learning:三十(关于数据预处理的相关技巧)

Deep Learning 11_深度学习UFLDL教程:数据预处理(斯坦福大学深度学习教程)

数据预处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246818.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

How To Install Visual Studio Code On Ubuntu

链接 Linux中安装 Visual Studio Code 详解 在Ubuntu中安装Visual Studio Code How To Install Visual Studio Code On Ubuntu

深度学习笔记(待续)

背景知识 好的特征应具有不变性(大小、尺度和旋转等)和可区分性):例如Sift的出现,是局部图像特征描述子研究领域一项里程碑式的工作。由于SIFT对尺度、旋转以及一定视角和光照变化等图像变化都具有不变性,并…

人工智能泰斗迈克尔·乔丹分享机器学习要义:创新视角,直面挑战

2017年6月21日至22日,腾讯云未来峰会在深圳举行。人工智能领域的世界级泰斗迈克尔欧文乔丹(Michael I.Jordan)进行了主题为“机器学习:创新视角,直面挑战”的演讲,与大家分享他对人工智能的未来与挑战的见解…

查看医学影像文件软件

Mango Mango官网下载 直接点击Mango.jar 可打开软件。 可能出现的问题: XXis not marked as executable. it may be dangerous to run. 程序无法执行问题。 解决方法: 右键文件,属性--->权限--->勾选允许作为程序执行文件 或者 修…

ubuntu下终端提示符设置

PS1变量 修改/ect下bash.bashrc文件PS1变量 \d :代表日期,格式为weekday month date,例如:”Mon Aug 1” \H :完整的主机名称。例如:我的机器名称为:fc4.Linux,则这个名称就是fc4.l…

Learning from Imbalanced Classes

数据不均衡 数据不平衡是一个非常经典的问题,数据挖掘、计算广告、NLP等工作经常遇到。该文总结了可能有效的方法,值得参考: 1.Do nothing. Sometimes you get lucky and nothing needs to be done. You can train on the so-called natural …

Tensorflow官方文档---起步 MNIST示例

Tensorflow •使用图 (graph) 来表示计算任务. • 在被称之为 会话 (Session) 的上下文 (context) 中执行图. • 使用 tensor 表示数据. • 通过 变量 (Variable) 维护状态. • 使用 feed 和 fetch 可以为任意的操作(arbitrary operation) 赋值或者从其中获取数据 综述 Ten…

Git 版本管理

相关文章 版本管理 github访问太慢解决方案 Material for git workshop GitHub秘籍 安装-Git版本管理 Git官网安装说明 Linux 系统安装 # 如果你的 Linux 是 Ubuntu: $ sudo apt-get install git-all# 如果你的 Linux 是 Fedora: $ sudo yum install git-all 如果是其他…

tensorflow:Multiple GPUs

深度学习theano/tensorflow多显卡多人使用问题集 tensorflow中使用指定的GPU及GPU显存 Using GPUs petewarden/tensorflow_makefile tf_gpu_manager/manager.py 多GPU运行Deep Learning 和 并行Deep Learning(待续) Multiple GPUs 1. 终端执行程序…

Tensorflow一些常用基本概念与函数

参考文献 Tensorflow一些常用基本概念与函数 http://www.cnblogs.com/wuzhitj/archive/2017/03.html Tensorflow笔记:常用函数说明: http://blog.csdn.net/u014595019/article/details/52805444 Tensorflow一些常用基本概念与函数(1&#…

ubuntu16.04 Nvidia 显卡的风扇调速及startx的后果

问题描述 #查看nvdia GPU 显卡状态 watch -n 10 nvidia-smi 发现显卡Tesla k40c的温度已经达到74,转速仅仅只有49%。 查看Tesla产品资料,Tesla K40 工作站加速卡规格 ,可知 所以需要调整风扇速度来降温。 然而官方驱动面板里也没有了风扇调…

Python函数式编程-map()、zip()、filter()、reduce()、lambda()

三个函数比较类似,都是应用于序列的内置函数。常见的序列包括list、tuple、str map函数 map函数会根据提供的函数对指定序列做映射。 map函数的定义: map(function, sequence[, sequence, ...]) -> list map()函数接收两个参数,一个是函…

Python函数之 ceil, floor,round

Ceiling是向上取整 floor是向下取整 Round是四舍五入的 ceil 描述 ceil() 函数返回数字的上入整数 ceil():将小数部分一律向整数部分进位。 #!/usr/bin/python import math # This will import math moduleprint "math.ceil(-45.17) : ", math.cei…

Python如何将列表分成均匀大小的块?

均匀大小的块 def chunks(l, n):"""Yield successive n-sized chunks from l."""for i in range(0, len(l), n):yield l[i:i n] import pprint pprint.pprint(list(chunks(range(10, 75), 10))) [[10, 11, 12, 13, 14, 15, 16, 17, 18, 19],[2…

Kaggle : Using a Convolutional Neural Network for classifying Cats vs Dogs

数据下载 https://www.kaggle.com/c/dogs-vs-cats-redux-kernels-edition/data Part 1 - Preprocessing #Package Requirements #!/usr/bin/python2 # -*- coding: UTF-8 -*- import cv2 # working with, mainly resizing, images import numpy as np …

李宏毅机器学习课程1~~~Introduction Regression

机器学习介绍 机器学习就是要找一个函数。 机器学习的三大要素框架:训练集,函数集(模型集),损失函数集。 机器学习图谱 AI训练师的成长之路。 1. 梯度下降法的理解Gradient Descent 参数变化的方向就是损失函数减少的方…

李宏毅机器学习课程2~~~误差从哪里来?

Stanford机器学习—第六讲. 怎样选择机器学习方法、系统 误差来源 误差主要来自于偏差和方差。 数学上定义: 通过covariate X 预测 Y ,我们假设存在如下关系: Y f(X) ϵ 满足正态分布均值为0 方差σϵ 模型预测错误定义为: …

李宏毅机器学习课程3~~~梯度下降法

梯度下降法描述 梯度下降法是为了找到最优的目标函数,寻找的过程就是沿着损失函数下降的方向来确定参数变化的方向。参数更新的过程就是一个不断迭代的过程,每次更新参数学到的函数都会使得误差损失越来越小,也就是说学习到的参数函数越来越逼…

python解析json

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。 引用模块 import json 重要函数 编码:把一个Python对象编码转换成Json字符串 json.dumps() 解码:把Json格式字符串解码转换成Python对象 json.loads() 排序…

李宏毅机器学习课程4~~~分类:概率生成模型

分类问题用回归来解决? 当有右图所示的点时,这些点会大幅改变分类线的位置。这时候就会导致整体的回归结果变差。当把多分类当成回归问题,类别分别为1,2,3,4……,因为回归的问题是预测具体的值,这样定义类别…