特征归一化/标准化

1. 为什么要做特征归一化/标准化?

数据预处理中,通常会用到特征归一化,为什么要做归一化呢?一般有两点:

  • 消除特征间单位和尺度差异的影响
    特征间的单位(尺度)可能不同。比如身高和体重,比如摄氏度和华氏度,比如房屋面积和房间数,一个特征的变化范围可能是[1000, 10000],另一个特征的变化范围可能是[-0.1, 0.2],在进行距离有关的计算时,单位的不同会导致计算结果的不同,尺度大的特征会起决定性作用,而尺度小的特征其作用可能会被忽略,为了消除特征间单位和尺度差异的影响,以对每维特征同等看待,需要对特征进行归一化。

  • 加速模型收敛速度
    原始特征下,因尺度差异,其损失函数的等高线图可能是椭圆形,梯度方向垂直于等高线,下降会走zigzag路线,而不是指向local minimum。通过对特征进行zero-mean and unit-variance变换后,其损失函数的等高线图更接近圆形,梯度下降的方向震荡更小,收敛更快,如下图所示,图片来自Andrew Ng。


    图1

2. 常用的feature scaling方法

待补充。

3. 什么情况下需要做归一化?

  • 涉及或隐含距离计算的算法,比如K-means、KNN、PCA、SVM等
  • 损失函数中有正则项,比如l_1/l_2正则,目的也是为了消除不同特征的差异
  • 梯度下降优化算法。
    模型收敛的速度取决于参数的初始位置到local minima的距离,以及学习率的大小。收敛意味着在每个参数维度上都取得极小值,每个参数维度上的偏导数都为0,但是每个参数维度上的下降速度是不同的,为了每个维度上都能收敛,学习率应取所有维度在当前位置合适步长中最小的那个(学习率是多维度共享的)。
不需要做归一化的情况
  • 与距离计算无关的概率模型,不需要feature scaling,比如Naive Bayes;
  • 与距离计算无关的基于树的模型,不需要feature scaling,比如决策树、随机森林等,树中节点的选择只关注当前特征在哪里切分对分类更好,即只在意特征内部的相对大小,而与特征间的相对大小无关。

参考资料

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容