标准化和归一化


作者:Seiya

时间:2020 年 09 月 23 日



概念



  • 标准化(Standardization)

    将一列数据变化到某个固定区间(范围)中,通常,这个区间是[0, 1],广义的讲,可以是各种区间,比如映射到[0, 1]一样可以继续映射到其他范围,图像中可能会映射到[0, 255],其他情况可能映射到[-1, 1]

    • 公式

      x=xmin(x)max(x)min(x)x^\prime = \frac{x - min(x)}{max(x) - min(x)}


  • 归一化(Normalization)

    将数据变换为均值为 0,标准差为 1 的分布(切记,并非一定是正态的

    • 公式

      x=xiuσx^\prime = \frac{x _i - u}{\sigma}


  • 中心化

    也叫零均值处理,就是将每个原始数据减去这些数据的均值。



联系和差异



  • 联系

    Standardization 和 Normalization 本质上都是对数据的线性变换。


  • 差异

    • 标准化会严格的限定变换后数据的范围,比如按之前最大最小值处理的,它的范围严格在[0 , 1]之间;

    • 归一化对数据的缩放比例仅仅和极值有关;



标准化和归一化的多种方式



  • Normalization(线性归一化)

    x=ximin(x)max(x)min(x)x^\prime = \frac{x _i - min(x)}{max(x) - min(x)} (范围:[0 , 1]


  • Mean Normalization

    x=ximean(x)max(x)min(x)x^\prime = \frac{x _i - mean(x)}{max(x) - min(x)} (范围:[-1 , 1]


  • Standardization

    x=xiuσx^\prime = \frac{x _i - u}{\sigma} (范围:实数集)



标准化、归一化的原因和用途



  • 统计建模中,如回归模型,自变量 X XX 的量纲不一致导致了回归系数无法直接解读或者错误解读;需要将 X XX 都处理到统一量纲下,这样才可比;

  • 机器学习任务和统计学任务中有很多地方要用到“距离”的计算,比如 PCA,比如 KNN,比如 kmeans 等等,假使算欧式距离,不同维度量纲不同可能会导致距离的计算依赖于量纲较大的那些特征而得到不合理的结果;

  • 参数估计时使用梯度下降,在使用梯度下降的方法求解最优化问题时, 归一化/标准化后可以加快梯度下降的求解速度,即提升模型的收敛速度。



标准化、归一化的使用



  • 如果对处理后的数据范围有严格要求,那肯定是归一化;

  • 标准化是 ML 中更通用的手段,如果无从下手,可以直接使用标准化;

  • 如果数据不为稳定,存在极端的最大最小值,不要用归一化;

  • 在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用 PCA 技术进行降维的时候,标准化表现更好;

  • 在不涉及距离度量、协方差计算的时候,可以使用归一化方法;


所有情况都应当 Standardization 或 Normalization 么?

当原始数据不同维度特征的尺度(量纲)不一致时,需要标准化步骤对数据进行标准化或归一化处理,反之则不需要进行数据标准化。

也不是所有的模型都需要做归一的,比如模型算法里面有没关于对距离的衡量,没有关于对变量间标准差的衡量。比如决策树,他采用算法里面没有涉及到任何和距离等有关的,所以在做决策树模型时,通常是不需要将变量做标准化的。

另外,概率模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率。



一些其他的数据变换方式



  • log 变换

    x=log10(xi)/log10(xmax)x^\prime = log _{10}(x _i) / log _{10}(x _{max})


  • sigmoid 变换

    x=11+ex1x^\prime = \frac{1}{1 + e^-{x _1}}


  • softmax 变换

    x=exiexix^\prime = \frac{e^{x _i}}{\sum^{e^{x _i}}}


  • boxcox 变换

    boxcox 变换主要是降低数据的偏度,通常回归模型残差非正态或异方差的时候,会选择对 y 做 boxcox 变换,降低 y 的偏度,让 y 更接近正态。