归一化(normalization)、标准化(standardization)以及正则化(regularization)比较

概括

首先根据维基百科(参考[3])中所说,归一化(normalization)和标准化(standardization)都属于特征缩放(feature scaling)的方法,用于数据预处理过程。而正则化一般用于解决过拟合的问题,用于模型训练过程中。

术语混淆

其实归一化和标准化都是对数据的操作,“标准化”这个词有时候指的是对数据的操作,但是有时候表示对数据进行处理的概念,"归一化 正则化"同理。网上很多术语混用,因为不仅有计算机的人使用,还有统计学的,所以存在术语混淆,不要纠结这些东西,落实到原理和代码就好了
sklearn-Preprocessing data-Standardization, or mean removal and variance scaling中,可以看到这里的standardization就是代表对数据进行处理的统称。

normalize/standardize/rescale standardization的使用也是混淆的

wiki→Standardization中也有对normalization的混用,normalization也有人翻译其为正则化……

特征缩放

在机器学习中,如果某列数据极差很大(比如,微博粉丝数目,最大400w,最小30)这就会让模型感到迷惑,不利于机器学习模型的学习,所以需要对该列数据进行缩放。(将数据大小控制在一个合理的范围)。在随机梯度下降法中, 特征缩放有时能加速其收敛速度。而在支持向量机中,他可以使其花费更少时间找到支持向量,特征缩放会改变支持向量机的结果。

有四种方法,分别是

  1. Rescaling (min-max normalization)离差标准化
  2. Mean normalization 均值归一化
  3. Standardization 标准差标准化(这里wiki上有术语混淆)
  4. Scaling to unit length 缩放至单位长度

除了维基百科上给出的四种,还有一些不太常见但是有用的方法,下面会列举一些

归一化(normalization)

针对一个数据维度的操作。(例:可以简单的认为就是对DataFrame中一列进行操作)将数据范围缩放至[0,1]或者[-1,1]。将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。

Rescaling (min-max normalization)

对应于sklearn.preprocessing.MinMaxScale(默认将值缩放至[0,1)。也称为最小 - 最大缩放或最小 - 最大归一化,是最简单的方法。 一般公式如下(这里的x是一个数组array):
x ′ = x − m i n ( x ) m a x ( x ) − m i n ( x ) x^{'}= \frac{x-min(x)}{max(x)-min(x)} x=max(x)min(x)xmin(x)
例如:假设小明一家人的体重分别为[120,180,90],则归一化后就是:
x 1 = 120 − 90 180 − 90 = 30 / 90 = 0.333 x_1=\frac{120-90}{180-90}=30/90=0.333 x1=1809012090=30/90=0.333
x 2 = 180 − 90 180 − 90 = 90 / 90 = 1 x_2=\frac{180-90}{180-90}=90/90=1 x2=1809018090=90/90=1
x 3 = 90 − 90 180 − 90 = 0 / 90 = 0 x_3=\frac{90-90}{180-90}=0/90=0 x3=180909090=0/90=0
这样数据就被缩放至[0,1]。数据间的差从80→1,

Mean normalization 均值归一化

某些时候,当数据中含有负值时,我们可能希望将数据映射到[-1,1]的范围,那么这时可以使用均值归一化。就是把上式分母中的最小值变成均值( μ \mu μ),公式如下:
x ′ = x − a v e r a g e ( x ) m a x ( x ) − m i n ( x ) x^{'}= \frac{x-average(x)}{max(x)-min(x)} x=max(x)min(x)xaverage(x)
例如:黑龙江地区一年的温差很大,假设一年中抽取了三天,温度分别为-10,-40,38,则对[-10,-40,38]使用均值归一化, m a x ( x ) = 38 , m i n ( x ) = − 40 , m e a n ( x ) = − 4 max(x)=38,min(x)=-40,mean(x)=-4 max(x)=38min(x)=40,mean(x)=4
x 1 = − 10 + 4 ) 38 + 40 = − 6 / 78 x_1=\frac{-10+4)}{38+40}=-6/78 x1=38+4010+4)=6/78
x 2 = − 40 + 4 38 + 40 = − 36 / 78 x_2=\frac{-40+4}{38+40}=-36/78 x2=38+4040+4=36/78
x 3 = 38 + 4 38 + 40 = 42 / 78 x_3=\frac{38+4}{38+40}=42/78 x3=38+4038+4=42/78
可以看到,将三个均值归一化之后的结果进行相加,结果为0。即,均值归一化可以让特征具有为0的平均值

标准差标准化

z-score 标准化(zero-mean normalization),最常见的标准化方法就是Z标准化,也是SPSS中最为常用的标准化方法,spss默认的标准化方法就是z-score标准化。也叫标准差标准化,这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1. 一般的计算方法是确定每个特征的分布均值和标准差。 接下来从每个特征中减去平均值,将每个特征的值(平均值已被减去)除以其标准差。公式表示如下:
x ′ = x − m e a n ( x ) σ x^{'}=\frac{x-mean(x)}{\sigma} x=σxmean(x)
其中,这里的 x x x也代表的是一个向量,一组数 array, σ \sigma σ表示 x x x这个向量的方差

z-score标准化方法适用于特征最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。该种归一化方式要求原始数据的分布可以近似为高斯分布,否则归一化的效果会变得很糟糕。

Scaling to unit length

缩放特征向量的分量,使得整个向量的长度为1。 这通常意味着将该向量的每个元素除以向量的欧几里德长度,公式表示为:
x ′ = x ∣ ∣ x ∣ ∣ x^{'}=\frac{x}{||x||} x=xx
这种方式网上没有找到很多例子。

其他归一化方式

线性变换
上面说的min-max normalization和 Mean normalization 都属于线性变换,简单直接。缺点就是新数据的加入,可能会因数值范围的扩大需要重新计算。
非线性变换

  1. 对数归一化:x’=log10(x)/log10(xmax)或者log10(x)。推荐第一种,除以最大值,这样使数据落到【0,1】区间
  2. 反正切归一化。x’=2atan(x)/pi。能把数据投影到【-1,1】区间。
  3. zero mean normalization归一化,也是standardization. x’=(x-mean)/std.

Standardization(标准化)

为什么要标准化
在实际应用中使用机器学习的方法,由于数据会有多个维度,假设一个数据集有5种特征,其中4种数据都比较规则,均值为0,方差在一个数量级上(比如,都在10以下),如果另一种数据的方差比其它四种大一个数量级(比如,100多),那么这个数据可能就会主导目标函数,使得模型无法像预期的那样正确对待其他数据特征。

标准化被广泛用作许多学习算法中的预处理步骤,用来将特征缩放到零均值和单位方差(例如:normally distributed data (e.g. Gaussian with 0 mean and unit variance)正态分布数据(零均值和单位方差的高斯分布))。

其他可以参考链接10,写的很清楚

参考链接:

  1. https://maristie.com/blog/differences-between-normalization-standardization-and-regularization/
  2. https://www.jianshu.com/p/95a8f035c86c
  3. https://en.wikipedia.org/wiki/Feature_scaling
  4. https://zhuanlan.zhihu.com/p/29974820
  5. http://webdataanalysis.net/data-analysis-method/data-normalization/
  6. https://blog.csdn.net/GoodShot/article/details/79925164
  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吨吨不打野

解决了问题,觉得还行就给点

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值