三种数据标准化方法的对比:StandardScaler、MinMaxScaler、RobustScaler

一、数据标准化 / 归一化的作用

  • 提升模型精度:标准化 / 归一化使不同维度的特征在数值上更具比较性,提高分类器的准确性。
  • 提升收敛速度:对于线性模型,数据归一化使梯度下降过程更加平缓,更易正确的收敛到最优解。

二、标准差标准化 StandardScaler

from sklearn.preprocessing import StandardScaler

使用均值与方差,对服从正态分布的数据处理,得到符合标准正态分布的数据

  • 处理方法:标准化数据减去均值,然后除以标准差,经过处理后数据符合标准正态分布,即均值为0,标准差为1;
  • 转化函数:x = (x-mean) / std;
  • 适用性:适用于本身服从正态分布的数据;
  • Outlier 的影响:基本可用于有outlier的情况,但在计算方差和均值时outliers仍然会影响计算。

参数包括:with_mean, with_std, copy

  • with_mean:布尔型,默认为 True,表示在缩放前将数据居中,当尝试在稀疏矩阵上时,这不起作用(并且会引发异常),因为将它们居中需要构建一个密集矩阵,在常见的用例中,该矩阵可能太大而无法容纳在内存中;
  • with_std:布尔型,默认为True,表示将数据换算成单位方差(或等效的单位标准差);
  • copy : 布尔值,默认为True,可选参数,表示拷贝一份数据以避免在原数据上进行操作,若设置为 False 执行插入行规范化并避免复制。

属性包括:mean_, scale_, var_, n_samples_seen_

  • mean_:训练集中每个特征的平均值,当_mean=False时,为None;
  • scale_:每个特征数据的相对缩放;
  • var_:训练集中每个特征的方差,用于计算比例,当_ std =False时,为None;
  • n_samples_seen_:每个特征处理的样本数。如没有丢失的样本,n_samples_seen_是一个整数,否则是一个数组,并将被重置或递增。

三、极差标准化 / 归一化 MinMaxScaler

from sklearn.preprocessing import MinMaxScaler

区间缩放,基于最大最小值,将数据转换到0,1区间上的

  • 处理方法:将特征缩放到给定的最小值和最大值之间,也可以将每个特征的最大绝对值转换至单位大小。这种方法是对原始数据的线性变换,将数据归一到[0,1]中间;
  • 转换函数:x = (x-min) / (max-min);
  • 适用性:适用于分布范围较稳定的数据,当新数据的加入导致max/min变化,则需重新定义;
  • Outlier 的影响:因为outlier会影响最大值或最小值,因此对outlier非常敏感。

参数包括:min, max, copy

  • min:默认为0,指定区间的下限;
  • max:默认为1,指定区间的上限;
  • copy : 布尔值,默认为True,可选参数,表示拷贝一份数据以避免在原数据上进行操作,若设置为 False 执行插入行规范化并避免复制。

属性包括:min_, scale_, data_min_, data_max_

  • min_:每个功能调整为最小;
  • scale_:每个特征数据的相对缩放;
  • data_min_:每个特征在数据中出现的最小值;
  • data_max_:每个特征在数据中心出现的最大值。

四、稳健标准化 RobustScaler

from sklearn.preprocessing import RobustScaler

使用具有鲁棒性的统计量缩放带有异常值(离群值)的数据

  • 处理方法:该缩放器删除中位数,并根据百分位数范围(默认值为IQR:四分位间距)缩放数据;
  • IQR:是第1个四分位数(25%)和第3个四分位数(75%)之间的范围;
  • 适用性:适用于包含许多异常值的数据;
  • Outlier 的影响:RobustScaler 利用IQR进行缩放来弱化 outlier 的影响。

参数包括:with_centering, with_scaling, quantile_range, copy

  • with_centering:布尔值,默认为 True,表示在缩放之前将数据居中。若使用稀疏矩阵时,这将导致转换引发异常,因为将它们居中需要建立一个密集的矩阵,在通常的使用情况下,该矩阵可能太大而无法容纳在内存中;
  • with_scaling : 布尔值,默认为True,表示将数据缩放到四分位数范围;
  • quantile_range : 元组,默认值为(25.0, 75.0)即 IQR,表示用于计算 scale_的分位数范围;
  • copy : 布尔值,默认为True,可选参数,表示拷贝一份数据以避免在原数据上进行操作,若设置为 False 执行插入行规范化并避免复制。

属性包括:center_, scale_

  • center_ :训练集中每个属性的中位数;
  • scale_ :训练集中每个属性的四分位间距。

五、总结

  • 在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,StandardScaler表现更好(避免不同量纲对方差、协方差计算的影响);
  • 在不涉及距离度量、协方差、数据不符合正态分布、异常值较少的时候,可使用MinMaxScaler。(eg:图像处理中,将RGB图像转换为灰度图像后将其值限定在 [0, 255] 的范围);
  • 在带有的离群值较多的数据时,推荐使用RobustScaler。

参考文章:
1. 数据标准化/归一化normalization
2. 机器学习中数据预处理——标准化/归一化方法(scaler)
3. 缩放有离群值的数据 sklearn.preprocessing.RobustScaler
4. 标准化数据-StandardScaler

你可能感兴趣的:(三种数据标准化方法的对比:StandardScaler、MinMaxScaler、RobustScaler)