SVM 能直接输出概率吗?
简化版
标准 SVM 优化 margin,不直接输出概率;predict_proba 通常来自额外 Platt/成对耦合校准,计算更贵且概率类别顺序、argmax 与原始 decision 结果有时可能不同。需要概率时必须独立验证校准。
详细版
-
启用 probability 往往在训练内部增加交叉验证。
-
decision score 更适合纯排序场景。
-
概率校准不会自动修复类别先验漂移。
-
多分类需把多个二分类概率耦合。
-
保存模型时同时保存校准参数和 classes 顺序。
完整版教学
一、概率接口是第二阶段模型
margin 只关心间隔顺序,概率要求分数桶与真实频率一致。
库为此再拟合映射,因此 probability=True 不只是改变输出格式。
校准映射与最终分类决策可能使用不同内部路径,不能假设 argmax(proba) 永远等于 predict。
二、底层机制与公式
binary: P=1/(1+exp(Af+B))
multiclass: pairwise probabilities -> coupling to sum 1
三、带数字的推演
margin 为 2 不代表 0.88 概率;只有拟合 A=-1、B=0 的特定校准器时才约为 sigmoid(2)=0.881,换数据后 A/B 会变。
四、方案对比
| 方案/对象 | 核心特点 | 代价或边界 |
|---|---|---|
| decision_function | 快、保排序 | 非概率 |
| 内置 probability | 接口方便 | 训练更慢、实现隐含 CV |
| 外部 CalibratedCV | 流程显式可控 | 需管理折与数据 |
五、执行流程
训练基础 SVM -> OOF/校准集 margin -> 拟合概率映射
-> 测 NLL/Brier/reliability -> 核对 classes 列 -> 上线监控
六、边界条件与工程代价
训练样本少时,多分类概率耦合方差很大;应报告按类校准与区间。
若只需要 Top-K 排序,强行概率化增加成本且不改变排序收益,可直接使用 margin。
记忆钩子:SVM 的 probability 是“margin 后再校准”,不是原目标的天然产物。
七、常见误区与追问
-
误区:SVM 原生概率就是 margin 归一化。 概率来自额外校准模型。
-
追问:开启 probability 为何训练慢? 通常需内部交叉验证拟合映射。
-
误区:概率总能改善 AUC。 单调校准通常不改变排序。
-
追问:多分类概率怎么来? 对二分类概率做成对耦合等处理。
-
追问:如何验收? 检查列顺序、可靠性图、NLL 与 argmax/predict 差异。
八、加强记忆
SVM 的 probability 是“margin 后再校准”,不是原目标的天然产物。
只排序用 margin,要决策概率才承担校准成本。