首页 > TensorFlow教程 > 机器学习 阅读数:24

数据预处理的常用方式

根据数据类型的不同,数据预处理的方式和内容也不尽相同,这里简单介绍几种较常用的方式。

1) 归一化

归一化指将不同变化范围内的值映射到一个固定的范围里,例如,常使用 min-max 等方法将数值归一化到 [0,1] 的区间内(有些时候也会归一化到 [-1,1] 的区间内)。归一化的作用包括无量纲化、加快模型的收敛速度,以及避免小数值的特征被忽略等。

2) 标准化

标准化指在不改变数据原分布的前提下,将数据按比例缩放,使之落入一个限定的区间,让数据之间具有可比性。需要注意的是,归一化和标准化各有其适用的情况,例如在涉及距离度量或者数据符合正态分布的时候,应该使用标准化而不是归一化。常用的标准化方法有 z-score 等。

3) 离散化

离散化指把连续的数值型数据进行分段,可采用相等步长或相等频率等方法对落在每一个分段内的数值型数据赋予一个新的统一的符号或数值。离散化是为了适应模型的需要,有助于消除异常数据,提高算法的效率。

4) 二值化

二值化指将数值型数据转换为 0 和 1 两个值,例如通过设定一个阈值,当特征的值大于该阈值时转换为 1,当特征的值小于或等于该阈值时转换为 0。二值化的目的在于简化数据,有些时候还可以消除数据(例如图像数据)中的“杂音”。

5) 哑编码

哑编码,又称为独热编码(One-Hot Encoding),作用是对特征进行量化。例如某个特征有三个类别:“大”“中”和“小”,要将这一特征用于模型中,必须将其数值化,很容易想到直接给它们编号为“1”“2”和“3”,但这种方式引入了额外的关系(例如数值间的大小关系),“误导”模型的优化方向。

一个更好的方式就是使用哑编码,例如“大”对应编码“100”,“中”对应编码“010”,“小”对应编码“001”。如果将其对应到一个三维的坐标系中,则每个类别对应一个点,且三个点之间的欧氏距离相等,均为 √2。