特征缩放基础

星博讯 AI基础认知 2

特征缩放是机器学习数据预处理中的关键步骤,用于将不同特征的数值范围调整到相似的尺度,以提高模型性能和训练效率。

特征缩放基础-第1张图片-星博讯网络科技知识-SEO优化技巧|AI知识科普|互联网行业干货大全

为什么要进行特征缩放?

主要目的:

  1. 加速收敛:梯度下降等优化算法在特征尺度相近时收敛更快
  2. 避免数值问题:防止大范围特征主导模型,造成数值不稳定
  3. 公平对待特征:让所有特征对模型的贡献度处于相同量级
  4. 提高精度:某些算法(如KNN、SVM)对特征尺度敏感

常用特征缩放方法

标准化(Z-Score标准化)

  • 公式:$x' = \frac{x - \mu}{\sigma}$
  • 将数据转换为均值为0,标准差为1的分布
  • 适用于特征近似正态分布的情况
  • 对异常值敏感

最小-最大缩放(归一化)

  • 公式:$x' = \frac{x - min(x)}{max(x) - min(x)}$
  • 将数据缩放到[0, 1]区间
  • 简单直观,适用于有界数据
  • 对异常值非常敏感

最大绝对值缩放

  • 公式:$x' = \frac{x}{max(|x|)}$
  • 将数据缩放到[-1, 1]区间
  • 保持数据的稀疏性(零值保持为零)
  • 适用于已有零中心的数据

鲁棒缩放

  • 公式:$x' = \frac{x - Q_1}{Q_3 - Q_1}$(基于四分位距)
  • 使用中位数和四分位数进行缩放
  • 对异常值不敏感
  • 适用于包含异常值的数据

对数变换

  • 公式:$x' = log(1 + x)$
  • 适用于右偏(正偏)分布的数据
  • 可以将指数分布转换为近似正态分布

如何选择缩放方法?

考虑因素:

  1. 数据分布

    • 正态分布 → 标准化
    • 均匀分布 → 最小-最大缩放
    • 包含异常值 → 鲁棒缩放
  2. 算法需求

    • 基于距离的算法(KNN、K-Means、SVM)→ 必须缩放
    • 基于树的算法(决策树、随机森林)→ 不需要缩放
    • 神经网络 → 强烈建议缩放
    • 线性模型(线性回归、逻辑回归)→ 建议缩放(尤其使用正则化时)
  3. 数据特性

    • 稀疏数据 → 最大绝对值缩放
    • 图像数据 → 通常使用最小-最大缩放到[0,1]或[-1,1]

实践注意事项

避免数据泄漏

  • 正确做法:只在训练集上计算缩放参数,然后应用到验证集和测试集
  • 错误做法:在整个数据集上计算缩放参数
# 正确示例
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
# 划分数据
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 只在训练集上拟合缩放器
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
# 用训练集的参数转换测试集
X_test_scaled = scaler.transform(X_test)

处理异常值

  • 先处理异常值,再进行特征缩放
  • 或使用对异常值不敏感的缩放方法(如鲁棒缩放)

分类型特征

  • 特征缩放只适用于数值型特征
  • 分类特征需要先进行编码(如独热编码)

示例对比

特征 原始值 标准化后 最小-最大缩放后
年龄 25 -0.95 25
年龄 40 47 67
年龄 60 89 00
工资(万) 15 -1.18 00
工资(万) 30 -0.12 50
工资(万) 45 31 00

注:经过缩放后,年龄和工资处于相似尺度,模型可以公平对待这两个特征。

特征缩放是数据预处理中的重要步骤,能够显著影响模型性能,选择哪种方法取决于数据特性、算法需求和应用场景,在实践中,建议尝试不同的缩放方法,并通过交叉验证评估哪种方法对特定任务最有效。

标签: 特征缩放 标准化

上一篇示例数据

下一篇示例数据

抱歉,评论功能暂时关闭!

微信咨询Xboxun188
QQ:1320815949
在线时间
10:00 ~ 2:00