一句话定义:特征标准化(Standardization / Normalization)是把单位、取值范围各不相同的特征,变换到大致可比的尺度上,让模型"一视同仁"地看待它们。
量纲不统一为什么会坏事
假设你要预测房价,输入三个特征:面积(80~200 平方米)、房间数(1~5 间)、距地铁距离(0.1~5 公里)。直接把原始数字喂给模型,面积那一列的数值天然比房间数大几十倍。基于梯度下降的模型会误以为"面积"重要得多——不是因为它真的重要,而是因为它数字大。
更具体地说,损失函数在参数空间里的等高线会被拉成一条狭长的峡谷:沿峡谷方向走一步,损失几乎不变;横穿峡谷走同样距离,损失暴涨。梯度方向因此不指向谷底,优化器只能左右横跳。学习率调小,收敛慢如蜗牛;调大一点,直接震荡发散,也就是常说的"训崩"。打个比方:下山时一边是缓坡、一边是悬崖,你只能挪小碎步。
标准化把每个特征减去自己的均值、再除以标准差,让各列大致变成均值 0、方差 1 的分布,峡谷就还原成接近正圆的碗,梯度方向直指谷底,收敛又快又稳。
和相邻概念的区别
| 标准化 Standardization | 归一化 Normalization(Min-Max) | |
|---|---|---|
| 做法 | (x − 均值) / 标准差 | (x − 最小值) / (最大值 − 最小值) |
| 结果 | 均值 0、方差 1,可正可负 | 压到 [0, 1] 区间 |
| 对异常值 | 较敏感 | 非常敏感,一个极端值就压扁其余数据 |
| 常见场景 | 线性模型、SVM、PCA、神经网络 | 图像像素、需要固定区间的场景 |
两个坑要提醒:一是中文里"归一化"常被当作所有缩放的统称,而英文 Normalization 既可能指 Min-Max,也可能指 L2 归一化或批归一化(BatchNorm),得看上下文。二是它和正则化(Regularization)完全是两回事——后者是给损失加惩罚项来抑制过拟合,只是中文都带个"化"字,别混。
对实际工作的意义
梯度下降类模型(线性/逻辑回归、SVM、KNN、聚类、PCA、深度网络)基本都需要;树模型(决策树、随机森林、梯度提升树)只看特征值的相对顺序,对单调缩放不敏感,通常可以省掉。
工程上最容易翻车的地方是:训练集的均值、标准差必须存下来,推理时沿用同一套参数,绝不能拿线上数据重新算一遍。否则线上线下的数据分布对不上,效果会莫名其妙地变差,还很难排查。具体 API 的参数细节,以官方文档为准。
