解读:为什么要做特征归一化/标准化?

二维数字图像相关算法软件Ncorr的使用心得 二维开源软件Ncorr的DIC分析操作过程详解。 阅读详情

↑↑↑关注后"星标"Datawhale

每日干货 & 每月组队学习,不错过

 Datawhale干货 

作者:shine-lee,编辑:极市平台

 

本文解读了一项数据预处理中的重要技术——特征归一化,提出并解答了5个相关问题,同时分析了相关方法和适用场景。

AI派在读学生小姐姐Beyonce

Java实战项目练习群

长按识别下方二维码,按需求添加

扫码添加Beyonce小姐姐

扫码关注

进Java学习大礼包

写在前面

Feature scaling,常见的提法有“特征归一化”、“标准化”,是数据预处理中的重要技术,有时甚至决定了算法能不能work以及work得好不好。谈到feature scaling的必要性,最常用的2个例子可能是:

  • 特征间的单位(尺度)可能不同,比如身高和体重,比如摄氏度和华氏度,比如房屋面积和房间数,一个特征的变化范围可能是[1000, 10000],另一个特征的变化范围可能是[−0.1,0.2],在进行距离有关的计算时,单位的不同会导致计算结果的不同,尺度大的特征会起决定性作用,而尺度小的特征其作用可能会被忽略,为了消除特征间单位和尺度差异的影响,以对每维特征同等看待,需要对特征进行归一化。

  • 原始特征下,因尺度差异,其损失函数的等高线图可能是椭圆形,梯度方向垂直于等高线,下降会走zigzag路线,而不是指向local minimum。通过对特征进行zero-mean and unit-variance变换后,其损失函数的等高线图更接近圆形,梯度下降的方向震荡更小,收敛更快,如下图所示,图片来自Andrew Ng。

Feature Scaling from Andrew Ng

对于feature scaling中最常使用的Standardization,似乎“无脑上”就行了,本文想多探究一些为什么,

  • 常用的feature scaling方法都有哪些?

  • 什么情况下该使用什么feature scaling方法?有没有一些指导思想?

  • 所有的机器学习算法都需要feature scaling吗?有没有例外?

  • 损失函数的等高线图都是椭圆或同心圆吗?能用椭圆和圆来简单解释feature scaling的作用吗?

  • 如果损失函数的等高线图很复杂,feature scaling还有其他直观解释吗?

根据查阅到的资料,本文将尝试回答上面的问题。但笔者能力有限,空有困惑,能讲到哪算哪吧(微笑)。

常用feature scaling方法

在问为什么前,先看是什么。

给定数据集,令特征向量为x,维数为D,样本数量为R,可构成D×R的矩阵,一列为一个样本,一行为一维特征,如下图所示,图片来自Hung-yi Lee pdf-Gradient Descent:

feature matrix

feature scaling的方法可以分成2类,逐行进行和逐列进行。逐行是对每一维特征操作,逐列是对每个样本操作,上图为逐行操作中特征标准化的示例。

具体地,常用feature scaling方法如下,来自wiki,

  • Rescaling (min-max normalization、range scaling):

将每一维特征线性映射到目标范围[a,b],即将最小值映射为a,最大值映射为b,常用目标范围为[0,1]和[−1,1],特别地,映射到[0,1]计算方式为:

  • Mean normalization:

将均值映射为0,同时用最大值最小值的差对特征进行归一化,一种更常见的做法是用标准差进行归一化,如下。

  • Standardization (Z-score Normalization):

每维特征0均值1方差(zero-mean and unit-variance)。

  • Scaling to unit length:

将每个样本的特征向量除以其长度,即对样本特征向量的长度进行归一化,长度的度量常使用的是L2 norm(欧氏距离),有时也会采用L1 norm,不同度量方式的一种对比可以参见论文“CVPR2005-Histograms of Oriented Gradients for Human Detection”。

上述4种feature scaling方式,前3种为逐行操作,最后1种为逐列操作。

容易让人困惑的一点是指代混淆,Standardization指代比较清晰,但是单说Normalization有时会指代min-max normalization,有时会指代Standardization,有时会指代Scaling to unit length。

计算方式上对比分析

前3种feature scaling的计算方式为减一个统计量再除以一个统计量,最后1种为除以向量自身的长度。

  • 减一个统计量可以看成选哪个值作为原点,是最小值还是均值,并将整个数据集平移到这个新的原点位置。如果特征间偏置不同对后续过程有负面影响,则该操作是有益的,可以看成是某种偏置无关操作;如果原始特征值有特殊意义,比如稀疏性,该操作可能会破坏其稀疏性。

  • 除以一个统计量可以看成在坐标轴方向上对特征进行缩放,用于降低特征尺度的影响,可以看成是某种尺度无关操作。缩放可以使用最大值最小值间的跨度,也可以使用标准差(到中心点的平均距离),前者对outliers敏感,outliers对后者影响与outliers数量和数据集大小有关,outliers越少数据集越大影响越小。

  • 除以长度相当于把长度归一化,把所有样本映射到单位球上,可以看成是某种长度无关操作,比如,词频特征要移除文章长度的影响,图像处理中某些特征要移除光照强度的影响,以及方便计算余弦距离或内积相似度等。

稀疏数据、outliers相关的更多数据预处理内容可以参见scikit learn-5.3. Preprocessing data。

从几何上观察上述方法的作用,图片来自CS231n-Neural Networks Part 2: Setting up the Data and the Loss,zero-mean将数据集平移到原点,unit-variance使每维特征上的跨度相当,图中可以明显看出两维特征间存在线性相关性,Standardization操作并没有消除这种相关性。

Standardization

可通过PCA方法移除线性相关性(decorrelation),即引入旋转,找到新的坐标轴方向,在新坐标轴方向上用“标准差”进行缩放,如下图所示,图片来自链接,图中同时描述了unit length的作用——将所有样本映射到单位球上。

Effect of the operations of standardization and length normalization

当特征维数更多时,对比如下,图片来自youtube,

feature scaling comparison

总的来说,归一化/标准化的目的是为了获得某种“无关性”——偏置无关、尺度无关、长度无关……当归一化/标准化方法背后的物理意义和几何含义与当前问题的需要相契合时,其对解决该问题就有正向作用,反之,就会起反作用。所以,“何时选择何种方法”取决于待解决的问题,即problem-dependent。

feature scaling 需要还是不需要

下图来自data school-Comparing supervised learning algorithms,对比了几个监督学习算法,最右侧两列为是否需要feature scaling。

Comparing supervised learning algorithms

下面具体分析一下。

什么时候需要feature scaling?

  • 涉及或隐含距离计算的算法,比如K-means、KNN、PCA、SVM等,一般需要feature scaling,因为:

zero-mean一般可以增加样本间余弦距离或者内积结果的差异,区分力更强,假设数据集集中分布在第一象限遥远的右上角,将其平移到原点处,可以想象样本间余弦距离的差异被放大了。在模版匹配中,zero-mean可以明显提高响应结果的区分度。

就欧式距离而言,增大某个特征的尺度,相当于增加了其在距离计算中的权重,如果有明确的先验知识表明某个特征很重要,那么适当增加其权重可能有正向效果,但如果没有这样的先验,或者目的就是想知道哪些特征更重要,那么就需要先feature scaling,对各维特征等而视之。

增大尺度的同时也增大了该特征维度上的方差,PCA算法倾向于关注方差较大的特征所在的坐标轴方向,其他特征可能会被忽视,因此,在PCA前做Standardization效果可能更好,如下图所示,图片来自scikit learn-Importance of Feature Scaling,

  • PCA and Standardization
  • 损失函数中含有正则项时,一般需要feature scaling:对于线性模型y=wx+b而言,x的任何线性变换(平移、放缩),都可以被w和b“吸收”掉,理论上,不会影响模型的拟合能力。但是,如果损失函数中含有正则项,如λ∣∣w∣∣^2,λ为超参数,其对w的每一个参数施加同样的惩罚,但对于某一维特征xi而言,其scale越大,系数wi越小,其在正则项中的比重就会变小,相当于对wi惩罚变小,即损失函数会相对忽视那些scale增大的特征,这并不合理,所以需要feature scaling,使损失函数平等看待每一维特征。

  • 梯度下降算法,需要feature scaling。梯度下降的参数更新公式如下,

E(W)为损失函数,收敛速度取决于:参数的初始位置到local minima的距离,以及学习率η的大小。一维情况下,在local minima附近,不同学习率对梯度下降的影响如下图所示:

Gradient descent for different learning rates

多维情况下可以分解成多个上图,每个维度上分别下降,参数W为向量,但学习率只有1个,即所有参数维度共用同一个学习率(暂不考虑为每个维度都分配单独学习率的算法)。收敛意味着在每个参数维度上都取得极小值,每个参数维度上的偏导数都为0,但是每个参数维度上的下降速度是不同的,为了每个维度上都能收敛,学习率应取所有维度在当前位置合适步长中最小的那个。下面讨论feature scaling对gradient descent的作用,

    • zero center与参数初始化相配合,缩短初始参数位置与local minimum间的距离,加快收敛。模型的最终参数是未知的,所以一般随机初始化,比如从0均值的均匀分布或高斯分布中采样得到,对线性模型而言,其分界面初始位置大致在原点附近,bias经常初始化为0,则分界面直接通过原点。同时,为了收敛,学习率不会很大。而每个数据集的特征分布是不一样的,如果其分布集中且距离原点较远,比如位于第一象限遥远的右上角,分界面可能需要花费很多步骤才能“爬到”数据集所在的位置。所以,无论什么数据集,先平移到原点,再配合参数初始化,可以保证分界面一定会穿过数据集。此外,outliers常分布在数据集的外围,与分界面从外部向内挪动相比,从中心区域开始挪动可能受outliers的影响更小。

    • 对于采用均方误差损失LMS的线性模型,损失函数恰为二阶,如下图所示

    不同方向上的下降速度变化不同(二阶导不同,曲率不同),恰由输入的协方差矩阵决定,通过scaling改变了损失函数的形状,减小不同方向上的曲率差异。将每个维度上的下降分解来看,给定一个下降步长,如果不够小,有的维度下降的多,有的下降的少,有的还可能在上升,损失函数的整体表现可能是上升也可能是下降,就会不稳定。scaling后不同方向上的曲率相对更接近,更容易选择到合适的学习率,使下降过程相对更稳定。

    • 另有从Hessian矩阵特征值以及condition number角度的理解,详见Lecun paper-Efficient BackProp中的Convergence of Gradient Descent一节,有清晰的数学描述,同时还介绍了白化的作用——解除特征间的线性相关性,使每个维度上的梯度下降可独立看待。

    • 文章开篇的椭圆形和圆形等高线图,仅在采用均方误差的线性模型上适用,其他损失函数或更复杂的模型,如深度神经网络,损失函数的error surface可能很复杂,并不能简单地用椭圆和圆来刻画,所以用它来解释feature scaling对所有损失函数的梯度下降的作用,似乎过于简化,见Hinton vedio-3.2 The error surface for a linear neuron。

    • 对于损失函数不是均方误差的情况,只要权重w与输入特征x间是相乘关系,损失函数对w的偏导必然含有因子x,w的梯度下降速度就会受到特征x尺度的影响。理论上为每个参数都设置上自适应的学习率,可以吸收掉x尺度的影响,但在实践中出于计算量的考虑,往往还是所有参数共用一个学习率,此时x尺度不同可能会导致不同方向上的下降速度悬殊较大,学习率不容易选择,下降过程也可能不稳定,通过scaling可对不同方向上的下降速度有所控制,使下降过程相对更稳定。

  • 对于传统的神经网络,对输入做feature scaling也很重要,因为采用sigmoid等有饱和区的激活函数,如果输入分布范围很广,参数初始化时没有适配好,很容易直接陷入饱和区,导致梯度消失,所以,需要对输入做Standardization或映射到[0,1]、[−1,1],配合精心设计的参数初始化方法,对值域进行控制。但自从有了Batch Normalization,每次线性变换改变特征分布后,都会重新进行Normalization,似乎可以不太需要对网络的输入进行feature scaling了?但习惯上还是会做feature scaling。

什么时候不需要Feature Scaling?

与距离计算无关的概率模型,不需要feature scaling,比如Naive Bayes;

与距离计算无关的基于树的模型,不需要feature scaling,比如决策树、随机森林等,树中节点的选择只关注当前特征在哪里切分对分类更好,即只在意特征内部的相对大小,而与特征间的相对大小无关。

小结

这篇文章写得十分艰难,一开始以为蛮简单直接,但随着探索的深入,冒出的问号越来越多,打破了很多原来的“理所当然”,所以,在写的过程中不停地做加法,很多地方想解释得尽量直观,又不想照搬太多公式,但自己的理解又不够深刻,导致现在叙述这么冗长,希望以后在写文时能更专注更精炼。

文末福利

各位猿们,还在为记不住API发愁吗,哈哈哈,最近发现了国外大师整理了一份Python代码速查表和Pycharm快捷键sheet,火爆国外,这里分享给大家。

这个是一份Python代码速查表

下面的宝藏图片是2张(windows && Mac)高清的PyCharm快捷键一览图

怎样获取呢?可以添加我们的AI派团队的Beyonce小姐姐

一定要备注【高清图】哦

????????????????????

➕我们的Beyonce小姐姐微信要记得备注【高清图】哦

来都来了,喜欢的话就请分享、点赞、在看三连再走吧~~~

LoRa学习:LoRa通信调制解调的实现原理与性能 LoRa学习:LoRa调制解调原理与性能 1、LoRa调制解调器原理 LoRa调制解调器采用专利扩频调制和前向纠错技术。与传统的FSK、OOK调制技术相比,LoRa扩大了无线通讯链路的覆盖范围(实现了远距离无线传输),提高了链路的鲁棒性。。 开发人员可调整扩频因子和纠错率这两个参数,从而平衡通讯时的带宽占用、通信速率、空中包的存活时间、以及抗干扰性等。。 LoRa调制解调器... 阅读详情

相关推荐

手把手教你用三极管搭建麦克风音频放大电路(附完整电路图)

本文详细介绍了如何使用三极管搭建麦克风音频放大电路,包括电路设计基础、元件选择、完整电路图及分步焊接指南。通过实际操作和调试技巧,帮助电子爱好者和学生深入理解模拟电路原理,实现音质清晰的音频放大效果。

Black的专栏 988

深入探讨:为什么要做特征归一化/标准化?

点击上方“3D视觉工坊”,选择“星标”干货第一时间送达作者丨shine-lee来源丨https://blog.youkuaiyun.com/blogshinelee/article/details/...

3D视觉工坊 1119

主板USB接口全部失效解决方案(通用串行总线USB控制器有黄色叹号)保姆级教程亲测有效

通用串行总线控制器总是有叹号解决办法 办公室的崩腾时代老电脑,疫情期间没人用,来了开机之后发现鼠标键盘都用不了,本以为是主机放时间长出了问题,后来想起来就百度了“鼠标键盘都失效”的标题,结果发现了“串行总线控制器总是感叹号”的关联问题。正好办公室电脑都装有teamviwer常用来远程办公(在家偷懒)。所以通过远程发现电脑室可以运行的。并在控制面板发现:通用串行总线控制器总是感叹号,插入外设时USB无反应。如图:​ 并且右键选中其中一个,点击最后一个选项:“属性” 可以发现“设备状态”中会提示“由...

xiao_bai_0_0的博客 2万+

数据预处理_数据反归一化01

数据反归一化 在数据处理中经常用到归一化将数据缩放到一个较为合理的范围。 归一化的方法有很多地方有讲,本篇不做解释 情况1-只对特征进行归一化 将特征和标签,放在相同的数组里,只对特征进行归一化,训练后的模型预测的值,即为最终的值,不需要反归一化。 from sklearn.linear_model import LinearRegression from sklearn.preprocess...

bhcgdh的博客 3万+

java modbus通讯协议_Modbus通 讯 协 议

电磁流量计Modbus通 讯 协 议(版本号:9000-K V9.1.1)2020年01月01日通讯协议针对KFD电磁流量计工业应用设计,版本:9000-K V9.1.1,该版本主要用于实时数据采集、流量测量、流量累计控制及部分参数的修改。一、主机系统通讯部件要求1.国际标准RS-485通讯接口部件,不小于11Bytes 的通信缓冲区(FIFO),支持1200、2400、4800、96...

weixin_39956612的博客 1012

晶体管的 栅极gate 材料选用 多晶硅polysilicon,并采用 自对准工艺 self-aligned IC后端版图 【VLSI】

本文为了解决为什么要使用多晶硅作栅极触点的问题,先介绍了MOS管的工作原理是通过栅极上所加的电压控制漏极与源极之间电流,然后解释了栅极的材料为什么选用多晶硅,然后介绍了晶体管里栅极的自对准工艺(Self-Aligned Gate )。

Jie_MSD的博客 1万+

特征工程中的归一化问题

特征工程中的「归一化」有什么作用? - 微调的回答 - 知乎 https://www.zhihu.com/question/20455227/answer/370658612 本文主要摘自知乎问题中微调童鞋的答案,侵删。 首先,我们需要明白三个问题: 数据缩放的本质是什么 不同数据缩放的区别 如何选择不同的缩放方法 我们从定义入手: 归一化(normalization):  标准化(...

baozoudeshizi的博客 911

从一个 ASIN 看透亚马逊:商品模型背后的增长飞轮

在亚马逊电商体系中,每件商品背后都有一套严密的商品建模逻辑。本篇文章以“ASIN 的一生”为线索,系统拆解了亚马逊的商品模型:从飞轮战略出发,剖析 SDP(Single Detail Page)机制如何实现标准化展示;再到 ASIN 编码、父子变体结构与 Offer 分离模型,逐层解析商品信息如何被建构、聚合与呈现。通过图解与案例,文章帮助读者理解商品建品流程、同款聚合原则、价格控制机制等核心逻辑,避免常见运营误区,是一份面向运营、产品、技术人员的实用参考指南。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 13万+

归一化的方法及作用

声明: 原文地址: https://blog.youkuaiyun.com/zenghaitao0128/article/details/78361038 (一)归一化的作用 在机器学习领域中,不同评价指标(即特征向量中的不同特征就是所述的不同评价指标)往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。...

qq_23100417的博客 3万+

杰理SDK入门教程(一):编译环境的安装和程序下载

本文档提供了杰理SDK在Windows系统下的开发环境配置与代码编译指南。主要内容包括:1) 开发环境安装步骤,需下载Code::Blocks和杰理工具链;2) 编译过程中常见问题的解决方案,如安全警告提示和链接文件缺失问题;3) 代码编译流程说明,包括打开工程、连接开发板、执行编译等步骤。文档特别强调了强制升级模式的操作方法,并指出需避免点击运行/调试按钮。最后提示了杀毒软件可能误报工具链的注意事项。

qq_42014563的博客 2744

深度学习特征融合(feature fusion)操作详解

特征融合是指在深度神经网络中,将来自不同来源(如不同网络分支、不同模态、不同时间步、不同空间尺度或不同抽象层级)的特征表示进行有策略地整合,以生成更具判别性、鲁棒性和语义丰富性的联合特征表示。其核心目标是最大化信息互补性,最小化信息冗余与噪声干扰。关键问题:如何“有效”融合?——这取决于任务需求、数据特性、计算资源和融合机制的设计。✅ 是否对齐了空间/通道/模态?✅ 融合方式是否与任务匹配?(检测需定位+语义 → 多尺度融合)✅ 是否引入可学习机制提升适应性?✅ 是否控制了计算开销?

浩瀚之水的专栏 793

验证系列-机器学习中,为什么要进行数据标准化或者归一化?

机器学习中,为什么要进行数据标准化或者归一化?应用条件原理分析实例佐证 应用条件 我们在翻阅各种资料时,在数据预处理步骤,经常会看到对数据进行标准化或者归一化,那么这么做的好处是什么? 1、这样处理后加快了梯度下降求最优解的速度; 2、有可能提高精度; 但是,理解这句话后,你会发现,这是有应用条件的,即: 1、适用于用梯度下降法求参数的算法; 2、适用于基于距离的算法; 比如树模型这种基于概率的,是没有作用的。 原理分析 1、为什么这样处理后加快了梯度下降求最优解的速度? 原因很简单,比如我们有这样一个2元

weixin_44700798的博客 4124

基于 C# 实现 RTSP 摄像头监控分屏系统:从流媒体获取到多画面显示

通过本文的讲解,我们介绍了如何在 C# 中实现 RTSP 摄像头监控分屏系统。我们使用了FFmpeg和VLC两种不同的方法来获取和解码 RTSP 流,并通过PictureBox控件和控件实现了分屏布局。两种解码方案都非常强大,可以根据实际需求选择最适合的方案。通过这种方式,您可以轻松地在 C# 中集成 RTSP 流,并将多个摄像头的视频流实时显示在同一屏幕上,进行监控和分析。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2309

解读:为什么机器学习中常常需要做特征归一化/标准化处理?

作者:shine-lee,编辑:极市平台本文解读了一项数据预处理中的重要技术——特征归一化,提出并解答了5个相关问题,同时分析了相关方法和适用场景。写在前面Feature scalin...

lsxxx2011的专栏 1034

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

标准化与归一化

Standardization & Nomalisation

Weber's blog 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

机器学习数据标准化与归一化:提升模型精度的关键

机器学习中的数据处理环节至关重要,其中,数据标准化与归一化是提高模型性能的关键步骤之一。数据的特征尺度往往不一致,直接影响模型的训练效果,因此对数据进行处理可以显著提高模型的收敛速度和预测准确性。本文将从多个角度解析数据标准化和归一化的方法,并通过具体代码实例进行讲解。

switch616的博客 3395

一文搞懂什么是归一化,以及几种常用的归一化方法(超详细解读)

归一化是数据预处理中的一种常用技术,旨在将数据按比例缩放,使之落入一个小的特定区间,通常是[0, 1]或[-1, 1]。这个过程对于许多机器学习算法来说是非常重要的,因为它可以帮助改善算法的收敛速度和性能,特别是在处理不同量纲或量级的特征时。a 图为未归一化的梯度,b 图为归一化后的梯度归一化是数据预处理中的一个重要步骤,它有助于改善数据的分布特性并加速机器学习算法的收敛速度。常见的归一化方法包括Min-Max归一化、Z-Score归一化、以及非线性归一化方法等。

m0_71212744的博客 4万+

一文彻底搞懂,为什么数据要做特征归一化和标准化!

作者:shine-lee,编辑:极市平台本文解读了一项数据预处理中的重要技术——特征归一化,提出并解答了5个相关问题,同时分析了相关方法和适用场景。写在前面Feature scaling...

SeizeeveryDay的博客 2166

【机器学习】为什么需要对数值型的特征做归一化(Normalization)?

【机器学习】为什么需要对数值型的特征做归一化(Normalization)?

wzk4869的博客 3223
上一篇: 5分钟掌握 Python 对象的引用
下一篇: 深度学习GPU最全对比,到底谁才是性价比之王?
Wang_AI
博客等级 码龄12年 996粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值