前言
数据一般都是有单位的,比如身高的单位有米、厘米等。需要对此类数值型特征进行无量纲化处理,即是使不同规格的数据转换到同一规格。常见的无量纲化方法有标准化和归一化。
主要参考:机器学习算法:特征工程
一、数据标准化(Standardization)
1.为什么使用数据标准化?
- 某些算法要求样本具有0均值和1方差,即需要样本满足标准正态分布。
- 需要消除样本不同属性具有不同量级时的影响。例如,数量级的差异将导致量级较大的属性占据主导地位,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要);当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走),从而导致需要迭代很多次才能收敛;依赖于样本距离的算法对于数据的数量级非常敏感。
2.数据标准化定义
数据标准化公式如下:
x
‾
=
1
n
∑
i
=
1
n
x
i
s
t
d
(
x
)
=
∑
i
=
1
n
(
x
i
−
x
‾
)
2
n
−
1
\overline{x}=\frac{1}{n}\sum^n_{i=1}x_i \\std(x)=\sqrt{\frac{\sum^n_{i=1}(x_i-\overline{x})^2}{n-1}}
x=n1i=1∑nxistd(x)=n−1∑i=1n(xi−x)2
标准化的前提是特征值服从正态分布,标准化后,其转换成标准正态分布。均值和标准差都是在样本集上定义的,而不是在单个样本上定义的。标准化是针对某个属性的,需要用到所有样本在该属性上的值。
3.实现代码
from sklearn.preprocessing import StandardScaler
#标准化,返回值为标准化后的数据
standardScaler = StandardScaler().fit(X_train)
standardScaler.transform(X_train)
二、数据归一化
1.MinMax归一化
区间缩放法利用了边界值信息,将属性缩放到[0,1]。计算公式如下:
x
i
−
m
i
n
(
x
)
m
a
x
(
x
)
−
m
i
n
(
x
)
\frac{x_i-min(x)}{max(x)-min(x)}
max(x)−min(x)xi−min(x)
这种方法有一个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义;另外,MinMaxScaler对异常值的存在非常敏感。
2.代码实现
from sklearn.preprocessing import MinMaxScaler
#区间缩放,返回值为缩放到[0, 1]区间的数据
minMaxScaler = MinMaxScaler().fit(X_train)
minMaxScaler.transform(X_train)
3.MaxAbs归一化
单独地缩放和转换每个特征,使得训练集中的每个特征的最大绝对值将为1.0,将属性缩放到[-1,1]。它不会移动/居中数据,因此不会破坏任何稀疏性。
x
i
m
a
x
(
x
)
\frac{x_i}{max(x)}
max(x)xi文章来源:https://www.toymoban.com/news/detail-696412.html
三、标准化与归一化对比
1.标准化与归一化的异同
- 相同点:它们的相同点在于都能取消由于量纲不同引起的误差;都是一种线性变换,都是对向量X按照比例压缩再进行平移。
- 不同点:一是目的不同,归一化是为了消除纲量压缩到[0,1]区间;标准化只是调整特征整体的分布。二是归一化与最大,最小值有关;标准化与均值,标准差有关。三是归一化输出在[0,1]之间,标准化无限制。
2.什么时候用归一化?什么时候用标准化?
- 如果对输出结果范围有要求,用归一化。
- 如果数据较为稳定,不存在极端的最大最小值,用归一化。
- 如果数据存在异常值和较多噪音,用标准化,可以间接通过中心化避免异常值和极端值的影响。
3.归一化与标准化的应用场景
- 在分类、聚类算法中,需要使用距离来度量相似性的时候(如SVM、KNN)、或者使用PCA技术进行降维的时候,标准化(Z-score standardization)表现更好。
- 在不涉及距离度量、协方差计算、数据不符合正太分布的时候,可以使用第一种方法或其他归一化方法。比如图像处理中,将RGB图像转换为灰度图像后将其值限定在[0, 255]的范围。
- 基于树的方法不需要进行特征的归一化。例如随机森林,bagging与boosting等方法。
- 基于参数的模型或者基于距离的模型需要归一化。因为基于参数的模型或者基于距离的模型,需要对参数或者距离进行计算,都需要进行归一化。
- 一般来说,建议优先使用标准化。对于输出有要求时再尝试别的方法,如归一化或者更加复杂的方法。很多方法都可以将输出范围调整到[0, 1],如果我们对于数据的分布有假设的话,更加有效的方法是使用相对应的概率密度函数来转换。
- 除了上面介绍的方法外,还有一些相对没这么常用的处理方法:RobustScaler、PowerTransformer、QuantileTransformer和QuantileTransformer等。
总结
需要特别注意,除了去除量钢化需要归一化或标准化,还需考虑基于参数的模型或者基于距离的模型,需要对参数或者距离进行计算,都需要进行归一化。文章来源地址https://www.toymoban.com/news/detail-696412.html
到了这里,关于数据标准化与归一化 及其区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!