赞
踩
首先根据维基百科(参考[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)这就会让模型感到迷惑,不利于机器学习模型的学习,所以需要对该列数据进行缩放。(将数据大小控制在一个合理的范围)。在随机梯度下降法中, 特征缩放有时能加速其收敛速度。而在支持向量机中,他可以使其花费更少时间找到支持向量,特征缩放会改变支持向量机的结果。
有四种方法,分别是
除了维基百科上给出的四种,还有一些不太常见但是有用的方法,下面会列举一些
针对一个数据维度的操作。(例:可以简单的认为就是对DataFrame中一列进行操作)将数据范围缩放至[0,1]或者[-1,1]。将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。
对应于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)x−min(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=180−90120−90=30/90=0.333
x
2
=
180
−
90
180
−
90
=
90
/
90
=
1
x_2=\frac{180-90}{180-90}=90/90=1
x2=180−90180−90=90/90=1
x
3
=
90
−
90
180
−
90
=
0
/
90
=
0
x_3=\frac{90-90}{180-90}=0/90=0
x3=180−9090−90=0/90=0
这样数据就被缩放至[0,1]。数据间的差从80→1,
某些时候,当数据中含有负值时,我们可能希望将数据映射到[-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)x−average(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)=38,min(x)=−40,mean(x)=−4:
x
1
=
−
10
+
4
)
38
+
40
=
−
6
/
78
x_1=\frac{-10+4)}{38+40}=-6/78
x1=38+40−10+4)=−6/78
x
2
=
−
40
+
4
38
+
40
=
−
36
/
78
x_2=\frac{-40+4}{38+40}=-36/78
x2=38+40−40+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′=σx−mean(x)
其中,这里的
x
x
x也代表的是一个向量,一组数 array,
σ
\sigma
σ表示
x
x
x这个向量的方差
z-score标准化方法适用于特征最大值和最小值未知的情况,或有超出取值范围的离群数据的情况。该种归一化方式要求原始数据的分布可以近似为高斯分布,否则归一化的效果会变得很糟糕。
缩放特征向量的分量,使得整个向量的长度为1。 这通常意味着将该向量的每个元素除以向量的欧几里德长度,公式表示为:
x
′
=
x
∣
∣
x
∣
∣
x^{'}=\frac{x}{||x||}
x′=∣∣x∣∣x
这种方式网上没有找到很多例子。
线性变换:
上面说的min-max normalization和 Mean normalization 都属于线性变换,简单直接。缺点就是新数据的加入,可能会因数值范围的扩大需要重新计算。
非线性变换:
为什么要标准化
在实际应用中使用机器学习的方法,由于数据会有多个维度,假设一个数据集有5种特征,其中4种数据都比较规则,均值为0,方差在一个数量级上(比如,都在10以下),如果另一种数据的方差比其它四种大一个数量级(比如,100多),那么这个数据可能就会主导目标函数,使得模型无法像预期的那样正确对待其他数据特征。
标准化被广泛用作许多学习算法中的预处理步骤,用来将特征缩放到零均值和单位方差(例如:normally distributed data (e.g. Gaussian with 0 mean and unit variance)正态分布数据(零均值和单位方差的高斯分布))。
其他可以参考链接10,写的很清楚
参考链接:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。