当前位置:   article > 正文

归一化、标准化、正则化_线性代数标准化

线性代数标准化

归一化、标准化、正则化

归一化/标准化定义

1. 归一化

就是将训练集中某一列数值特征(假设是第i列)的值缩放到0和1之间。方法如下所示:

   x i − m i n ( x i ) m a x ( x i ) − m i n ( x i ) \frac{x_i - min(x_i)}{max(x_i) - min(x_i)} max(xi)min(xi)ximin(xi)

2. 标准化

就是将训练集中某一列特征值(假设是第i列)缩放成均值为0,方差为1的状态。方法如下:

   x − μ σ \frac{x - \mu}{\sigma} σxμ

3. 进一步明确二者含义

归一化和标准化的相同点都是对 某个特征(column) 进行缩放,而不是对某个样本的特征向量(row)进行缩放。对特征向量进行缩放是毫无意义的 (暗坑1) ,比如三列特征:身高、体重、血压。每一个样本(row)就是三个这样的值,对这个row无论是进行标准化还是归一化都是没有意义的,因为不能将身高、体重和血压混到一起去。

在线性代数中,将一个向量除以这个向量的长度,也被称为标准化,不过这里的标准化是将向量变为长度为1的单位向量,他和这里的标准化不一样**(暗坑2)**。

归一化和标准化本质上是一种线性变换

先看归一化,在数据给定的前提下,令常数 α = X m a x − X m i n \alpha = X_{max} - X_{min} α=XmaxXmin,常数 β = X m i n \beta = X_{min} β=Xmin,那么归一化的新形式就是 X i − β α \frac{X_i - \beta}{\alpha} αXiβ。易发现这种改写和标准化形式 X i − μ σ \frac{X_i - \mu}{\sigma} σXiμ类似,因为在数据给定后, σ \sigma σ α \alpha α可以看做常数。

因此可以再变形: X i − β α = X i α − β α = X i α − c = 1 α X i − c \frac{X_i - \beta}{\alpha} = \frac{X_i}{\alpha} - \frac{\beta}{\alpha} =\frac{X_i}{\alpha} - c = \frac{1}{\alpha}X_i - c αXiβ=αXiαβ=αXic=α1Xic (公式1)

就发现是 对某个特征X按比例压缩 α \alpha α再进行平移c 。所以 归一化和标准化的本质就是一种线性变换

线性变换的性质

线性变换有很多良好的性质,这些性质决定了为什么对数据进行改变后不会造成失效,反而提高数据的表现。 其中一个很重要的性质是, 线性变换不会改变原始数据的数值排序

归一化和标准化的区别

归一化的缩放是将数值“拍扁”统一到区间0,1,而标准化的缩放更加“弹性”和“动态”,和整体样本的分布有很大关系

  • 归一化:缩放仅仅跟最大值和最小找有关。
  • 标准化:缩放和每个点都有关系,通过方差体现出来。与归一化相比,标准化中所有数据点都有贡献(通过均值和标准差造成影响)。

当数据较为集中时, α \alpha α更小,于是在数据标准化后就会更加分散。如果数据分布很广,那么 α \alpha α更大,数据就会被集中到更小的范围内。

从输出范围角度来看, X i − X m i n X m a x − X m i n \frac{X_i - X_{min}}{X_{max} - X_{min}} XmaxXminXiXmin 在[0,1]之间。对比看来,显然 σ ≤ X m a x − X m i n \sigma \leq X_{max} - X_{min} σXmaxXmin,甚至在极端情况下 $\sigma = 0 `,所以标准化的输出范围一定比归一化广。

  • 归一化:输出范围为[0,1]
  • 标准化:输出范围为(-∞,+∞)

标准化和归一化的对比分析

首先明确,在机器学习中,标准化是更常用的手段,归一化的应用场景是有限的。作者总结原因有两点:

  • 1、 标准化更好保持了样本间距。当样本中有异常点时,归一化有可能将正常的样本“挤”到一起去。比如三个样本,某个特征的值为1,2,10000,假设10000这个值是异常值,用归一化的方法后,正常的1,2就会被“挤”到一起去。如果不幸的是1和2的分类标签还是相反的,那么,当我们用梯度下降来做分类模型训练时,模型会需要更长的时间收敛,因为将样本分开需要更大的努力!而标准化在这方面就做得很好,至少它不会将样本“挤到一起”。

  • 2、 标准化更符合统计学假设

对一个数值特征来说,很大可能它是服从正态分布的。标准化其实是基于这个隐含假设,只不过是略施小技,将这个正态分布调整为均值为0,方差为1的标准正态分布而已。

什么时候用归一化?什么时候用标准化?

回答1

如果对 输入结果有范围要求,用归一化;

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

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

一般来说,作者建议先用标准化 。在对输出有要求时再尝试归一化或别的方法。很多方法都可以将输出调整到0-1,如果对于数据的分布有假设的话,更加有效的方法是使用相对应的概率密度函数来转换。

回答2

主要看模型是否具有伸缩不变性。
有些模型在各个维度进行不均匀伸缩后,最优解与原来不等价,例如SVM。对于这样的模型,除非本来各维数据的分布范围就比较接近,否则必须进行标准化,以免模型参数被分布范围较大或较小的数据dominate。

有些模型在各个维度进行不均匀伸缩后,最优解与原来等价,例如logistic regression。对于这样的模型,是否标准化理论上不会改变最优解。但是,由于实际求解往往使用迭代算法,如果目标函数的形状太“扁”,迭代算法可能收敛得很慢甚至不收敛。所以对于具有伸缩不变性的模型,最好也进行数据标准化。

哪些模型必须归一化/标准化?

(1)SVM

不同的模型对特征的分布假设是不一样的。比如SVM 用高斯核的时候,所有维度共用一个方差,这不就假设特征分布是圆的么,输入椭圆的就坑了人家,所以简单的归一化都还不够好,来杯白化才有劲。比如用树的时候就是各个维度各算各的切分点,没所谓。

(2)KNN,Kmeans

需要度量距离的模型,一般在特征值差距较大时,都会进行标准化。不然会出现“大数吃小数”。

(3)神经网络

- 数值问题

归一化/标准化可以避免一些不必要的数值问题。输入变量的数量级未致于会引起数值问题吧,但其实要引起也并不是那么困难。因为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,会发现不相等,这就是一个数值问题。

- 求解需要

a. 初始化:在初始化时我们希望每个神经元初始化成有效的状态,tansig函数在[-1.7, 1.7]范围内有较好的非线性,所以我们希望函数的输入和神经元的初始化都能在合理的范围内使得每个神经元在初始时是有效的。(如果权值初始化在[-1,1]且输入没有归一化且过大,会使得神经元饱和)

b. 梯度:以输入-隐层-输出这样的三层BP为例,我们知道对于输入-隐层权值的梯度有2ew(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

一般使用标准化。另外,在分类、聚类算法中,需要使用距离来度量相似性时,标准化效果更好。

逻辑回归必须要进行标准化吗?

无论回答必须或者不必须,答案都是错的。

真正的答案是,这取决于逻辑回归是不是用正则。

如果不用正则,那么标准化不是必须的,如果用正则,标准化是必须的。(暗坑3)

因为不用正则时,我们的损失函数 只是仅仅 在度量 预测与真实的差距 ,加上正则后,我们的损失函数除了要度量上面的差距外,还要度量 参数值 是否足够小。而 参数值的大小程度或者说大小的级别是与特征的数值范围 相关的。举例来说,我们用体重预测身高,体重用kg衡量时,训练出的模型是

身高 = 体重 * x

x就是我们训练出来的参数。

当我们的体重用吨来衡量时,x的值就会扩大为原来的1000倍。

在上面两种情况下,都用L1正则的话,显然对模型的训练影响是不同的。
假如不同的特征的数值范围不一样,有的是0到0.1,有的是100到10000,那么,每个特征对应的参数大小级别也会不一样,在 L1正则 时,我们是简单将参数的绝对值相加,因为它们的大小级别不一样,就会导致L1最后只会对那些级别比较大的参数有作用,那些小的参数都被忽略了。

如果你回答到这里,面试官应该基本满意了,但是他可能会进一步考察你, 如果不用正则,那么标准化对逻辑回归有什么好处吗
答案是有好处,进行标准化后,我们得出的参数值的大小可以反映出不同特征对样本label的 贡献度 ,方便我们进行特征筛选。如果不做标准化,是不能这样来筛选特征的。

答到这里,有些厉害的面试官可能会继续问, 做标准化有什么注意事项吗

最大的注意事项就是先拆分出test集,不要在整个数据集上做标准化,因为 那样会将test集的信息引入到训练集中 ,这是一个非常容易犯的错误!

参考文章

https://www.jianshu.com/p/4c3081d40ca6

特征工程中的「归一化」有什么作用?

在进行数据分析的时候,什么情况下需要对数据进行标准化处理?

标准化和归一化

标准化和归一化,请勿混为一谈,透彻理解数据变换

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/670949
推荐阅读
相关标签
  

闽ICP备14008679号