[机器学习_特征缩放]标准化和归一化

493 阅读4分钟

在机器学习中,标准化(Standardization)和归一化(Normalization)是两种常用的数据预处理技术,它们都属于特征缩放.

目的是调整数据分布或范围,使其更适合模型训练。虽然两者都涉及对数据的缩放,但它们的操作方式和适用场景有所不同。


1. 标准化(Standardization)

操作方式

标准化通过调整数据分布,使其均值为0、标准差为1。

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)

示例
假设某特征的原始数据为 [10, 20, 30, 40, 50],计算均值为30,标准差为14.14。
标准化后数据为:
[-1.41, -0.71, 0, 0.71, 1.41]

为什么要标准化?

  • 消除量纲影响不同特征之间的量纲可能差异巨大(如年龄范围0-100,收入范围0-100万)。标准化使所有特征处于同一尺度,避免模型被大范围特征主导。
  • 加速模型收敛:对梯度下降类算法(如逻辑回归、神经网络),特征尺度统一后,优化过程更稳定高效。
  • 适配模型假设:许多模型(如线性回归、支持向量机)假设输入数据服从标准正态分布。

适用场景

  • 数据分布近似正态分布(或对称分布)。
  • 模型对特征尺度敏感(如线性模型、距离类模型KNN、SVM)。
  • 数据中存在异常值时,标准化比归一化更稳健(因为均值和标准差受异常值影响较小)。

2. 归一化(Normalization)

操作方式

归一化将数据缩放到固定范围(通常是 [0, 1][-1, 1])。

常用方法为最小-最大缩放(Min-Max Scaling)

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
normalized_data = scaler.fit_transform(data)

示例
原始数据为 [10, 20, 30, 40, 50],最小值为10,最大值为50。
归一化后数据为:
[0, 0.25, 0.5, 0.75, 1]

为什么要归一化?

  • 统一特征范围:将不同量纲的特征压缩到相同范围(如0-1),便于模型公平对待每个特征。
  • 适用于非正态分布:对数据分布没有强假设,尤其适合稀疏数据或分布未知的情况。
  • 可视化需求:数据缩放到固定范围后,更易于可视化和解释。

适用场景

  • 数据分布未知或明显非正态(如图像像素值0-255)。
  • 需要输出在固定范围内的模型(如神经网络输出层用Sigmoid激活时)。
  • 树模型(如决策树、随机森林)通常不需要归一化,因为它们不依赖特征尺度。

3. 标准化 vs 归一化对比

特性标准化归一化
目标数据分布均值为0,标准差为1数据缩放到固定范围(如0-1)
公式( (x - \mu)/\sigma )( (x - x_{\text{min}})/(x_{\text{max}} - x_{\text{min}}) )
对异常值的鲁棒性较敏感(均值和标准差受异常值影响)非常敏感(极值会压缩正常数据的范围
适用模型线性模型、距离类模型(SVM、KNN)神经网络、需要固定输入范围的模型
数据分布假设无严格假设,但对正态分布更友好无分布假设

4. 为什么需要这些操作?

  1. 提升模型性能
    例如,在逻辑回归中,未标准化的特征可能导致梯度下降收敛缓慢或震荡;在KNN中,大范围特征会主导距离计算。

  2. 增强模型鲁棒性
    消除量纲差异后,模型权重可更公平地反映特征重要性。

  3. 加速训练过程
    标准化后的数据梯度下降路径更平滑,迭代次数减少。

  4. 适配算法需求
    如PCA(主成分分析)依赖方差计算,标准化能确保各特征方差可比。


5. 实际应用注意事项

  • 划分数据集后再操作
    应先拆分训练集和测试集,仅用训练集计算均值和标准差(或最小/最大值),再将其应用于测试集,避免数据泄漏(Data Leakage)。

  • 树模型通常不需要
    树模型(如随机森林、XGBoost)基于特征划分而非距离计算,因此对特征尺度不敏感。

  • 离散特征的例外
    二元特征(0/1)或计数特征(如点击次数)若范围差异不大,可不处理;但若与其他特征量纲差异显著(如收入 vs 点击次数),仍需缩放。


示例场景

  • 图像处理
    归一化像素值到[0,1](如除以255),便于神经网络训练。
  • 金融风控
    标准化收入、负债等连续特征,消除量纲差异。
  • 自然语言处理
    对TF-IDF值进行归一化,避免高频词主导模型。

总结

标准化和归一化是数据预处理的核心步骤,通过调整数据分布或范围,使模型更高效、稳定地学习规律。

选择哪种方法需结合数据分布、模型类型及业务需求,实践中常通过交叉验证对比效果。