标准化和归一化处理
1.概念与机理
许多学习算法中成本/损失/目标函数的基础都是假设所有的特征都是零均值并且具有同一阶数上的方差。 如果某个特征的方差比其他特征大几个数量级,那么它就会在学习算法中占据主导位置,从而导致其它特征被淹没。 例如:在KNN中需要计算样本之间的距离,选用的距离度量为欧式距离。如果直接计算,则绝对值大的特征在距离计算的时候起决定性作用,而绝对值较小的特征几乎被忽略。 因此,当存在阶数差异的多个特征时,就有必要进行处理,而标准化和归一化提供了相应的方法。 标准化和归一化的优点:
- 提升模型的收敛速度:最优解的寻优过程明显会变得平缓,更容易正确的收敛到最优解
- 提升模型的精度:不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。
- 深度学习中数据归一化可以防止模型梯度爆炸
2.流程与方法
(1)归一化
- 对数据的数值范围进行特定缩放,但不改变其数据分布的一种线性特征变换
- 最大最小归一化(又称离差归一化):
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)?
- 特点
- 使结果值映射到
[
0
,
1
]
[0,1]
[0,1]之间
- max和min的取值本身可能不合理(例如异常值等),很容易使得归一化效果差。实际使用中可以用经验常量来替代max和min
- 例如三个样本特征值为1,2,10000,归一化会导致1, 2两个特征值“挤”在一起
- 假设1和2的结果(标签)不同,则会给模型训练带来巨大困难:模型会需要更长的时间收敛,因为这两个样本很难分开
- 应用场景:在不涉及距离度量、协方差计算、数据不符合正太分布时
(2)标准化
- 对数据的分布的进行转换,使其符合某种分布(比如正态分布)的一种非线性特征变换
- Z-Score标准化(最常见的标准化方法):
x
′
=
x
?
μ
σ
x' = \frac{x -\mu}{\sigma}
x′=σx?μ?
-
x
x
x为某个特征序列(含若干个样本)
-
μ
\mu
μ为该特征在所有样本中的平均值
-
σ
\sigma
σ为所有样本数据的标准差
- 特点
- 经过Z-Score标准化处理后,该特征将符合标准正态分布,即均值为0,标准差为1
- Z-Score要求原始数据的分布可以近似为正态分布,否则标准化的效果会很差。而自然界的数值特征很大可能性是服从正态分布的,因此使用标准化更可能符合这个假设
- 标准化更好保持了样本间距,尤其是当样本中有异常点时
- 应用场景:在分类、聚类算法中,需要使用距离来度量相似性时;或者使用PCA技术进行降维时
3.技术与实现
最大最小归一化:sklearn.preprocessing.MinMaxScaler
标准化:sklearn.preprocessing.StandardScaler
|