归一化(

更新时间:2023-07-18 02:40:28 阅读: 评论:0

归⼀化(
1 概念
  归⼀化:1)把数据变成(0,1)或者(1,1)之间的⼩数。主要是为了数据处理⽅便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。2)把有量纲表达式变成⽆量纲表达式,便于不同单位或量级的指标能够进⾏⽐较和加权。归⼀化是⼀种简化计算的⽅式,即将有量纲的表达式,经过变换,化为⽆量纲的表达式,成为纯量。
  标准化:在机器学习中,我们可能要处理不同种类的资料,例如,⾳讯和图⽚上的像素值,这些资料可能是⾼维度的,资料标准化后会使每个特征中的数值平均变为0(将每个特征的值都减掉原始资料中该特征的平均)、标准差变为1,这个⽅法被⼴泛的使⽤在许多机器学习算法中(例如:⽀持向量机、逻辑回归和类神经⽹络)。
  中⼼化:平均值为0,对标准差⽆要求
  归⼀化和标准化的区别:归⼀化是将样本的特征值转换到同⼀量纲下把数据映射到[0,1]或者[-1, 1]区间内,仅由变量的极值决定,因区间放缩法是归⼀化的⼀种。标准化是依照特征矩阵的列处理数据,其通过求z-score的⽅法,转换为标准正态分布,和整体样本分布相关,每个样本点都能对标准化产⽣影响。
它们的相同点在于都能取消由于量纲不同引起的误差;都是⼀种线性变换,都是对向量X按照⽐例压缩再进⾏平移。
  标准化和中⼼化的区别:标准化是原始分数减去平均数然后除以标准差,中⼼化是原始分数减去平均数。 所以⼀般流程为先中⼼化再标准化。
俄罗斯糖  ⽆量纲:我的理解就是通过某种⽅法能去掉实际过程中的单位,从⽽简化计算。
2 为什么要归⼀化/标准化?
  如前⽂所说,归⼀化/标准化实质是⼀种线性变换,线性变换有很多良好的性质,这些性质决定了对数据改变后不会造成“失效”,反⽽能提⾼数据的表现,这些性质是归⼀化/标准化的前提。⽐如有⼀个很重要的性质:线性变换不会改变原始数据的数值排序。
(1)某些模型求解需要
  1)在使⽤梯度下降的⽅法求解最优化问题时, 归⼀化/标准化后可以加快梯度下降的求解速度,即提升模型的收敛速度。如左图所⽰,未归⼀化/标准化时形成的等⾼线偏椭圆,迭代时很有可能⾛“之”字型路线(垂直长轴),从⽽导致迭代很多次才能收敛。⽽如右图对两个特征进⾏了归⼀化,对应的等⾼线就会变圆,在梯度下降进⾏求解时能较快的收敛。
椭圆等⾼线和圆形等⾼线
梯度下降轨迹
  2)⼀些分类器需要计算样本之间的距离(如欧⽒距离),例如KNN。如果⼀个特征值域范围⾮常⼤,那么距离计算就主要取决于这个特征,从⽽与实际情况相悖(⽐如这时实际情况是值域范围⼩的特征更重要)。
(2)⽆量纲化
  例如房⼦数量和收⼊,因为从业务层知道,这两者的重要性⼀样,所以把它们全部归⼀化。 这是从业务层⾯上作的处理。
(3)避免数值问题
  太⼤的数会引发数值问题。
3 数据预处理时
3.1 归⼀化
(1)Min-Max Normalization
严刻
  x' = (x - X_min) / (X_max - X_min)
(2)平均归⼀化
  x' = (x - μ) / (MaxValue - MinValue)
  (1)和(2)有⼀个缺陷就是当有新数据加⼊时,可能导致max和min的变化,需要重新定义。
(3)⾮线性归⼀化
  1)对数函数转换:y = log10(x)
  2)反余切函数转换:y = atan(x) * 2 / π科学实践
  (3)经常⽤在数据分化⽐较⼤的场景,有些数值很⼤,有些很⼩。通过⼀些数学函数,将原始值进⾏映射。该⽅法包括 log、指数,正切等。需要根据数据分布的情况,决定⾮线性函数的曲线,⽐如log(V, 2)还是log(V, 10)等。
3.2 标准化
(1)Z-score规范化(标准差标准化 / 零均值标准化)
  x' = (x - μ)/σ
3.3 中⼼化
  x' = x - μ
4 什么时候⽤归⼀化?什么时候⽤标准化?
  (1)如果对输出结果范围有要求,⽤归⼀化。
  (2)如果数据较为稳定,不存在极端的最⼤最⼩值,⽤归⼀化。
  (3)如果数据存在异常值和较多噪⾳,⽤标准化,可以间接通过中⼼化避免异常值和极端值的影响。
  某知乎答主的回答提到了他个⼈经验:⼀般来说,我个⼈建议优先使⽤标准哈。对于输出有要求时再尝试别的⽅法,如归⼀化或者更加复杂的⽅法。很多⽅法都可以将输出范围调整到[0, 1],如果我们对于数据的分布有假设的话,更加有效的⽅法是使⽤相对应的概率密度函数来转换。让我们以⾼斯分布为例,我们可以⾸先计算⾼斯误差函数(Gaussian Error Function),此处定为er fc(·),那么可以⽤下式进⾏转化:
笃学不倦
  这篇博客提到他的经验:1) 在分类、聚类算法中,需要使⽤距离来度量相似性的时候、或者使⽤PCA技术进⾏降维的时候,第⼆种⽅法(Z-score standardization)表现更好。2) 在不涉及距离度量、协⽅差计算、数据不符合正太分布的时候,可以使⽤第⼀种⽅法或其他归⼀化⽅法。⽐如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0 255]的范围。
5 哪些模型必须归⼀化/标准化?
标枪怎么扔(1)SVM
  不同的模型对特征的分布假设是不⼀样的。⽐如SVM ⽤⾼斯核的时候,所有维度共⽤⼀个⽅差,这不就假设特征分布是圆的么,输⼊椭圆的就坑了⼈家,所以简单的归⼀化都还不够好,来杯⽩化才有劲。⽐如⽤树的时候就是各个维度各算各的切分点,没所谓。
(2)KNN
卫生间英语  需要度量距离的模型,⼀般在特征值差距较⼤时,都会进⾏归⼀化/标准化。不然会出现“⼤数吃⼩数”。
(3)神经⽹络
梦想的意思  1)数值问题
  归⼀化/标准化可以避免⼀些不必要的数值问题。输⼊变量的数量级未致于会引起数值问题吧,但其实要引起也并不是那么困难。因为
tansig(tanh)的⾮线性区间⼤约在[-1.7,1.7]。意味着要使神经元有效,tansig( w1x1 + w2x2 +b) ⾥的 w1x1 +w2x2 +b 数量级应该在 1(1.7所在的数量级)左右。这时输⼊较⼤,就意味着权值必须较⼩,⼀个较⼤,⼀个较⼩,两者相乘,就引起数值问题了。
  假如你的输⼊是421,你也许认为,这并不是⼀个太⼤的数,但因为有效权值⼤概会在1/421左右,例如0.00243,那么,在matlab⾥输⼊421·0.00243 == 0.421·2.43,会发现不相等,这就是⼀个数值问题。
  2)求解需要
  a. 初始化:在初始化时我们希望每个神经元初始化成有效的状态,tansig函数在[-1.7, 1.7]范围内有较好的⾮线性,所以我们希望函数的输⼊和神经元的初始化都能在合理的范围内使得每个神经元在初始时是有效的。(如果权值初始化在[-1,1]且输⼊没有归⼀化且过⼤,会使得神经元饱和)
  b. 梯度:以输⼊-隐层-输出这样的三层BP为例,我们知道对于输⼊-隐层权值的梯度有2e w(1-a^2)*x的形式(e是誤差,w是隐层到输出层的权重,a是隐层神经元的值,x是输⼊),若果输出层的数量级
射雕英雄传读后感
很⼤,会引起e的数量级很⼤,同理,w为了将隐层(数量级为1)映⾝到输出层,w 也会很⼤,再加上x也很⼤的话,从梯度公式可以看出,三者相乘,梯度就⾮常⼤了。这时会给梯度的更新带来数值问题。
  c. 学习率:由(2)中,知道梯度⾮常⼤,学习率就必须⾮常⼩,因此,学习率(学习率初始值)的选择需要参考输⼊的范围,不如直接将数据归⼀化,这样学习率就不必再根据数据范围作调整。 隐层到输出层的权值梯度可以写成 2ea,⽽输⼊层到隐层的权值梯度为 2ew(1-a^2)x ,受 x 和 w 的影响,各个梯度的数量级不相同,因此,它们需要的学习率数量级也就不相同。对w1适合的学习率,可能相对于w2来说会太⼩,若果使⽤适合w1的学习率,会导致在w2⽅向上步进⾮常慢,会消耗⾮常多的时间,⽽使⽤适合w2的学习率,对w1来说⼜太⼤,搜索不到适合w1的解。如果使⽤固定学习率,⽽数据没归⼀化,则后果可想⽽知。
  d.搜索轨迹:已解释
(4)PCA

本文发布于:2023-07-18 02:40:28,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1085807.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:标准化   梯度   数据   数值   需要   量纲   范围
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图