← 返回题目列表

SVM 为什么对特征缩放敏感?

中等 第 19 / 25 题 更新于 2026/09/21
支持向量机机器学习面试题模型训练
学习 AI 实战项目

简化版

SVM 对尺度敏感:线性范数正则和 RBF 距离都会被大数值特征支配。标准化器必须只在训练折拟合并与模型一起发布;稀疏文本通常避免中心化以免矩阵变稠密。

详细版

  • RBF gamma 的有效含义依赖特征尺度。

  • StandardScaler 对异常值敏感,可比较 RobustScaler。

  • one-hot 0/1 特征是否缩放要结合模型。

  • Pipeline 防交叉验证泄漏。

  • 线上必须复用训练 mean/scale。

完整版教学

一、缩放定义了距离与间隔的坐标系

SVM 通过点积和距离构造边界。

若收入范围 0~100000、年龄 0~100,未缩放时收入一单位变化对距离的贡献可完全压过年龄。

缩放不是为了让数据好看,而是让正则对各坐标和核距离具有可比较的量纲。

二、底层机制与公式

z_j=(x_j-mu_j)/sigma_j
RBF=exp(-gamma*sum_j (z_j-z_j')²)

三、带数字的推演

两点年龄差 10、收入差 10,000,未缩放平方距离约 10^8;若标准差分别 10 和 20,000,标准化后贡献为 1²+0.5²=1.25。

缩放后两维都能影响核距离与间隔,C、γ 等超参数的数值含义也随之改变;Scaler 必须只在训练折拟合并与 SVM 一起部署,避免验证泄漏和线上尺度错位。

四、方案对比

方案/对象核心特点代价或边界
StandardScaler常用、均值方差异常值敏感
RobustScaler中位数/IQR小样本分位不稳
MaxAbsScaler保持稀疏零值不中心化

五、执行流程

先划分/CV -> 每折 scaler.fit(train) -> transform train/val
-> 联合调 C/gamma -> 保存 scaler+SVM -> 线上输入 schema 检查

六、边界条件与工程代价

对 CSR 文本做均值中心化会把零变成非零,内存爆炸;使用 MaxAbs 或 with_mean=False。

单位变更如元变万元若未更新 scaler,会造成严重训练服务偏差,需监控标准化后分布。

记忆钩子:SVM 缩放是在定义几何坐标系。

七、常见误区与追问

  • 误区:树模型不缩放,所以 SVM 也不必。 SVM 依赖距离和范数。

  • 追问:为何 scaler 要折内 fit? 验证分布统计不能进入训练。

  • 误区:所有特征都必须中心化。 稀疏矩阵中心化会变稠密。

  • 追问:缩放后 gamma 要重调吗? 要,距离尺度已经改变。

  • 追问:上线发布什么? scaler 参数、特征顺序和 SVM 同版本发布。

八、加强记忆

SVM 缩放是在定义几何坐标系。

先缩放再调 C/gamma,并把 scaler 当模型的一部分,而不是训练前临时脚本。