一、特征缩放的含义
特征缩放(Feature Scaling)是数据预处理的关键步骤,它通过调整不同特征的数值范围,使其处于相近的尺度,从而提高机器学习模型的性能和训练效率。
通俗理解
想象你要比较一群人的身高(单位:厘米)和体重(单位:公斤),如果直接用原始数据,身高的数值(如170、180)可能比体重(如60、70)大很多,导致模型更“重视”身高而忽略体重。特征缩放就像把身高和体重都调整到同一个“尺子”上,让它们公平比较,避免某些特征因为数值大而主导模型训练。
例子(一)
这幅图展示了特征缩放对模型参数和预测结果的影响,具体分为以下几个部分:
问题设定:
用线性回归模型预测房价:
price = w₁x₁ + w₂x₂ + b
。特征:
x₁
:房屋面积(范围 300-2,000 平方英尺)。x₂
:卧室数量(范围 0-5)。
一个训练样本:
x₁=2000, x₂=5, price=$500k
。
未缩放时的参数问题:
若
w₁=50
(大),w₂=0.1
(小),b=50
:计算
price = 50*2000 + 0.1*5 + 50 = $100,050.5k
(荒谬结果)。原因:
x₁
的数值范围(2000)远大于x₂
(5),导致w₁
主导预测,模型无法合理学习。
特征缩放后的效果:
调整参数为
w₁=0.1
(小),w₂=50
(大),b=50
:计算
price = 0.1*2000 + 50*5 + 50 = $500k
(合理结果)。原因:通过缩放(或调整参数比例),使
x₁
和x₂
对预测的贡献平衡,模型更合理。
核心结论:图中通过对比说明,若特征尺度差异大,需通过特征缩放或调整参数比例,避免某些特征因数值过大而主导模型预测。
例子(二)
表格部分(Feature size and parameter size)
对比两个特征(
size in feet²
和#bedrooms
)及其对应参数(wⱼ
)的尺度:特征尺度:
size in feet²
(房屋面积):数值范围大(如300-2000)。#bedrooms
(卧室数量):数值范围小(如0-5)。
参数大小:
表格中未填写具体数值,但暗示需要调整
wⱼ
的尺度以匹配特征(如w₁
应较小,w₂
应较大)。
散点图(Scatterplot)
横轴是
size in feet²
(未明确标注),纵轴是#bedrooms
(0-5)。数据点分布:卧室数量(
x₂
)范围窄,面积(x₁
)范围宽,凸显特征尺度差异。
参数部分(Parameters)
标注了
w₁
(对应面积)和w₂
(对应卧室)的参数大小:100
和10
:表示参数值的相对大小(w₁
需较小,w₂
需较大以平衡特征影响)。
损失函数等高线图(J(w, b) contour plot)
横轴为
w₁
(面积参数),纵轴可能为w₂
(卧室参数)。等高线形状:若特征未缩放,
w₁
和w₂
的尺度差异会导致等高图呈狭窄椭圆,增加梯度下降难度(需更多迭代收敛)。
核心结论
图片通过表格、散点图和等高线图,直观展示了:
特征尺度差异(如面积 vs. 卧室数)如何影响参数大小的设定。
若特征未缩放,模型训练(如梯度下降)可能低效或不稳定,需通过特征缩放或调整参数比例解决。
二、特征缩放优化梯度下降
散点图(Scatterplot)
原始特征:
横轴
x₁
(房屋面积,范围 300-2000 平方英尺),纵轴x₂
(卧室数量,范围 0-5)。数据点分布:
x₁
的数值范围远大于x₂
,导致散点图在横轴上拉伸,纵轴上压缩。
缩放后特征(rescaled):
通过特征缩放(如标准化或归一化),
x₁
和x₂
的尺度被调整到相近范围(如 [0, 1] 或均值为 0),散点图分布更均匀。
参数与梯度下降(Parameters & Gradient Descent)
原始参数(W₁, W₂):
由于
x₁
的数值大,对应的参数W₁
需要非常小(如 0.1),而x₂
的数值小,W₂
需要较大(如 50),以平衡特征贡献。这种参数尺度差异会导致损失函数
J(w, b)
的等高线图呈狭窄的椭圆形,梯度下降路径震荡,收敛缓慢。
缩放后参数(rescaled):
特征缩放后,
W₁
和W₂
的尺度相近,损失函数的等高线图更接近圆形,梯度下降能更直接指向最小值,加快收敛。
三、几种特征缩放的方法
1. 最大值归一化(Max Scaling)
这张图展示了 特征缩放(Feature Scaling) 的具体操作,针对两个不同量纲的特征:
特征1(x₁):房屋面积(单位:平方英尺),原始范围 300-2000。
特征2(x₂):卧室数量,原始范围 0-5。
图中通过 除以最大值(Max Scaling) 的方法,将这两个特征缩放到 [0, 1] 区间:
公式
要求:特征的最小值应为 0(或接近 0),否则缩放后范围不是严格的 [0, 1]。
图中示例:
卧室数量(x₂)的最小值为 0,完美符合 [0, 1]。
房屋面积(x₁)的最小值为 300,缩放后范围为 [0.15, 1],非严格 [0, 1]。
特点
优点:
计算简单,无需记录最小值(比经典 Min-Max 更轻量)。
适合特征自然以 0 为下限的场景(如计数类特征)。
缺点:
对离群值敏感(若某个房屋面积=5000,缩放后其他值会挤在 0-0.4 之间)。
若最小值远离 0(如图中的 x₁),缩放后范围不均衡。
适用场景
数据分布均匀,且最小值接近 0。
需要快速归一化,且对精度要求不高时。
2. 均值归一化(Mean Normalization)
这张图展示了 均值归一化(Mean Normalization) 的具体操作,针对两个不同量纲的特征:
特征1(x₁):房屋面积(单位:平方英尺),原始范围 300-2000,均值 μ₁=600。
特征2(x₂):卧室数量,原始范围 0-5,均值 μ₂=2.3。
图中通过 均值归一化 方法,将这两个特征缩放到 [-a, a] 的区间(a <1):
房屋面积归一化:
→ 范围变为 -0.18(当 x1=300)到 0.82(当 x1=2000)。
卧室数量归一化:
→ 范围变为 -0.46(当 x2=0)到 0.54(当 x2=5)。
公式
核心思想:通过减去均值(中心化)并除以极差(缩放),使数据分布以 0 为中心,范围约在 [-1, 1]附近。
与 Min-Max 的区别:
Min-Max 强制缩放到 [0, 1],而均值归一化保留负值,适合需要中心化的模型(如 PCA、神经网络)。
特点
优点:
保留数据分布的中心(均值为 0),适合对数据偏移敏感的算法。
比标准化(Z-score)更简单(无需计算标准差)。
缺点:
对离群值敏感(极差受最大值/最小值影响大)。
范围不严格对称(如图中 x₂ 范围是 [-0.46, 0.54])。
适用场景
数据分布近似均匀,且需要以 0 为中心的场景。
配合梯度下降等优化算法时,可加速收敛。
3. Z-score标准化(Z-score Normalization)
这张图展示了 Z-score标准化(Z-score Normalization) 的具体操作,针对两个不同量纲的特征:
特征1(x₁):房屋面积(单位:平方英尺),原始范围 300-2000,均值 μ₁ 未直接给出,标准差 σ₁=450。
特征2(x₂):卧室数量,原始范围 0-5,标准差 σ₂=1.4。
通过 Z-score标准化,将这两个特征转换为均值为 0、标准差为 1 的分布:
房屋面积标准化:
→ 范围约为 -0.67(当 x1=300)到 3.1(当 x1=2000)。
卧室数量标准化:
→ 范围约为 -1.6(当 x2=0)到 1.9(当 x2=5)。
公式
μ:特征的均值,用于中心化(平移)。
σ:特征的标准差,用于缩放。
特点
优点:
严格使数据均值为 0、标准差为 1,适合大多数模型(如线性回归、SVM、神经网络)。
对离群值不敏感(标准差比极差更稳健)。
缺点:
无固定范围,可能导致某些算法(如需要 [0,1] 输入的图像处理模型)需后续调整。
需计算均值和标准差,计算量略大于 Min-Max。
适用场景
数据存在轻微离群值或长尾分布时。
需要数据严格以 0 为中心且尺度一致的场景(如 PCA、梯度下降)。
四、特征缩放的目标范围
理想范围:
图中建议大多数特征应落在 -1 ≤ xⱼ ≤ 1 附近(宽松情况下可接受 -3 ≤ xⱼ ≤ 3)。
若数值远超出此范围(如 -100 到 100)或远小于此范围(如 -0.001 到 0.001),则需缩放。
示例特征范围判断:
x₁: 0 ≤ x₁ ≤ 3 → 无需缩放(在可接受范围内)。
x₂: -2 ≤ x₂ ≤ 0.5 → 无需缩放(接近理想范围)。
x₃: -100 ≤ x₃ ≤ 100 → 需缩放("too large",超出合理范围)。
x₄: -0.001 ≤ x₄ ≤ 0.001 → 需缩放("too small",数值过小可能导致计算精度问题)。
核心逻辑:
若特征范围与模型期望的输入尺度(如梯度下降的步长、神经网络的激活函数敏感区间)不匹配,则需调整。