什么是归一化

归一化是一种数据处理方式,能将数据经过处理后限制在某个固定范围内。

归一化存在两种形式,一种是在通常情况下,将数处理为 [0, 1] 之间的小数,其目的是为了在随后的数据处理过程中更便捷。例如,在图像处理中,就会将图像从 [0, 255] 归一化到 [0, 1]之间,这样既不会改变图像本身的信息储存,又可加速后续的网络处理。其他情况下,也可将数据处理到 [-1, 1] 之间,或其他的固定范围内。另一种是通过归一化将有量纲表达式变成无量纲表达式。那么什么是量纲,又为什么需要将有量纲转化为无量纲呢?具体举一个例子。当我们在做对房价的预测时,收集到的数据中,如房屋的面积、房间的数量、到地铁站的距离、住宅附近的空气质量等,都是量纲,而他们对应的量纲单位分别为平方米、个数、米、AQI等。这些量纲单位的不同,导致数据之间不具有可比性。同时,对于不同的量纲,数据的数量级大小也是不同的,比如房屋到地铁站的距离可以是上千米,而房屋的房间数量一般只有几个。经过归一化处理后,不仅可以消除量纲的影响,也可将各数据归一化至同一量级,从而解决数据间的可比性问题。

为什么要归一化

归一化可以将有量纲转化为无量纲,同时将数据归一化至同一量级,解决数据间的可比性问题。在回归模型中,自变量的量纲不一致会导致回归系数无法解读或错误解读。在KNN、Kmeans等需要进行距离计算的算法中,量纲的量级不同可能会导致拥有较大量级的特征在进行距离计算时占主导地位,从而影响学习结果。

数据归一化后,寻求最优解的过程会变得平缓,可以更快速的收敛到最优解。

为什么归一化能提高求解最优解的速度

之前我们提到一个对房价进行预测的例子,假设自变量只有房子到地铁站的距离 x1x_1x1​ 和房子内房间的个数 x2x_2x2​,因变量为房价,预测公式和损失函数分别为:y=θ1x1+θ2x2J=(θ1x1+θ2x2−ylabel)2\begin{aligned} y &= \theta_1x_1 + \theta_2x_2 \\ J &= (\theta_{1}x_{1} + \theta_{2}x_{2} - y_{label})^2 \end{aligned} yJ​=θ1​x1​+θ2​x2​=(θ1​x1​+θ2​x2​−ylabel​)2​ 在未归一化时,房子到地铁站的距离的取值在 0~5000 之间,而房间个数的取值范围仅为0~10。假设 x1=1000,x2=3x_{1} = 1000,x_{2} = 3x1​=1000,x2​=3, 那么损失函数的公式可以写为:J=(1000θ1+3θ2−ylabel)2J = (1000\theta_{1}+3\theta_{2} - y_{label})^2J=(1000θ1​+3θ2​−ylabel​)2可将该损失函数寻求最优解过程可视化为下图:

左图的红色椭圆代表归一化前的损失函数等高线,蓝色线段代表梯度的更新,箭头的方向代表梯度更新的方向。寻求最优解的过程就是梯度更新的过程,其更新方向与登高线垂直。由于x1 和 x2 的量级相差过大,损失函数的等高线呈现为一个瘦窄的椭圆。因此如图(左)所示,瘦窄的椭圆形会使得梯度下降过程呈之字形呈现,导致梯度下降速度缓慢。

当数据经过归一化后,x1′=1000−05000−0=0.2x_{1}^{'} =\displaystyle \frac{1000-0}{5000-0}=0.2x1′​=5000−01000−0​=0.2,x2′=3−010−0=0.3x_{2}^{'} =\displaystyle \frac{3-0}{10-0}=0.3x2′​=10−03−0​=0.3,那么损失函数的公式可以写为:J(x)=(0.2θ1+0.3θ2−ylabel)2J(x) = (0.2\theta_{1} + 0.3\theta_{2} - y_{label})^2 J(x)=(0.2θ1​+0.3θ2​−ylabel​)2 我们可以看到,经过归一化后的数据属于同一量级,损失函数的等高线呈现为一个矮胖的椭圆形(如图(右)所示),求解最优解过程变得更加迅速且平缓,因此可以在通过梯度下降进行求解时获得更快的收敛。

归一化有哪些类型

1、Min-max normalization (Rescaling):x′=x−min(x)max(x)−min(x)x^{'} = \frac{x - min(x)}{max(x) - min(x)} x′=max(x)−min(x)x−min(x)​ 归一化后的数据范围为 [0, 1],其中 min(x)、max(x)min(x)、max(x)min(x)、max(x) 分别求样本数据的最小值和最大值。

2、Mean normalization:x′=x−mean(x)max(x)−min(x)x^{'} = \frac{x - mean(x)}{max(x) - min(x)} x′=max(x)−min(x)x−mean(x)​ 归一化后的数据范围为 [-1, 1],其中 mean(x)mean(x)mean(x) 为样本数据的平均值。

3、Z-score normalization (Standardization):x′=x−μσx^{'} = \frac{x - \mu}{\sigma} x′=σx−μ​ 归一化后的数据范围为实数集,其中 μ、σμ、σμ、σ 分别为样本数据的均值和标准差。

4、非线性归一化

  • 对数归一化:x′=lg⁡xlg⁡max(x)x^{'} = \frac{\lg x}{\lg max(x)}x′=lgmax(x)lgx​
  • 反正切函数归一化:x′=arctan⁡(x)∗2πx^{'} = \arctan(x) * \frac{2}{\pi} x′=arctan(x)∗π2​ 归一化后的数据范围为 [-1, 1]
  • 小数定标标准化(Demical Point Normalization):x′=x10jx^{'} = \frac{x}{10^j} x′=10jx​ 归一化后的数据范围为 [-1, 1],jjj 为使max(∣x′∣)<1max(|x^{'}|) < 1max(∣x′∣)<1的最小整数。

不同归一化的使用条件

1、Min-max归一化和mean归一化适合在最大最小值明确不变的情况下使用,比如图像处理时,灰度值限定在 [0, 255] 的范围内,就可以用min-max归一化将其处理到[0, 1]之间。在最大最小值不明确时,每当有新数据加入,都可能会改变最大或最小值,导致归一化结果不稳定,后续使用效果也不稳定。同时,数据需要相对稳定,如果有过大或过小的异常值存在,min-max归一化和mean归一化的效果也不会很好。如果对处理后的数据范围有严格要求,也应使用min-max归一化或mean归一化。

2、Z-score归一化也可称为标准化,经过处理的数据呈均值为0,标准差为1的分布。在数据存在异常值、最大最小值不固定的情况下,可以使用标准化。标准化会改变数据的状态分布,但不会改变分布的种类。特别地,神经网络中经常会使用到z-score归一化,针对这一点,我们将在后续的文章中进行详细的介绍。

3、非线性归一化通常被用在数据分化程度较大的场景,有时需要通过一些数学函数对原始值进行映射,如对数、反正切等。

归一化和标准化的联系与区别

谈到归一化和标准化可能会存在一些概念的混淆,我们都知道归一化是指normalization,标准化是指standardization,但根据wiki上对feature scaling方法的定义,standardization其实就是z-score normalization,也就是说标准化其实是归一化的一种,而一般情况下,我们会把z-score归一化称为标准化,把min-max归一化简称为归一化。在下文中,我们也是用标准化指代z-score归一化,并使用归一化指代min-max归一化。

其实,归一化和标准化在本质上都是一种线性变换。我们提到了归一化和标准化的公式,对于归一化的公式,在数据给定的情况下,可以令a=max(x)−min(x)、b=min(x)a = max(x) - min(x)、b = min(x)a=max(x)−min(x)、b=min(x),则归一化的公式可变形为:x′=x−ba=xa−ba=xa−cx^{'} = \frac{x - b}{a} = \frac{x}{a} - \frac{b}{a} = \frac{x}{a} - c x′=ax−b​=ax​−ab​=ax​−c 标准化的公式与变形后的归一化类似,其中的 μ\muμ 和 σ\sigmaσ 在数据给定的情况下,可以看作常数。因此,标准化的变形与归一化的类似,都可看作对 xxx 按比例 aaa 进行缩放,再进行 ccc 个单位的平移。由此可见,归一化和标准化的本质都是一种线性变换,他们都不会因为对数据的处理而改变数据的原始数值排序。

那么归一化和标准化又有什么区别呢?

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

归一化(Normalization)相关推荐

  1. DataScience:深入探讨与分析机器学习中的数据处理之线性变换—标准化standardization、归一化Normalization/比例化Scaling的区别与联系

    DataScience:深入探讨与分析机器学习中的数据处理之线性变换-标准化standardization.归一化Normalization/比例化Scaling的区别与联系 目录 深入探讨与分析机器 ...

  2. EOF-DataScience:数据预处理/特征工程之线性变换—四种特征缩放Scaling算法简介、标准化standardization、归一化Normalization的概述与区别

    DataScience:数据预处理/特征工程之线性变换-四种特征缩放Scaling算法简介.标准化standardization.归一化Normalization的概述与区别 目录 数据处理中常见的四 ...

  3. 归一化 Normalization/标准化 Standardization/中心化 Zero-centered 逻辑及应用场景

    在机器学习的任务中,我们常常需要对数据做一定的处理,来优化模型效果或者优化计算效率 下面梳理一个常见的方式 归一化 Normalization 通常是把数据变成 (0, 1) 或者 (-1, 1)之间 ...

  4. 【AutoML】归一化(Normalization)方法如何进行自动学习和配置

    大家好,欢迎来到专栏<AutoML>,在这个专栏中我们会讲述AutoML技术在深度学习中的应用.这一期讲述在归一化机制中的应用. 作者&编辑 | 言有三 数据经过归一化和标准化后可 ...

  5. rms归一化_【AutoML】归一化(Normalization)方法如何进行自动学习和配置

    大家好,欢迎来到专栏<AutoML>,在这个专栏中我们会讲述AutoML技术在深度学习中的应用.这一期讲述在归一化机制中的应用. 作者&编辑 | 言有三 数据经过归一化和标准化后可 ...

  6. 数据预处理之标准化(Standardization)、归一化(Normalization)、中心化/零均值化(Zero-centered)

    一.数据标准化的意义: 1.数据的量纲不同:数量级差别很大 经过标准化处理后,原始数据转化为无量纲化指标测评值,各指标值处于同一数量级别,可进行综合测评分析. 如果直接用原始指标值进行分析,就会突出数 ...

  7. 数据预处理之归一化(normalization)

    概念介绍: 归一化是利用特征的最大最小值,将特征的值缩放到[new_min,new_max]区间,对于每一列的特征使用min-max函数进行缩放,计算公式如下 代码示例: import numpy a ...

  8. 图像归一化 normalization

    结论:不论是对原图像进行归一化的顺序是什么,归一化的结果都与最后归一化所采用的方式的结果一致,叠加使用不同归一化是不起作用的. 博主原创,未经允许,不得转载.

  9. 图像归一化normalization

    转载:https://blog.csdn.net/qq_38784454/article/details/80449445 一.图像归一化的好处: 1.转换成标准模式,防止仿射变换的影响. 2.减小几 ...

  10. [云炬python3玩转机器学习]4-7机器学习算法训练和测试样本集数据同时归一化

      07 数据归一化处理 In [4]: import numpy as np import matplotlib.pyplot as plt import datetime print(dateti ...

最新文章

  1. MVC中一个表单实现多个提交按钮(一个action搞定添删改)
  2. Python操作Json、Csv、Excel文件
  3. Python编码规范:IF中的多行条件
  4. 用filter实现web程序的统一认证
  5. 淘宝技术架构从1.0到4.0的演变
  6. 牛客练习赛44 A 小y的序列 (模拟,细节)
  7. H5 页面列表缓存方案
  8. Dubbo——增强SPI的实现
  9. 操作系统动态库调用过程
  10. 华为手机可以安装python吗_何安装python2.6
  11. 服务器主机安装esxi虚拟机,服务器主机安装esxi虚拟机
  12. 【教育】斯坦福大学——人工智能本科4年课程清单
  13. LabWindows 读写 Excel
  14. 迅雷9解决php文件,迅雷9的这些优化 你必须要知道
  15. 校园招聘-2017美团后台开发内推笔试编程题
  16. 码流、单码流、双码流、多码流
  17. 密码技术学习(1)-初识密码
  18. Python基础——数据类型—元组
  19. linux下 部署调用SAP接口
  20. 简易留言簿系统-ASP.NET MVC (后台基本完成)

热门文章

  1. 如何生成ssh公钥(ssh-keygen)
  2. 快速查询德邦物流信息,并标记未签收单号
  3. esxi虚拟化服务器端口聚合,配置ESXi的端口聚合.docx
  4. 【Linux】Linux 中的UID
  5. 如何使用代理IP进行数据采集,PHP爬虫抓取亚马逊商品数据
  6. WPF API MoveWindow
  7. 02 OpenCV图像通道处理
  8. 使用spring+html5实现安全传输随机数字密码键盘
  9. 在虚幻引擎5中构建你的首款游戏 - 01 - 介绍
  10. 极域电子书包windows-ios界面展示与使用方法