如果某个特征的取值范围比其他特征大很多,那么数值计算就受该特征的主要支配。但实际上并不一定是这个特征最重要,通常需要把每个特征看成同等重要。归一化/标准化数据可以使不同维度的特征放在一起进行比较,可以大大提高模型的准确性。

特征缩放原因:

数量级的差异将导致量级较大的属性占据主导地位
数量级的差异将导致迭代收敛速度减慢
依赖于样本距离的算法对于数据的数量级非常敏感

特征缩放好处:

提升模型的精度:在机器学习算法的目标函数中使用的许多元素(例如支持向量机的 RBF 内核或线性模型的 l1 和 l2 正则化),都是假设所有的特征都是零均值并且具有同一阶级上的方差。如果某个特征的方差比其他特征大几个数量级,那么它就会在学习算法中占据主导位置,导致学习器并不能像我们期望的那样,从其他特征中学习。
提升收敛速度:对于线性模型来说,数据归一化后,寻找最优解的过程明显会变得平缓,更容易正确地收敛到最优解。

为什么要归一化/标准化

如下图,如果不进行归一化,那么由于特征向量中不同特征的取值相差较大,会导致目标函数变“扁”。这样在进行梯度下降的时候,梯度的方向就会偏离最小值的方向,走很多弯路,即训练时间过长。如果进行归一化以后,目标函数会呈现比较“圆”,这样训练速度大大加快,少走很多弯路。这样寻求最优解的过程会变得平缓,可以更快速的收敛到最优解。

tsfresh 特征扩展和特征过滤 特征缩放(feature scaling)的作用_数据

特征缩放的方法: 

(1)最大最小值归一化(min-max normalization)

将原始数据线性变换到用户指定的最大-最小值之间,处理后的数据会被压缩到 [0,1] 区间上

tsfresh 特征扩展和特征过滤 特征缩放(feature scaling)的作用_人工智能_02

适用范围:

  • 对输出范围有要求
  • 数据较为稳定,不存在极端的最大最小值
  • 在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用该方法

(2)均值归一化(Mean normalization )

tsfresh 特征扩展和特征过滤 特征缩放(feature scaling)的作用_深度学习_03

(3)标准化/z值归一化 (Z-score normalization)

通过减去均值然后除以标准差,将数据按比例缩放,使之落入一个小的特定区间,处理后的数据均值为0,标准差为1

tsfresh 特征扩展和特征过滤 特征缩放(feature scaling)的作用_深度学习_04

std(x)为样本的标准差

适用范围:

  • 数据本身的分布就服从正太分布
  • 最大值和最小值未知的情况,或有超出取值范围的离群数据的情况
  • 在分类、聚类算法中需要使用距离来度量相似性、或者使用PCA(协方差分析)技术进行降维时,使用该方法表现更好

(4)最大绝对值归一化(max abs normalization) 

tsfresh 特征扩展和特征过滤 特征缩放(feature scaling)的作用_深度学习_05

tsfresh 特征扩展和特征过滤 特征缩放(feature scaling)的作用_深度学习_06

归一化与标准化的区别 

归一化是将样本的特征值转换到同一量纲下,把数据映射到[0,1]或者[-1,1]区间内,由变量的极值决定。

标准化是通过求z-score的方法,转化为标准正态分布,和整体样本分布相关,每个样本点都能对标准化产生影响。

归一化不会改变数据的状态分布,但标准化会改变数据的状态分布;

归一化会将数据限定在一个具体的范围内,如 [0, 1],但标准化不会,标准化只会将数据处理为均值为0,标准差为1。

归一化使用条件 

(一)哪些算法需要归一化
        1、涉及或隐含距离计算的算法,比如K-means、KNN、PCA、SVM等,一般需要进行归一化

        2、梯度下降算法,梯度下降的收敛速度取决于:参数的初始位置到local minima的距离,以及学习率η的大小,其实还是距离的计算。

        3、采用sigmoid等有饱和区的激活函数,如果输入分布范围很广,参数初始化时没有适配好,很容易直接陷入饱和区,导致梯度消失,所以才会出现各种BN,LN等算法。

        4、神经网路、线性回归、感知机

(二)哪些算法不需要归一化
        1、与距离计算无关的概率模型不需要,比如Naive Bayes;

        2、与距离计算无关的基于树的模型,比如决策树、随机森林等,树中节点的选择只关注当前特征在哪里切分对分类更好,即只在意特征内部的相对大小,而与特征间的相对大小无关。但是使用Z-Score归一化会提高模型的准确率。其实归一化的作用就是由绝对变为了相对,所以可以说归一化对于树型模型不那么重要,是一个可选项或者说可以作为一个超参数在训练时进行选择。