归一化(normalization)

归一化是指对数据进行标准化处理,使其均值为0,方差为1,从而消除不同特征量纲的影响,使得不同特征之间可以进行比较和计算。对于时间序列数据,归一化的目的是减弱非平稳性,使得模型能够更好地学习数据的规律。

归一化过程详解

1. 计算均值和方差

首先,对输入序列 x \mathbf{x} x进行均值和方差的计算:

  • x = [ x 1 , x 2 , … , x S ] T \mathbf{x} = [x_1, x_2, \ldots, x_S]^T x=[x1,x2,,xS]T,其中 S S S是序列长度。

  • 计算均值 μ x \mu_x μx
    μ x = 1 S ∑ i = 1 S x i \mu_x = \frac{1}{S} \sum_{i=1}^{S} x_i μx=S1i=1Sxi
    这里的 μ x \mu_x μx是一个向量,表示每个特征(或变量)的均值。

  • 计算标准差 σ x \sigma_x σx
    σ x = 1 S ∑ i = 1 S ( x i − μ x ) 2 \sigma_x = \sqrt{\frac{1}{S} \sum_{i=1}^{S} (x_i - \mu_x)^2} σx=S1i=1S(xiμx)2
    这里的 σ x \sigma_x σx也是一个向量,表示每个特征(或变量)的标准差。

2. 归一化操作

归一化操作的目的是将每个输入值 x i \mathbf{x}_i xi转换为均值为0,方差为1的标准正态分布。

  • 平移操作:减去均值 μ x \mu_x μx
  • 缩放操作:除以标准差 σ x \sigma_x σx

具体公式如下:
x ′ = x − 1 μ x ⊤ σ x \mathbf{x}' = \frac{\mathbf{x} - 1\mu_x^\top}{\sigma_x} x=σxx1μx

其中:

  • x \mathbf{x} x:原始输入序列。
  • 1 ∈ R S × 1 1 \in \mathbb{R}^{S \times 1} 1RS×1:全1向量,用于在时间维度上进行广播。
  • μ x ∈ R 1 × C \mu_x \in \mathbb{R}^{1 \times C} μxR1×C:均值向量。
  • σ x ∈ R 1 × C \sigma_x \in \mathbb{R}^{1 \times C} σxR1×C:标准差向量。
  • x ′ ∈ R S × C \mathbf{x}' \in \mathbb{R}^{S \times C} xRS×C:归一化后的序列。
3. 广播机制解释

在公式 ( x − 1 μ x ⊤ ) / σ x (\mathbf{x} - 1\mu_x^\top)/\sigma_x (x1μx)/σx中:
- 1 μ x ⊤ ∈ R S × C 1\mu_x^\top \in \mathbb{R}^{S \times C} 1μxRS×C:每一列都是均值向量 μ x \mu_x μx,通过与 1 1 1相乘得到。
- x − 1 μ x ⊤ ∈ R S × C \mathbf{x} - 1\mu_x^\top \in \mathbb{R}^{S \times C} x1μxRS×C:每个元素减去相应特征的均值。

  • 最后每个元素除以相应特征的标准差 σ x \sigma_x σx,得到归一化后的序列 x ′ \mathbf{x}' x
4. 公式推导

归一化公式推导过程如下:
x i ′ = x i − μ x σ x x'_i = \frac{x_i - \mu_x}{\sigma_x} xi=σxxiμx
对于序列中的每个值 x i x_i xi,进行平移和缩放,使得归一化后的序列 x ′ \mathbf{x}' x满足标准正态分布的特性,即均值为0,方差为1。

总结

通过以上归一化过程,每个输入序列被转换为均值为0,方差为1的标准正态分布,这使得模型在处理不同序列时能够更好地学习数据规律,减弱非平稳性对模型的影响。归一化后的公式 ( x − 1 μ x ⊤ ) / σ x (\mathbf{x} - 1\mu_x^\top)/\sigma_x (x1μx)/σx充分考虑了时间序列数据的特性,通过平移和缩放操作,使得数据的分布更加稳定,有利于模型训练和预测的准确性。

### 归一化的概念与实现方法 #### 什么是归一化归一化是一种常见的数据预处理技术,其目的是将不同量纲、取值范围的数据转换到同一尺度下,从而提高模型训练效率并改善性能。通过归一化,可以使特征之间的数值差异减小,避免某些特征因数值较大而占据主导地位的情况发生[^2]。 #### 常见的归一化方法及其公式 以下是几种常用的归一化方法: 1. **Min-Max Normalization** Min-Max 归一化是最常用的一种线性变换方式,它将原始数据映射到指定区间(通常是 [0, 1] 或 [-1, 1]),计算公式如下: \[ X' = \frac{X - X_{\text{min}}}{X_{\text{max}} - X_{\text{min}}} \] 这里 \(X\) 是原始数据,\(X_{\text{min}}\) 和 \(X_{\text{max}}\) 分别表示该特征中的最小值和最大值[^3]。 2. **Z-Score Standardization (Standard Scaler)** Z-Score 标准化基于均值和标准差来调整数据分布,使得新数据具有零均值和单位方差。这种方法适用于数据服从正态分布的情形,公式为: \[ X' = \frac{X - \mu}{\sigma} \] 其中,\(\mu\) 表示样本均值,\(\sigma\) 表示样本标准差。 3. **Decimal Scaling** 小数定标法通过对数据除以某个幂次因子使绝对值小于 1 来完成归一化操作。假设 \(k\) 是满足条件的最大整数,则有: \[ X' = \frac{X}{10^k}, \quad |X'| < 1 \] 4. **Log Transformation** 对于偏态分布或者存在极端值的数据集,可以采用对数变换降低离群点的影响。例如自然对数形式: \[ X' = \log(X), \quad X > 0 \] #### 实现代码示例 下面提供 Python 中利用 `scikit-learn` 库实现上述两种主要归一化方法的例子: ```python from sklearn.preprocessing import MinMaxScaler, StandardScaler import numpy as np # 创建模拟数据 data = np.array([[1., -1., 2.], [2., 0., 0.], [0., 1., -1.]]) # 使用 Min-Max 归一化 min_max_scaler = MinMaxScaler() normalized_data_minmax = min_max_scaler.fit_transform(data) print("Min-Max Normalized Data:\n", normalized_data_minmax) # 使用 Z-Score 标准化 standard_scaler = StandardScaler() standardized_data = standard_scaler.fit_transform(data) print("\nZ-Score Standardized Data:\n", standardized_data) ``` #### 不进行归一化的潜在问题 如果忽略归一化过程,可能会导致以下后果: - 特征间权重失衡:当部分特征的数量级远大于其他特征时,优化器可能更倾向于关注这些大值特征。 - 收敛速度变慢:梯度下降等迭代算法难以快速找到最优解。 - 性能下降:特别是在神经网络场景下,未经适当缩放的数据可能导致激活函数饱和现象,进而阻碍有效学习。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值