Platt Scaling 如何把 SVM 输出转成概率?
简化版
Platt Scaling 在独立校准数据或折外分数上拟合两参数 sigmoid,把 SVM margin 映射为概率。只要拟合映射保持正确方向且严格单调,排序与 ROC-AUC 不变;它可能改善 NLL、Brier 和阈值解释,但不保证在分布漂移后仍校准,也不能用训练内分数直接拟合后宣称泛化校准良好。
详细版
-
SVM 原生输出 margin,不是概率。
-
Platt 拟合
1/(1+exp(Af+B))。 -
应使用 OOF 或独立校准集,不能用同一训练预测。
-
类别先验漂移会让旧映射失效。
-
数据充足且关系非 sigmoid 时可比较 isotonic。
完整版教学
一、校准为 margin 增加频率语义
SVM 优化间隔与 hinge loss,没有要求 score=2 对应某个发生率。
Platt 用少量参数学习整体锐度与偏置。
单调 sigmoid 保持排序,所以 ROC-AUC 通常不变;改善的是 NLL、Brier 和阈值可解释性。
二、底层机制与公式
P(y=1|f)=1/(1+exp(A*f+B))
fit A,B by minimizing calibration log loss
三、带数字的推演
若原分数 [-2,0,2] 经拟合 A=-1、B=0 后概率约 [0.119,0.5,0.881]。
排序未变,但输出现在能按概率阈值使用。
四、方案对比
| 方案/对象 | 核心特点 | 代价或边界 |
|---|---|---|
| Platt | 数据少、参数少 | 只能拟合 sigmoid |
| Isotonic | 非参数单调 | 小数据易过拟合 |
| 不校准 margin | 排序直接使用 | 不能解释为概率 |
五、执行流程
训练 SVM -> 校准集/OOF 得 margin -> 拟合 A/B -> 测试集可靠性图
-> 报 NLL/Brier/AUC -> 上线监控分桶发生率
六、边界条件与工程代价
若基础 SVM 和校准器使用同一数据,会把过拟合 margin 映射得过于自信。
多分类可能对 OvR 分数分别校准后归一化,也可能像 LIBSVM 一样对 OvO 成对概率做耦合;这些方法不等价,必须说明库实现并检查各类概率和为 1。
记忆钩子:Platt 做的是“margin 保持顺序,再套 sigmoid 赋概率含义”。
七、常见误区与追问
-
误区:SVM decision_function 已是概率。 它是到边界相关的有符号分数。
-
追问:为何 AUC 常不变? 单调映射不改变样本排序。
-
误区:在训练集拟合 sigmoid 最充分。 会产生校准泄漏。
-
追问:Platt 和 isotonic 怎么选? 校准样本少选 Platt,充足时验证更灵活方法。
-
追问:何时重校准? 先验或 score—结果关系漂移时。
八、加强记忆
Platt 做的是“margin 保持顺序,再套 sigmoid 赋概率含义”。
训练、校准、测试三份职责必须分开。