不平衡分类 · 阈值政策

阈值往左一格,为什么告警会突然变多?

先别把 0.5 当成标准答案。下面固定同一批账户盗用风险分数,只改决策阈值、目标总体的正类率和错误代价。你会看到:ROC 上很小的假正率,落到大量负类上,仍可能变成一长串人工告警。

先动阈值,看四格账怎么换位

分数模板来自 240 个真实正类和 3000 个真实负类的固定示意样本,没有随机数。切换正类率时,我们保留两类分数分布,只把它们重加权到 10000 次登录。

目标总体:40 个正类 / 9960 个负类

正类率改变混淆矩阵的类基数、精确率、F1、告警量和 PR 随机基线,不改变固定分数模板的排序。

成本情景改变漏报与误报的相对代价,也改变图中标记的目标运营区间。

0.50

可拖动,也可用方向键微调;Page Up / Page Down 会大步移动。

固定分数账本

每一行按本类内部频率归一化;竖线是当前阈值,不代表概率已经校准。

混淆矩阵

行是真实标签,列是阈值后的决策
真实 \ 决策 预测正类 预测负类
实际正类 28TP · 找到 12FN · 漏报
实际负类 159FP · 误报 9801TN · 放过

当前运营读数

精确率 Precision
14.97%
召回率 Recall
70.00%
F1
24.69%
假正率 FPR
1.60%
告警量
187 / 300
漏报量 FN
12

当前判读

这个点落在目标运营区间内

召回、告警质量、假正率和人审容量同时过线。是否发布还要检查关键切片与区间估计。

相对成本:339 = 15×FN + 1×FP。

可行阈值:约 0.32–0.52;约束内最低成本点在 0.37 附近。

当前阈值 0.50,真正例 28,假正例 159,假负例 12,真负例 9801,告警 187 条。

两张曲线说的是同一组阈值

蓝线是固定模型的所有阈值,圆点是你刚刚选的阈值。淡橙区域只表示率指标门槛;粗橙线还同时满足告警容量,因此才是这里真正的目标运营区间。

目标:Recall≥68% · Precision≥12% · FPR≤2.5% · 告警≤300

PR 曲线:告警有多“值”

横轴是找回多少正类,纵轴是告警里有多少真的为正。

R 70.00% · P 14.97%

ROC 曲线:两类怎样被排序

横轴是假正率,纵轴是真正率;对角虚线是随机排序基线。

FPR 1.60% · TPR 70.00%
模型曲线 当前阈值 率指标门槛 目标运营区间 随机基线

正类率会移动 PR 基线:当前随机模型的 precision 基线只有 0.40%。ROC 的 TPR/FPR 主要由两类内部排序决定,正类率变化时几乎不动;PR 的 precision 和实际告警量会明显变化。

到底该怎样选阈值?

阈值不是模型附带的小数,它是一条运营政策。真正的选择顺序,是先把业务约束写成计数和代价,再去验证数据上找稳健区间。

先看混淆矩阵的计数

FPR 只有 1%,若负类有一万条,仍会产生约一百条误报。人工处理的是告警条数,不是图上的百分比。

再看 PR 的正类率基线

人为富集到 5% 正类的验证集会让 precision 看起来更高。部署到 0.4% 的真实流量时,命中率不能原样照搬。

最后冻结一个区间

如果一段相邻阈值都满足召回、误报和容量,优先选对流量波动留有余量的点,不必迷信小数点后第四位的最优值。