深度学习笔记09_机器学习数据预处理

数据预处理、特征工程

神经网络的数据预处理

预处理的原则:是使原始数据更适于用神经网络处理,主要包括:向量化,标准化,处理缺失值和特征提取

向量化

无论处理什么数据(声音、图像还是文本),都必须首先将其转换为张量,且张量是浮点数据类型。例如, one-hot 编码将其转换为 float32 格式的张量。

值标准化

一般的值标准化做法对每个特征分别做标准化,使其均值为 0、标准差为 1。
例如,图像数据被编码为 0~255 范围内的整数,将其变化为: 0~1 范围内的浮点数。
这样做的好处:

  • 避免了不同特征的数据,度量范围不一样,导致输入到神经网络的不安全性,导致较大的梯度更新,进而导致网络无法收敛
  • 让网络的学习变得更容易

特征数据需要符合如下的要求:

  • 取值较小:大部分值都应该在 0~1 范围内
  • 同质性(homogenous):所有特征的取值都应该在大致相同的范围内。

标准化的做法:

  • 将每个特征分别标准化,使其平均值为 0。
  • 将每个特征分别标准化,使其标准差为 1。

coding 如下:

#平均值为 0
x-= x.mean(axis = 0)
# 标准差为 1
x/=x.std(axis=0)

处理缺失值

缺失值:指的是在样本数据中,有的样本并没有某个特征数据,这个时候称其为特征缺失。

一般处理的方法:将缺失值设置为 0。

要注意对于测试集中有的特征,而训练集中又没有该特征,这个时候就需要在训练的过程中添加该特征:人为生成一些有缺失项的训练样本

特征工程

特征工程的概念

其实特征工程在传统的机器学习中是一个非常重要的环节,这里说的传统是相对于现在神经网络,尤其卷积神经网络而言。
具体而言:是指将数据输入模型之前,利用你自己关于数据和机器学习算法(这里指神经网络)的知识对数据进行硬编码的变换(不是模型学到的),以改善模型的效果。

特征工程的本质

用更简单的方式表述问题,从而使问题变得更容易。

特征工程在以前的机器学习中为什么如此重要

经典的浅层算法没有足够大的假设空间来自己学习有用的表示。将数据呈现给算法的方式对解决问题至关重要。
例如在使用卷积神经网络在处理MNIST数字分类问题上,以前的特征包括:圆圈个数、图像中每个数字的高度、像素值的直方图。

目前特征工程的重要性

  • 良好的特征仍然可以让你用更少的资源更优雅地解决问题
  • 良好的特征可以让你用更少的数据解决问题。

分享关于人工智能,机器学习,深度学习以及计算机视觉的好文章,同时自己对于这个领域学习心得笔记。想要一起深入学习人工智能的小伙伴一起结伴学习吧!扫码上车!

瓦力人工智能 - 扫码上车

你可能感兴趣的:(keras深度学习笔记,深度学习,数据预处理,特征向量,归一化,神经网络)