4步带你了解什么是归一化!

一、什么是归一化?

什么是归一化?

归一化是一种常见的数据预处理技术,用于将数据转换为统一的比例范围,以消除不同变量之间的量纲差异。通过归一化,可以将数据映射到一个特定的范围,例如[0, 1]或[-1, 1],使得不同特征或属性具有相似的数值范围。

二、为什么进行归一化?

目的

归一化的目的有以下几点:

1.消除量纲差异:

        不同的特征往往具有不同的量纲,例如身高和体重,身高的单位是厘米,体重的单位是千克,它们的数值范围也相差较大。如果不进行归一化处理,这些量纲差异可能会影响到某些数据分析和模型算法的结果。

2.避免权重不平衡:

        在某些机器学习算法中,例如基于距离的算法(如K-means聚类、K近邻算法等),特征之间的数值范围差异较大可能导致某些特征对算法的影响更大。通过归一化处理,可以使得各个特征在计算距离或相似度时起到相同的作用,避免权重不平衡的问题。

3.提高模型收敛速度:

某些机器学习算法,如神经网络、支持向量机等,对输入数据的数值范围敏感。如果输入数据的数值范围相差较大,可能导致模型训练过程收敛速度较慢。通过归一化处理,可以加快模型的收敛速度,提高训练效率。

简而言之,归一化的目的就是使得预处理的数据被限定在一定的范围内(比如[0,1]或者[-1,1]),从而消除奇异样本数据导致的不良影响。

奇异样本数据是指相对于其他输入样本特别大或特别小的样本矢量(即特征向量)

这里也可以用到奇异值分解(线性代数):

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        A=UWV^T

例1:

譬如,下面为具有两个特征的样本数据x1、x2、x3、x4、x5、x6(特征向量—>列向量),其中x6这个样本的两个特征相对其他样本而言相差比较大,因此,x6认为是奇异样本数据。

4步带你了解什么是归一化!_第1张图片

例2:

我们再一个举一个例子:

x1=房价(元),x2=面积(m^2)

4步带你了解什么是归一化!_第2张图片

归一化之后变成

4步带你了解什么是归一化!_第3张图片

从上可以看出

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

2)归一化有可能提高精度

三、归一化的几种方法

1.最小-最大归一化(Min-Max Scaling)

1.最小-最大归一化(Min-Max Scaling):将数据线性地映射到一个特定的范围(通常是[0, 1]或[-1, 1]),

公式如下:

                                x^*=x-min(x)/max(x)-min(x)

其中,x是原始数据,x^*是归一化后的数据,min(x)max(x)分别是原始数据的最小值和最大值。

 (1) 线性函数将原始数据线性化的方法转换到[0 1]的范围, 计算结果为归一化后的数据,X为原始数据;

 (2) 本归一化方法比较适用在数值比较集中的情况;

 (3) 缺陷:如果max和min不稳定,很容易使得归一化结果不稳定,使得后续使用效果也不稳定。实际使用中可以用经验常量来替代max和min。

应用场景:在不涉及距离度量、协方差计算、数据不符合正态分布的时候,可以使用第一种方法或其他归一化方法(不包括Z-score方法)。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围

2.标准化(Standardization)(z-score)

2.标准化(Standardization):将数据转换x^*=x-min(x)/max(x)-min(x)为均值为0,标准差为1的正态分布(也称为标准正态分布)(高斯分布),

公式如下:

                                                        x^*=(x-\mu )/\sigma

                ​​​​​​​     4步带你了解什么是归一化!_第4张图片

其中,x是原始数据,x^*是标准化后的数据,\mu是原始数据的均值,\sigma是原始数据的标准差。

3.在python大代码中引用

pip install scikit-learn
    from sklearn.preprocessing import scale

应用场景:

在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,Z-score standardization表现更好。

四、什么时候用归一化?

(1)如果对输出结果范围有要求,用归一化。

(2)如果数据较为稳定,不存在极端的最大最小值,用归一化。

(3)如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响。

你可能感兴趣的:(算法)