欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

数据归一化处理方法_数据预处理:归一化和标准化

发布时间:2025/3/15 编程问答 71 豆豆
生活随笔 收集整理的这篇文章主要介绍了 数据归一化处理方法_数据预处理:归一化和标准化 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1. 概述

数据的归一化和标准化是特征缩放(feature scaling)的方法,是数据预处理的关键步骤。不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据归一化/标准化处理,以解决数据指标之间的可比性。原始数据经过数据归一化/标准化处理后,各指标处于同一数量级,适合进行综合对比评价。

归一化/标准化实质是一种线性变换,线性变换有很多良好的性质,这些性质决定了对数据改变后不会造成“失效”,反而能提高数据的表现,这些性质是归一化/标准化的前提。比如有一个很重要的性质:线性变换不会改变原始数据的数值排序。具体作用可总结如下:

(1)某些模型求解需要

  • 在使用梯度下降的方法求解最优化问题时, 归一化/标准化后可以加快梯度下降的求解速度,即提升模型的收敛速度。
  • 一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

(2)无量纲化

例如房子数量和收入,因为从业务层知道,这两者的重要性一样,所以把它们全部归一化。 这是从业务层面上作的处理。

(3)避免数值问题

太大的数会引发数值问题。

2. 归一化和标准化(线性变换)

2.1 归一化(Normalization)

归一化一般是将数据映射到指定的范围,用于去除不同维度数据的量纲以及量纲单位。

常见的映射范围有 [0, 1] 和 [-1, 1] ,最常见的归一化方法就是 Min-Max 归一化。

Min-Max 归一化(Min-Max Normalization)

也称为离差标准化,是对原始数据的线性变换,使结果值映射到[0 - 1]之间。转换函数如下:

其中max为样本数据的最大值,min为样本数据的最小值。这种归一化方法比较适用在数值比较集中的情况。但是,如果max和min不稳定,很容易使得归一化结果不稳定,使得后续使用效果也不稳定,实际使用中可以用经验常量值来替代max和min。而且当有新数据加入时,可能导致max和min的变化,需要重新定义。

举例:我们判断一个人的身体状况是否健康,那么我们会采集人体的很多指标,比如说:身高、体重、红细胞数量、白细胞数量等。一个人身高 180cm,体重 70kg,白细胞计数

,etc.衡量两个人的状况时,白细胞计数就会起到主导作用从而遮盖住其他的特征,归一化后就不会有这样的问题。

作用:

  • 数据映射到指定的范围内进行处理,更加便捷快速。
  • 把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。经过归一化后,将有量纲的数据集变成纯量,还可以达到简化计算的作用。

补充:

①有时候我们希望将输入转换到[-1,1]的范围,可以使用以下的公式:

以上两种方式,都是针对原始数据做等比例的缩放。其中

是归一化以后的数据, 是原始数据大小, 分别是原始数据的最大值与最小值。

②归一化到任意区间的方法:

一般常见的数据归一化,是归一化到0~1,或者-1~1的区间,但在一些特殊场合下,我们需要根据实际情况归一化到其他任意区间。将数据归一化到[a,b]区间范围的方法:

(1)首先找到样本数据Y的最小值Min及最大值Max
(2)计算系数为:k=(b-a)/(Max-Min)
(3)得到归一化到[a,b]区间的数据:norY=a+k(Y-Min)

实质上,归一化的一般规范函数是:y = (ymax-ymin)*(x-xmin)/(xmax-xmin) + ymin。

2.2 标准化(Normalization)

归一化和标准化的英文翻译是一致的,但是根据其用途(或公式)的不同去理解(或翻译)

标准化是依照特征矩阵的列处理数据。数据标准化方法有多种,如:直线型方法(如极值法、标准差法)、折线型方法(如三折线法)、曲线型方法(如半正态性分布)。不同的标准化方法,对系统的评价结果会产生不同的影响。其中,最常用的是Z-Score 标准化。

Z-Score 标准化(Z-Score Normalization)

这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转化函数为:

其中

是样本数据的均值(mean),是样本数据的标准差(std)。此外,标准化后的数据保持异常值中的有用信息,使得算法对异常值不太敏感,这一点归一化就无法保证。

作用:

  • 提升模型的收敛速度(加快梯度下降的求解速度)
  • 提升模型的精度(消除量级和量纲的影响)
  • 简化计算(与归一化的简化原理相同)

2.3 归一化和标准化的异同

(1)区别

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

标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,转换为标准正态分布,和整体样本分布相关,每个样本点都能对标准化产生影响。

(2)相同

它们的相同点在于都能取消由于量纲不同引起的误差;都是一种线性变换,都是对向量X按照比例压缩再进行平移。

2.4 归一化和标准化的适用场景

(1)数据的分布本身就服从正态分布,使用Z-Score。

(2)有离群值的情况:使用Z-Score。

这里不是说有离群值时使用Z-Score不受影响,而是,Min-Max对于离群值十分敏感,因为离群值的出现,会影响数据中max或min值,从而使Min-Max的效果很差。相比之下,虽然使用Z-Score计算方差和均值的时候仍然会受到离群值的影响,但是相比于Min-Max法,影响会小一点。

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

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

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

3. 非线性变换

非线性变换经常用在数据分化比较大的场景,有些数值很大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括 log、指数,正切等。需要根据数据分布的情况,决定非线性函数的曲线,比如log(V, 2)还是log(V, 10)等。

1)对数函数转换:y = log10(x)

2)反余切函数转换:y = atan(x) * 2 / π

4. 软件实现:归一化/标准化

(1)Minitab

第一步:输入原始数据。

原始数据

第二步:打开标准化面板。

打开标准化面板

第三步:选中要处理数据的范围,并指定处理后数据的存放区域(需要预留)。

①若选择处理方式为:“减去均值并处以标准差”,则是Z-Score标准化。

Z-Score标准化

Z-Score标准化处理后的数据

②若选择处理方式为:“减去下面指定的第一个值,然后除以第二个值”,则是Min-Max 归一化。其中:min=1567.95,max=1571.75,max-min=3.8。

Min-Max 归一化

Min-Max 归一化处理后数据

(2)SPSS略显复杂,略过。

参考文章

1.数据归一化和两种常用的归一化方法_haoji007的博客-CSDN博客_数据归一化

2.归一化方法 Normalization Method

3.归一化 (Normalization)、标准化 (Standardization)和中心化/零均值化 (Zero-centered)

4.数据预处理——标准化/归一化(实例) - 侦探L的文章 - 知乎 https://zhuanlan.zhihu.com/p/135473375

5.ML 入门:归一化、标准化和正则化 - Dave的文章 - 知乎 https://zhuanlan.zhihu.com/p/29957294

6.数据的归一化,标准化和正则化 - peng 1的文章 - 知乎 https://zhuanlan.zhihu.com/p/46377151

7.数据归一化小结_bitcarmanlee的博客-CSDN博客

8.将数据归一化到任意区间范围的方法_pan_jinquan的博客-CSDN博客

9.Minitab如何进行数据标准化-百度经验

新人创作打卡挑战赛发博客就能抽奖!定制产品红包拿不停!

总结

以上是生活随笔为你收集整理的数据归一化处理方法_数据预处理:归一化和标准化的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。