归一化和标准化大全

作者: owolf | 来源:发表于2018-12-24 22:25 被阅读1次

    本人对这两个理解不是很深入,看了下面这些大佬的回答,还是模模糊糊,略懂一二。

    一、知乎高赞回答

    1、特征工程中的「归一化」有什么作用?

    微调大佬的回答:


    from sklearn import preprocessing
    from scipy.stats import rankdata
    x = [[1], [3], [34], [21], [10], [12]]
    std_x = preprocessing.StandardScaler().fit_transform(x)
    norm_x = preprocessing.MinMaxScaler().fit_transform(x)
    print('原始顺序  :', rankdata(x))
    print('标准化顺序:', rankdata(std_x))
    print('归一化顺序:', rankdata(norm_x))
    

    忆臻博士的回答:



    王赟 Maigo大佬回答:

    在进行数据分析的时候,什么情况下需要对数据进行标准化处理?


    对数据做PCA,之前考虑归一化,突然想到应该是对每一维特征做归一化然后合起来还是直接对整个特征矩阵归一化?



    二、其他一些观点

    标准化:
    是将数据按比例缩放,使之落入一个小的特定区间。由于信用指标体系的各个指标度量单位是不同的,为了能够将指标参与评价计算,需要对指标进行规范化处理,通过函数变换将其数值映射到某个数值区间。

    归一化:
    (1)把数据变成(0,1)或者(1,1)之间的小数。主要是为了数据处理方便提出来的,把数据映射到0~1范围之内处理,更加便捷快速。
    (2)把有量纲表达式变成无量纲表达式,便于不同单位或量级的指标能够进行比较和加权。归一化是一种简化计算的方式,即将有量纲的表达式,经过变换,化为无量纲的表达式,成为纯量。归一化的依据非常简单,不同变量往往量纲不同,归一化可以消除量纲对最终结果的影响,使不同变量具有可比性。比如两个人体重差10KG,身高差0.02M,在衡量两个人的差别时体重的差距会把身高的差距完全掩盖,归一化之后就不会有这样的问题。

    如果把所有维度的变量一视同仁,在最后计算距离中发挥相同的作用应该选择标准化,如果想保留原始数据中由标准差所反映的潜在权重关系应该选择归一化。另外,标准化更适合现代嘈杂大数据场景。

    归一化的好处

    1. 提升模型的收敛速度
      如下图,x1的取值为0-2000,而x2的取值为1-5,假如只有这两个特征,对其进行优化时,会得到一个窄长的椭圆形,导致在梯度下降时,梯度的方向为垂直等高线的方向而走之字形路线,这样会使迭代很慢,相比之下,右图的迭代就会很快


    2.提升模型的精度
    归一化的另一好处是提高精度,这在涉及到一些距离计算的算法时效果显著,比如算法要计算欧氏距离,上图中x2的取值范围比较小,涉及到距离计算时其对结果的影响远比x1带来的小,所以这就会造成精度的损失。所以归一化很有必要,他可以让各个特征对结果做出的贡献相同。

    概率模型(树形模型)不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF。因为决策树中的切分依据,信息增益、信息增益比、Gini指数都是基于概率得到的,和值的大小没有关系。另外同属概率模型的朴素贝叶斯,隐马尔科夫也不需要标准化。而像Adaboost、SVM、LR、Knn、KMeans之类的最优化问题就需要归一化。

    三、逻辑回归必须要进行标准化吗?

    如果你不用正则,那么,标准化并不是必须的,如果你用正则,那么标准化是必须的。
    为什么呢?
    因为不用正则时,我们的损失函数只是仅仅在度量预测与真实的差距,加上正则后,我们的损失函数除了要度量上面的差距外,还要度量参数值是否足够小。而参数值的大小程度或者说大小的级别是与特征的数值范围相关的。举例来说,我们用体重预测身高,体重用kg衡量时,训练出的模型是:
    身高 = 体重*x
    x就是我们训练出来的参数。
    当我们的体重用吨来衡量时,x的值就会扩大为原来的1000倍。
    在上面两种情况下,都用L1正则的话,显然对模型的训练影响是不同的。
    假如不同的特征的数值范围不一样,有的是0到0.1,有的是100到10000,那么,每个特征对应的参数大小级别也会不一样,在L1正则时,我们是简单将参数的绝对值相加,因为它们的大小级别不一样,就会导致L1最后只会对那些级别比较大的参数有作用,那些小的参数都被忽略了。

    四、补充

    数据预处理的归一化手段应该如何应用到训练集,测试集和验证集中?
    两个问题,第一个假如先把数据划分成训练集和测试集,我在训练集上对所有变量归一化后,比如用均值方差归一化,那我在测试集上归一化的时候用的均值方差都是训练集中的还是在测试集上用自身的均值方差。第二个问题是归一化手段有很多,均值方差归一化,最大最小归一化,那我怎么去区分这些归一化手段的不同,就是什么时候用均值方差归一化什么时候用最大最小归一化,这些不同的归一化手段会对我的结果产生影响吗?如果有影响我又该如何去针对数据选择合适的归一化手段?
    回答一:




    回答二:

    感觉看完是不是似懂又非懂的感觉?

    转载:https://www.jianshu.com/p/95a8f035c86c
    https://www.zhihu.com/question/20455227
    https://www.jianshu.com/p/4c3081d40ca6

    相关文章

      网友评论

        本文标题:归一化和标准化大全

        本文链接:https://www.haomeiwen.com/subject/oquzkqtx.html