标准化和归一化概念澄清与梳理

news2024/9/20 8:14:07

标准化和归一化是特征缩放(feature scalingscaling)的主要手段,其核心原理可以简单地理解为:让所有元素先减去同一个数,然后再除以另一个数,在数轴上的效果就是:先将数据集整体平移到有某个位置,然后按比例收缩到一个规定的区间内。各种特征缩放手段的不同之处在于:他们减去和除以的数字不同,这决定了它们平移后的位置和缩放后的区间。特征缩放的目的是去除数据单位(量纲)的影响,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。本文地址:https://blog.csdn.net/bluishglc/article/details/128696871,转载请注明出处。

但不得不提的是,由于翻译和命名上的歧义性以及各种误传误用,特征缩放领域里的术语和概念非常混乱,包括:标准化、正规化、正则化、归一化、Standardization、Normalization在内的这些概念既有关联又有差异,再加上它们的原始出处已基本都不可考,所以被大量混用和滥用,在一些劣质文章中会经常看到张冠李戴或相互矛盾的说法。本文我们会尽量结合字面含义和多数资料的描述,对这些概念做一轮梳理。在开始之前,我们先把梳理好的结论以表格形式展示出来,然后我们再详细梳理这些概念和分类:

请添加图片描述

首先,我们需要先统一一下中英文术语,从大量的资料来看,普遍将**“Standardization”翻译为“标准化”,将“Normalization” 翻译为“归一化”**。标准化(Standardization)的概念是非常明确的,没有任何歧义,它明确指向一个确定的算法,我们会在下文详细介绍。但归一化(Normalization)的概念就复杂了:首先,英文的Normalization本身就不是一个含义确定的术语,狭义地看,它被用于指代两种不同的算法,所以是有歧义的,下文会详细介绍,因此有的英文文章建议慎用Normalization一词。其次,它的中文翻译:归一化,其内涵已经超出了英文单词的含义范畴,而被“拓展”到了更为通用的层面上。这些细节我们都会在后面详细讨论。

简单总结一下:标准化(Standardization)可以认为是一个“狭义”的概念,它明确对应一个具体的算法,没有歧义;而归一化(Normalization)则是一个“广义”的概念,可指代多种缩放算法,如不明确说明使用的是什么缩放算法,往往会有歧义。

1. 标准化(Standardization)

在这些广泛流传的诸多术语中,标准化(Standardization)可以算是唯一一个定义明确没有歧义的概念了。它的处理逻辑是:先求出数据集(往往是一列数据)的均值和标准差,然后所有的元素先减去均值,再除以方差。由于标准化(Standardization)是按标准差(σ)缩放的,所以标准化也被叫做“标准差归一化”,所以这应该就是它名称中“标准”一词的来历(注意:使用标准化缩放后数据不一定是在[-1,1]之间,只是数据的整体标准差为1,这一点要清楚)。

由于标准化概念清晰而准确,所以不存在广义的“标准化”概念,但是某些文章会把标准化和归一化混为一谈,进而用标准化指代所有的数据缩放算法,这就不对了,只要大家能分辨出来,心里清楚就可以了。

2. 狭义的“归一化 (Normalization)”

在业界,我们会看到有部分资料会使用归一化(Normalization)指代一个具体的缩放算法,但遗憾的是大家指代的算法却是不同的,所以不像标准化,归一化没有形成统一明确的狭义概念,也就是一提到归一化时,大家就知道指的是哪个具体的算法。

不过,业界比较常见的是将“最大最小值缩放(Min-Max Scaling)”或者是“范数缩放(Norm Scaling)”称为Normalization。请注意,我们这里侧重讨论英文称谓“Normalization”,先不用“归一化”这种表述,因为这块的差异和讨论多见于英文资料,也和英文分词有些关系。

2.1 Normalization是“Min-Max归一化”?

这一说法的出处已不可考,可能是某些权威教材或书籍曾经这样定义过。在《Hands-On ML》一书(Page 72)中也明确提及Min-Max Scaling也叫Normalization;另外一种解释可能是因为标准差缩放和Min-Max缩放是两个最基本也最常用的数据缩放算法,前者使用了Standardization指代,于是就有人习惯用Normalization指代后者了。

2.2 Normalization是“范数归一化”?

这一说就更加直白了,完全是从具体的算法名引申而来。我们知道,Norm是指数学中的范数,Sklearn中有两个对数据进行范数归一的方法:分别是normalize()函数和Normalizer类,这种操作的名词自然会被称为“Normalization”,即三个术语之间的关系是:Norm -> Normalize/Normalizer -> Normalization,所以,范数归一化被叫做Normalization也是顺理成章的。

但正是由于存在上述两种流传都很广的认识,所以我们无法界定归一化(Normalization)具体对应的是哪一种缩放方法。

3. 广义的“归一化 (Normalization)”

由于大部分的特征缩放(feature scalingscaling)手段,数据经过处理之后一般都会被缩放到[0,1]或[-1,1]的区间内,所以中文使用的“归一化”这个术语能更好地体现缩放算法的本质,因而被广泛使用;同时另外一些数据缩放手段数据经处理后是某项特征值变成了1,所以也被习惯性的称之为了归一化,典型的代表就是:标准差归一化和范数归一化。目前,有明确中文称谓且使用“归一化”命名的缩放方法主要有3种,它们是:

  • 标准差归一化 / Z-Score归一化 / 标准化
  • Min-Max归一化
  • 范数归一化

它们的中英文名称和多种别名都以在文章开始的表格中详细列出。

4. 使用无歧义的“缩放函数名/类名”交流

我们应该掌握的当然是每一种具体的缩放算法,而不是这些混乱和没有定论的概念与分类,梳理这些概念还是为了便于平时的交流,如果大家在沟通中有发现了概念不一致的情况,就应该使用具体的缩放方法名来指代。在Sklearn中有五种具体的数据缩放方法,以下是它们的函数名:

名称方法名类名
标准差归一化 / Z-Score 归一化 / 标准化sklearn.preprocessing.scalesklearn.preprocessing.StandardScaler
Min-Max 归一化sklearn.preprocessing.minmax_scalesklearn.preprocessing.MinMaxScaler
范数归一化sklearn.preprocessing.normalizesklearn.preprocessing.Normalizer
Robust Scaler(无常用别名)sklearn.preprocessing.robust_scalesklearn.preprocessing.RobustScaler
Power Transformer (无常用别名)sklearn.preprocessing.power_transformsklearn.preprocessing.PowerTransformer

下图总结了这五种广义的归一化方法的计算原理和适应场景(boxcox由PowerTransformer提供支持):

请添加图片描述

我们将在后续的文章中详细讲解和演示上述的缩放手段。

5. 总结

“标准化”没有广义和狭义之分,就是“标准差归一化”(Z-Score归一化);狭义的“归一化”一种观点认为是“最大最小值归一化”,另一种观点认为是“范数归一化”,没有形成共识,广义的“归一化”则可以泛指“所有数据缩放方法”,只要在前面加上方法名定语修饰一下即可。


参考资料:

Data mining normalization method
Feature Scaling with scikit-learn
Data normalization in machine learning
sklearn中的数据预处理和特征工程
scikit-learn数据预处理之特征缩放
机器学习:盘点最常见的7种数据预处理方法和原理
标准化和归一化什么区别?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/165793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C进阶】动态内存管理

家人们欢迎来到小姜的世界&#xff0c;<<点此>>传送门 这里有详细的关于C/C/Linux等的解析课程&#xff0c;家人们赶紧冲鸭&#xff01;&#xff01;&#xff01; 客官&#xff0c;码字不易&#xff0c;来个三连支持一下吧&#xff01;&#xff01;&#xff01;关注…

Spring 中最常用的 11 个扩展点

目录 1.自定义拦截器 2.获取Spring容器对象 2.1 BeanFactoryAware接口 2.2 ApplicationContextAware接口 3.全局异常处理 4.类型转换器 5.导入配置 5.1 普通类 5.2 配置类 5.3 ImportSelector 5.4 ImportBeanDefinitionRegistrar 6.项目启动时 7.修改BeanDefiniti…

MySQL高级【MVCC原理分析】

1&#xff1a;MVCC1.1&#xff1a;基本概念1). 当前读 读取的是记录的最新版本&#xff0c;读取时还要保证其他并发事务不能修改当前记录&#xff0c;会对读取的记录进行加 锁。对于我们日常的操作&#xff0c;如&#xff1a;select ... lock in share mode(共享锁)&#xff0c…

技术人员和非技术人员如何写出优质博客?-涵子的个人想法

大家好&#xff0c;我是涵子。今天&#xff0c;我们来沉重的聊聊一个大家都很关心的一个问题&#xff1a;技术人员和非技术人员如何写出优质博客&#xff1f; 目录 前言 初写博客&#xff0c;仰望大师 中段时期&#xff0c;无粉无赞 优质博客&#xff0c;涨粉涨赞 优质内容…

前端编写邮件html各邮箱兼容及注意事项

近期由于项目需要&#xff0c;第一次编写邮件html模板&#xff0c;发现各种邮箱兼容问题&#xff0c;尤其是windows自带的邮箱outlook兼容性极差&#xff0c;在此简单做下记录。 注意事项&#xff08;全局样式规则&#xff09; 使用越垃圾的样式越好&#xff0c;绝大部分css3…

Spring面试题

Spring概述&#xff08;10&#xff09; https://blog.csdn.net/zhang150114/article/details/90478753 什么是spring? Spring是一个轻量级JavaEE开发框架&#xff0c;最早有Rod Johnson创建&#xff0c;目的是为了解决企业级应用开发的**业务逻辑层和其他各层的耦合问题。*…

Eclipse 连接 SQL Server 数据库教程

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

JUC面试(一)——JUCJMMvolatile 1.0

JUC&JMM JMM JUC&#xff08;java.util.concurrent&#xff09; 进程和线程 进程&#xff1a;后台运行的程序&#xff08;我们打开的一个软件&#xff0c;就是进程&#xff09;&#xff0c;资源分配单位线程&#xff1a;轻量级的进程&#xff0c;并且一个进程包含多个线程…

Docker部署Nexus通过Maven推送及拉取代码

&#x1f60a; 作者&#xff1a; 一恍过去&#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390&#x1f38a; 社区&#xff1a; Java技术栈交流&#x1f389; 主题&#xff1a; Docker部署Nexus通过Maven推送及拉取代码⏱️ 创作时间&#xff1a; 2023…

如何利用ChatGPT帮你写代码?

最近爆火的ChatGpt相信大家都不陌生&#xff0c;听说它还能写代码&#xff0c;而且能力不凡。作为合格的嵌入式软件工程师&#xff0c;必须得充分利用起来&#xff01; 获取系统IP地址 先写一个脚本&#xff0c;获取系统IP地址吧&#xff0c;没想到还有详细的注释&#xff01…

华亚转债上市价格预测

华亚转债基本信息转债名称&#xff1a;华亚转债&#xff0c;评级&#xff1a;A&#xff0c;发行规模&#xff1a;3.4亿元。正股名称&#xff1a;华亚智能&#xff0c;今日收盘价&#xff1a;62.84&#xff0c;转股价格&#xff1a;69.39。当前转股价值 转债面值 / 转股价格 * …

juc系列(1)---进程,线程,并行,并发

目录概述进程线程关系并发并行&#xff1a;同步异步&#xff1a;对比概述 进程 程序由指令和数据组成&#xff0c;但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须将指令加载至CPU,数据加载至内 存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载…

Databend 内幕大揭秘第一弹 - minibend 简介

minibend &#xff0c;一个从零开始、使用 Rust 构建的查询引擎。这里是 minibend 系列技术主题分享的第一期&#xff0c;来自 PsiACE 。 前排指路视频和 PPT 地址 视频&#xff08;哔哩哔哩&#xff09;&#xff1a;https://www.bilibili.com/video/BV1Ne4y1x7Cn PPT&#x…

Unity 之 Addressable可寻址系统 -- 资源加载和释放

可寻址系统资源 -- 加载和资源释放 -- 进阶&#xff08;二&#xff09;一&#xff0c;资源加载1.1 同步异步对比1.2 三种加载模式二&#xff0c;释放资源2.1 基础概念2.2 实例演示2.2.1 示例演示一2.2.2 示例演示二2.3 注意事项概述&#xff1a;本篇文章从资源加载的方式和具体…

Spring官方提供【CSRF攻击】解决方案

步入正文 Cookie cookie是我们常见用来保存用户态信息&#xff0c;cookie跟随我们的请求自动携带。在同一域名下的请求&#xff0c;cookie总是自动携带。 用户态: 当前登入者的用户信息 以上的特性会导致一个潜在漏洞-CSRF CSRF CSRF一般指跨站请求伪造。 跨站请求伪造&…

长安链合约标准协议启动建设,邀请社区用户评审

智能合约是区块链摆脱第三方&#xff0c;实现验证、执行业务逻辑的“看不见的手”。随着联盟链产业落地进入快车道&#xff0c;需要面对的应用场景更加多样&#xff0c;智能合约标准协议作为推动联盟链应用生态繁荣的重要一环也需要加速推进发展。 区块链技术正在发展中规范。…

PHP 连接 MySQL

PHP 5 及以上版本建议使用以下方式连接 MySQL : MySQLi extension ("i" 意为 improved)PDO (PHP Data Objects) 在 PHP 早期版本中我们使用 MySQL 扩展。但该扩展在 2012 年开始不建议使用。 我是该用 MySQLi &#xff0c;还是 PDO? 如果你需要一个简短的回答&…

C语言 栈的应用 计算简单的中缀表达式

代码简介&#xff1a;下面的代码实现了计算简单的中缀表达式&#xff1a;只可以处理一位正整数的四则运算及括号。是栈的简单应用&#xff0c;要实现中缀表达式运算需要用两个栈&#xff0c;一个存储数字的栈和一个存储运算符的栈&#xff0c;因为懒得写两遍不同的栈上的操作&a…

增益自适应PI控制器+死区过滤器(Smart PLC向导PID编程应用)

增益自适应和死区过滤器如果不和S7-200 SMART PLC PID向导组合实现,大家可以自行编写优化的PID指令。算法起始非常简单,具体实现过程大家可以参看下面的文章链接, 三菱增量式PID+死区过滤器 三菱PLC增量式PID算法FB(带死区设置和外部复位控制)_RXXW_Dor的博客-CSDN博客关于…

【论文简述】High-Resolution Optical Flow from 1D Attention and Correlation(ICCV 2021)

一、论文简述 1. 第一作者&#xff1a;Haofei Xu 2. 发表年份&#xff1a;2021 3. 发表期刊&#xff1a;ICCV 4. 关键词&#xff1a;光流、代价体、自注意力、高分辨率、GRU 5. 探索动机&#xff1a;小分辨率对于网络性能有影响&#xff0c;并且现实场景中大多为高分辨率的…