机器学习——归一化(简单易懂版)

一、为什么要进行归一化?

现有数据中有很多特征,每个特征或者叫属性往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据归一化处理,以解决数据属性之间的可比性。原始数据经过数据归一化处理后,各属性数据处于同一数量级,适合进行综合对比评价。
简而言之,归一化的目的就是使得预处理的数据被限定在一定的范围内(比如[0,1]或者[-1,1]),从而消除奇异样本数据导致的不良影响。
奇异样本数据是指相对于其他输入样本特别大或特别小的样本矢量(即特征向量)

例如,下面为具有两个特征的样本数据x1、x2、x3、x4、x5、x6(特征向量—>列向量),其中x6这个样本的两个特征相对其他样本而言相差比较大,因此,x6认为是奇异样本数据。
在这里插入图片描述
奇异样本数据的存在会引起训练时间增大,同时也可能导致无法收敛,因此,当存在奇异样本数据时,在进行训练之前需要对预处理数据进行归一化;反之,不存在奇异样本数据时,则可以不进行归一化。

二、归一化的好处

1)归一化后加快了梯度下降求最优解的速度,也即加快训练网络的收敛性;
2)归一化有可能提高精度

三、归一化的方法

1.最大最小标准化(Min-Max Normalization)

在这里插入图片描述
(1) 线性函数将原始数据线性化的方法转换到[0 1]的范围, 计算结果为归一化后的数据,x为原始数据
(2) 本归一化方法比较适用在数值比较集中的情况;
(3) 缺陷:如果max和min不稳定,很容易使得归一化结果不稳定,使得后续使用效果也不稳定。实际使用中可以用经验常量来替代max和min。

2. z—score 标准化

在这里插入图片描述
其中,μ、σ分别为原始数据集的均值和方差。
(1) 将原始数据集归一化为均值为0、方差1的数据集
(2) 该种归一化方式要求原始数据的分布可以近似为高斯分布,否则归一化的效果会变得很糟糕。

3.神经网络归一化

本归一化方法经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。
该方法包括 log,正切等,需要根据数据分布的情况,决定非线性函数的曲线:

(1)log对数函数归一化

y = log10(x)
即以10为底的对数转换函数,对应的归一化方法为:
x’ = log10(x) /log10(max)
其中max表示样本数据的最大值,并且所有样本数据均要大于等于1.

(2)反正切函数归一化

x’ = atan(x)*(2/pi)
使用这个方法需要注意的是如果想映射的区间为[0,1],则数据都应该大于等于0,小于0的数据将被映射到[-1,0]区间上.

4. L2范数归一化

定义:特征向量中每个元素均除以向量的L2范数:
在这里插入图片描述

四、什么时候用归一化?

(1)如果对输出结果范围有要求,用归一化。
(2)如果数据较为稳定,不存在极端的最大最小值,用归一化。
(3)如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响。

猜你喜欢

转载自blog.csdn.net/Elon15/article/details/129010882
今日推荐