欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 归一化学习

归一化学习

2024/10/26 5:27:44 来源:https://blog.csdn.net/weixin_43739167/article/details/142958571  浏览:    关键词:归一化学习

归一化

1. 归一化(Normalization)

归一化是数据处理中的一种方法,用来将不同量纲的数据进行尺度上的统一,使得数据落在一个相对一致的范围内,常见的目标区间是 [0, 1] 或 [-1, 1]。归一化的目的是消除不同特征或变量之间的量纲差异,使得它们可以更好地进行比较或参与机器学习模型的训练。

归一化的常见形式:

  • 最小-最大归一化(Min-Max Normalization):将数据线性变换到 [0, 1] 的范围。
  • Z-score 标准化(Z-score Normalization):通过减去均值并除以标准差,将数据转化为标准正态分布。
  • 比例归一化(Proportional Normalization):通过数据除以总和,转化为比例数据。

2. 归一化偏差

归一化偏差指的是通过对数据进行归一化后,计算相对于某个参考点(通常是均值)的偏差。归一化偏差通常是为了衡量数据在归一化后相对某个基准的偏离程度。

例如:
对于样本
x i x_i xi
和均值
x ˉ \bar{x} xˉ
,归一化偏差可以表示为:
y i = x i − x ˉ x ˉ y_i = \frac{x_i - \bar{x}}{\bar{x}} yi=xˉxixˉ
这个公式表示每个样本值相对于均值的偏差,并通过均值归一化,使得偏差可以表示为一个无量纲的比例。

3. 比例归一化

比例归一化(Proportional Normalization)是归一化的一种形式,指的是将每个数据点按数据总和进行归一化,使得数据的总和变为 1。每个样本值
x i x_i xi
归一化后为:
y i = x i ∑ x i y_i = \frac{x_i}{\sum{x_i}} yi=xixi

  • 意义:这种方法常用于分析比例、概率等情况,比如在统计中需要得到各部分占总体的比例。
  • 应用场景:比例归一化常用于概率分布、份额分析、分配权重等情形。它确保数据的相对重要性得到保持,同时消除了绝对数值的影响。

4. 其他类型的归一化

除了最常见的几种归一化方法,还有其他的归一化形式,针对不同场景和需求:

4.1. Z-score 标准化

Z-score 归一化也称为标准化(Standardization),将数据调整到一个均值为 0、标准差为 1 的分布中。公式为:
z i = x i − μ σ z_i = \frac{x_i - \mu}{\sigma} zi=σxiμ
其中,
μ \mu μ
是数据的均值,
σ \sigma σ
是数据的标准差。标准化后的数据服从标准正态分布,适合处理有正态分布特性的变量。

4.2. 对数归一化

通过取对数将数据缩小,尤其适用于数值分布较大或者偏态的数据。对数归一化的公式为:
y i = log ⁡ ( x i ) y_i = \log(x_i) yi=log(xi)
可以有效减小数据的差距,使得数据的分布更加均匀。

4.3. 向量归一化

在机器学习中,向量归一化是将向量缩放到单位长度,用于某些算法(如 KNN、SVM)中。公式为:
v n o r m = v ∣ ∣ v ∣ ∣ \mathbf{v}_{norm} = \frac{\mathbf{v}}{||\mathbf{v}||} vnorm=∣∣v∣∣v
其中
∣ ∣ v ∣ ∣ ||\mathbf{v}|| ∣∣v∣∣
是向量的范数(如 L2 范数)。这种归一化确保了数据的方向性保持不变,而长度变为 1。

4.4. 非线性归一化

使用非线性函数(如 Sigmoid、Tanh)将数据缩放到特定的范围内,常见于神经网络中的激活函数处理。Sigmoid 归一化的公式为:
y i = 1 1 + e − x i y_i = \frac{1}{1 + e^{-x_i}} yi=1+exi1
这种归一化适合处理具有非线性特征的数据,将数据限制在 (0, 1) 范围内。

总结:

  • 归一化是为了消除量纲差异,使数据在统一尺度下进行处理。
  • 归一化偏差衡量样本相对均值的偏离程度,是一种相对比较的方式。
  • 比例归一化通过将数据按总和进行归一化,适用于比例和权重分析。
  • 其他常见的归一化方法还有 Z-score 标准化、对数归一化、向量归一化等,分别适用于不同的数据特性和应用场景。

如何将数据归一化到[-1, 1]这个区间?

要将数据归一化到 [-1, 1] 区间,可以使用最小-最大归一化的变种,通过线性缩放将数据映射到该区间。

归一化公式:

给定一个数据集 ( X ),其中
x min x_{\text{min}} xmin
是数据的最小值,
x max x_{\text{max}} xmax
是数据的最大值。将数据 xi 归一化到 [-1, 1] 区间的公式如下:

x i ′ = 2 ⋅ ( x i − x min ) x max − x min − 1 x'_i = \frac{2 \cdot (x_i - x_{\text{min}})}{x_{\text{max}} - x_{\text{min}}} - 1 xi=xmaxxmin2(xixmin)1

解释:

  • xi:原始数据中的某个值。
  • xmin:原始数据中的最小值。
  • xmax:原始数据中的最大值。
  • x`i:归一化后的值,在 [-1, 1] 之间。

归一化步骤:

  1. 计算原始数据的最小值和最大值:找出数据集中的 ( x_{\text{min}} ) 和 ( x_{\text{max}} )。
  2. 将每个数据缩放:按照公式,对每个数据点进行缩放,确保数据点的值落在 [-1, 1] 之间。
  3. 应用到整个数据集:将这个公式应用到整个数据集中。

示例:

假设你有一组数据 ( X = [10, 20, 30, 40, 50] ),你想将其归一化到 [-1, 1] 区间。按照步骤:

  1. 计算最小值和最大值

    • xmin= 10
    • xmax= 50
  2. 归一化每个数据点
    x i ′ = 2 ⋅ ( x i − 10 ) 50 − 10 − 1 = 2 ⋅ ( x i − 10 ) 40 − 1 x'_i = \frac{2 \cdot (x_i - 10)}{50 - 10} - 1 = \frac{2 \cdot (x_i - 10)}{40} - 1 xi=50102(xi10)1=402(xi10)1

    • 当 xmin= 10,归一化结果为 ( -1 )
    • 当 xmax= 50,归一化结果为 ( 1 )
    • 其他数据的归一化结果介于 [-1, 1] 之间。

Python 实现:

可以通过 Python 代码实现该过程:

import numpy as np# 原始数据
X = np.array([10, 20, 30, 40, 50])# 计算最小值和最大值
x_min = np.min(X)
x_max = np.max(X)# 归一化到 [-1, 1]
X_normalized = 2 * (X - x_min) / (x_max - x_min) - 1print(X_normalized)

输出:

[-1.  -0.5  0.   0.5  1. ]

总结:

归一化到 [-1, 1] 区间是一种常见的处理方法,尤其在需要标准化数据到统一尺度、避免数据因量纲差异而影响模型表现时非常有用。这种归一化在机器学习和数据预处理中有广泛的应用。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com