Sklearn之数据预处理——StandardScaler归一化

文章目录

  • 为什么要进行归一化?
    • 维基百科给出的解释:
    • 我的理解:
  • 哪些机器学习算法不需要(需要)做归一化?
    • 下面列举一下常用的归一化方法以及各种方法的使用场景。
      • 1.线性函数归一化
      • 2.零均值标准化
      • 3.非线性归一化

为什么要进行归一化?

机器学习模型被互联网行业广泛应用,一般做机器学习应用的时候大部分时间是花费在特征处理上,其中很关键的一步就是对特征数据进行归一化,为什么要归一化呢?

维基百科给出的解释:

  1. 归一化后加快了梯度下降求最优解的速度;

如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。

  1. 归一化有可能提高精度;

一些分类器需要计算样本之间的距离(如欧氏距离),例如KNN。如果一个特征值域范围非常大,那么距离计算就主要取决于这个特征,从而与实际情况相悖(比如这时实际情况是值域范围小的特征更重要)。

我的理解:

  1. 去掉量纲,使得各指标之间具有可比性
  2. 将数据先知道一定区间内,使得运算便捷

下面再以房价预测的例子来说明一下归一化的作用。以预测房价为例,自变量为房间数(x1)、面积大小(x2),因变量为房价。那么可以得到的公式为:
y=θ1x1+θ2x2
y=θ1x1+θ2x2
其中,x1代表房间数,θ1代表x1变量前面的系数;x2代表面积,θ2代表x2变量前面的系数。
下面两张图(损失函数的等高线)代表数据是否归一化的最优解寻解过程:
未归一化:Sklearn之数据预处理——StandardScaler归一化_第1张图片
归一化之后:Sklearn之数据预处理——StandardScaler归一化_第2张图片
在寻找最优解的过程,当数据没有归一化的时候,面积数的范围可以从01000,房间数的范围一般为010,可以看出面积数的取值范围远大于房间数。也就导致了等高面为长椭圆形,非常尖,因为变量前的系数大小相差很大,当使用梯度下降法寻求最优解时,很有可能走“之字型”路线(垂直等高线走)。
而数据归一化后,损失函数变量前面的系数差距已不大,图像的等高面近似圆形,在梯度下降进行求解时能较快的收敛。因此如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。

哪些机器学习算法不需要(需要)做归一化?

概率模型(树形模型)不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF。而像Adaboost、SVM、LR、Knn、KMeans之类的最优化问题就需要归一化。

下面列举一下常用的归一化方法以及各种方法的使用场景。

1.线性函数归一化

线性函数将原始数据线性化的方法转换到[0, 1]的范围。计算公式如下:
在这里插入图片描述
在不涉及距离度量、协方差计算、数据不符合正太分布的时候,使用该方法比较好

2.零均值标准化

零均值归一化方法将原始数据集归一化为均值为0、方差1的数据集([0, 1]范围)。计算公式如下:在这里插入图片描述
在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维、涉及到正态分布的时候使用该方法较好。

3.非线性归一化

(1)对数变换
在实际工程中,经常会有类似点击次数/浏览次数的特征,这类特征是长尾分布的,可以将其用对数函数进行压缩。特别的,在特征相除时,可以用对数压缩之后的特征相减得到。对数规范化的常见形式是:在这里插入图片描述
(2)三角函数
三角函数的值在[0, 1]之间,如果有需要,可以用三角函数进行变换。

(3)sigmoid函数
sigmoid函数,也称S型函数,可以对数据进行有效的压缩。特别的,S型函数在逻辑回归中起着决定性作用。

你可能感兴趣的:(深度学习---数据分析,机器学习,深度学习,python)