机器学习的特征归一化Normalization

文章介绍了归一化在消除数据量纲影响、加速训练和防止数值问题中的重要性。两种常见的归一化方法是线性归一化和标准差标准化。批归一化是用于神经网络中间层的一种技术,能加速收敛并缓解过拟合。局部响应归一化则用于增强局部对比度。批归一化适用于大数据集和CNN,但可能不适用于动态网络结构或RNN。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么需要做归一化?

为了消除数据特征之间的量纲影响,就需要对特征进行归一化处理,使得不同指标之间具有可比性。对特征归一化可以将所有特征都统一到一个大致相同的数值区间内。

  1. 为了后⾯数据处理的⽅便,归⼀化可以避免⼀些不必要的数值问题。
  2. 为了程序运⾏时收敛加快。
  3. 统一量纲。
  4. 保证输出数据中数值⼩的不被吞⾷。
  5. 避免神经元饱和。

在这里插入图片描述

两种常用的归一化方法

  • 线性归⼀化(最大最小归一化,Min-Max Scaling)
    在这里插入图片描述

  • 标准差标准化(零均值归一化,Z-Score Scaling)
    在这里插入图片描述

经过处理的数据符合标准正态分布,即均值为 0,标准差为 1。

批归⼀化(Batch Normalization)

局部响应归⼀化

局部响应归⼀化(Local Response Normalization ,LRN)是AlexNet中首次引入的归一化方法。

使用LRN的原因是为了鼓励横向抑制

横向抑制:这是神经生物学中的一个概念,是指神经元减少其邻居活动的能力。在深度神经网络中,这种横向抑制的目的是进行局部对比度增强,以便使局部最大像素值用作下一层的激励。

批归⼀化(Batch Normalization)

以前在神经⽹络训练中,只是对输⼊层数据进⾏归⼀化处理,却没有在中间层进⾏归⼀化处理。要知道,虽然我们对输⼊数据进⾏了归⼀化处理,但是输⼊数据运算之后,其数据分布很可能被改变,⽽随着深度⽹络的多层运算之后,数据分布的变化将越来越⼤。

这种在神经⽹络中间层也进行归⼀化处理,使训练效果更好的方法,就是批归⼀化。

批归一化的算法流程:

输⼊:上⼀层输出结果X = {x1, x2, …, xm}

  1. 计算上⼀层输出数据的均值:
    在这里插入图片描述

  2. 计算上⼀层输出数据的标准差
    在这里插入图片描述

  3. 归一化
    在这里插入图片描述

  4. 重构
    在这里插入图片描述γ和β为可学习的参数。

批归一化的适用场景及优点

在CNN中,批归一化应作⽤在⾮线性映射前。在神经⽹络训练时遇到收敛速度很慢,或梯度爆炸等⽆法训练的状况时可以尝试BN来解决。

当BatchSize比较大,数据分布比较接近,并在训练前对数据充分shuffle。
批归一化不适⽤于动态的⽹络结构和RNN⽹络。

使用批归一化具有以下优点:

  1. 减少了人为选择参数。
  2. 减少了对学习率的要求。
  3. 破坏原来的数据分布,⼀定程度上缓解过拟合。
  4. 减少梯度消失,加快收敛速度,提⾼训练精度。
### 机器学习中的特征归一化 #### 特征归一化的概念 特征归一化是一种数据预处理技术,用于调整输入变量的范围以便于模型训练。其主要目的是消除不同特征间因量纲差异带来的影响,从而提高算法收敛速度和预测性能。通过对数值型特征进行归一化操作,可以使所有特征处于相似的数量级范围内[^3]。 #### 常见的特征归一化方法及其作用 以下是几种常见的特征归一化方法以及它们的作用: 1. **线性归一化 (Min-Max 归一化)** Min-Max 归一化通过线性变换将原始数据映射至指定区间(通常为 [0,1])。这种方法适用于数据分布较为均匀的情况,并能有效保留数据间的相对关系。公式表示如下: \[ X_{\text{norm}} = \frac{X - X_{\min}}{X_{\max} - X_{\min}} \] 这里 \(X\) 表示原始数据,\(X_{\min}\) 和 \(X_{\max}\) 分别代表样本集合中的最小值与最大值。 2. **零均值归一化 (Z-Score Normalization)** 零均值归一化也称为标准差标准化,它会先计算每列特征的平均数 (\(\mu\)) 及标准偏差 (\(\sigma\)) ,再利用下述方程转换原数据点使其服从均值为 0 方差为 1 的正态分布。 \[ X_{\text{std}} = \frac{X - \mu}{\sigma} \] 此种方式特别适合当数据呈现近似高斯分布时采用[^1]。 3. **基于其他数学函数的归一化** 当面对极端值较多的数据集或者希望压缩较大数值的影响时,则可以选择诸如对数(logarithmic scaling),倒数(reciprocal transformation), 或者双曲正切(tanh function)等方式来进行非线性的尺度变化[^2]。 #### 应用场景分析 - 数据分化较大的情况:如果某些维度上的取值跨度极大而另一些则非常集中,在这种情况下应用合适的归一化手段能够帮助提升分类器效果; - 距离度量为基础的学习模型:像 KNN(K Nearest Neighbor),SVM(Support Vector Machine with RBF kernel)之类的依赖欧几里得距离衡量实例相似程度的算法尤其受益于此过程因为未经处理可能会让那些幅度较高的属性主导最终决策边界形成; - 梯度下降优化求解的目标函数:对于很多需要迭代更新权重参数并通过梯度方向寻找最优解的问题而言,良好的初始化状态加上合理的步长控制往往离不开恰当规模约束后的输入向量支持; ```python from sklearn.preprocessing import MinMaxScaler, StandardScaler # 示例代码展示如何使用 scikit-learn 中内置工具完成上述两种基本形式的操作 data = [[-1, 2], [-0.5, 6], [0, 10], [1, 18]] scaler_min_max = MinMaxScaler() normalized_data_mm = scaler_min_max.fit_transform(data) scaler_z_score = StandardScaler() standardized_data_zs = scaler_z_score.fit_transform(data) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1 + 1=王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值