风控模型指标:别只盯着 AUC


风控模型指标:别只盯着 AUC

风控模型指标封面图

如果你在准备风控算法面试,或者刚开始接触互联网风控,很容易把模型评估理解成一句话:

AUC 越高,模型越好。

这句话不算错,但在真实风控业务里远远不够。

风控模型不是 Kaggle 排榜。它面对的是一个更拧巴的问题:正常用户很多,风险用户很少;误伤正常用户会伤体验,漏放风险用户会造成资损。

所以风控里最常见、也最接近业务的一句话其实是:

在误伤率不超过 1% 的情况下,黑样本召回率能做到多少?

这篇文章就围绕这句话,把 Precision、Recall、F1、ROC-AUC、PR-AUC、KS、FPR、FNR、Precision@TopK 这些指标重新串起来。

风控模型指标总览:从混淆矩阵到低误伤召回


一、先从混淆矩阵开始

风控二分类里,一般把:

  • 黑样本 / 风险样本 / 欺诈样本:正类,记为 Positive;
  • 白样本 / 正常样本:负类,记为 Negative。

模型做完预测后,会出现四种结果。

flowchart TD
    A[真实样本] --> B{真实是否风险}
    B -->|真实风险| C{模型是否拦截}
    B -->|真实正常| D{模型是否拦截}
    C -->|拦截| TP[TP:抓对黑样本]
    C -->|放过| FN[FN:漏放黑样本]
    D -->|拦截| FP[FP:误伤正常用户]
    D -->|放过| TN[TN:正确放过正常用户]

四个格子分别是:

  • TP:True Positive,真实是黑,模型也判黑,抓对了;
  • FP:False Positive,真实是白,模型判黑,误伤了;
  • TN:True Negative,真实是白,模型也判白,放对了;
  • FN:False Negative,真实是黑,模型判白,漏放了。

风控最怕两个问题:

  • FP 太多:正常用户被拦、登录失败、优惠券领不了、内容被误删;
  • FN 太多:黑产没被拦住,盗号、薅羊毛、刷量、广告作弊继续发生。

二、Precision:我拦的人里,有多少真的是坏人?

Precision 叫准确率、查准率,也可以理解成拦截命中率

公式:

它回答的问题是:

模型判成风险的人里面,有多少真的有风险?

比如模型拦了 100 个账号,其中 80 个是真黑号,20 个是正常用户。

业务含义就是:

我这把刀砍出去,砍中的有多少是真坏人?

Precision 高,说明误伤相对少,拦截队列比较干净。

但它有一个明显问题:Precision 高,不代表抓得多。

如果模型只拦 10 个最明显的黑号,10 个全是黑号,Precision 是 100%。但如果真实黑号有 10000 个,它只抓住 10 个,业务上几乎没用。


三、Recall:真坏人里,我抓住了多少?

Recall 叫召回率,也可以叫黑样本召回率

公式:

它回答的问题是:

真实风险样本里,有多少被模型拦住了?

比如真实有 1000 个黑号,模型抓住了 700 个,漏掉 300 个。

业务含义就是:

坏人来了,我能抓住多少?

Recall 高,说明漏放少。

但 Recall 也不能单独看。如果模型把所有人都判成风险,那么所有黑样本都被拦住,Recall = 100%。可正常用户也全被误伤,业务直接爆炸。


四、Precision 和 Recall 是一对拉扯

风控模型一般会输出一个风险分。阈值越高,模型越保守;阈值越低,模型越激进。

flowchart LR
    A[提高阈值] --> B[拦截更少]
    B --> C[Precision 往往更高]
    B --> D[Recall 往往更低]

    E[降低阈值] --> F[拦截更多]
    F --> G[Recall 往往更高]
    F --> H[Precision 往往更低]

这就是 Precision 和 Recall 的核心矛盾:

风控阈值调节对 Precision、Recall 和误伤率的影响

  • 阈值高:少拦,拦得准,但漏得多;
  • 阈值低:多拦,抓得多,但误伤也多。

风控策略的难点不是“让某个指标最大”,而是在业务能接受的误伤、人审、资损约束下,找到合适阈值


五、F1:一个折中指标,但不是风控终点

F1 是 Precision 和 Recall 的调和平均。

公式:

它的特点是:Precision 和 Recall 只要有一个很低,F1 就会被拖下去。

比如:

  • Precision = 90%,Recall = 10%,F1 不会好;
  • Precision = 50%,Recall = 90%,F1 也不一定好。

F1 适合做模型评估的参考,但在风控业务里,它通常不是最终决策指标

原因很简单:业务往往不是要一个“综合最优点”,而是有明确约束:

  • 登录风控:正常用户误伤率不能超过多少;
  • 广告反作弊:广告主资损要压到多少;
  • 内容安全:人审队列每天最多能处理多少;
  • 营销风控:优惠券拦截不能影响正常新用户转化。

所以业务更常问:

误伤率卡在 1% 以内时,黑样本召回能到多少?


六、FPR:好人里,我误伤了多少?

FPR 是 False Positive Rate,误伤率。

公式:

它回答的问题是:

真实正常用户里,有多少被模型误判成风险?

比如真实有 100000 个正常用户,模型误伤了 1000 个。

这就是风控里常说的:

误伤率不能超过 1%。

为什么 FPR 在风控里这么重要?

因为正常用户通常远多于风险用户。

假设:

  • 正常用户:100 万;
  • 风险用户:1 万;
  • FPR = 1%。

那么误伤人数就是:

1% 听起来很小,但放到大盘用户里可能就是一大批投诉、流失和转化损失。

所以风控里不是单纯说模型 AUC 高,而是要看:

在 FPR 很低的时候,Recall 能不能做高。


七、FNR:坏人里,我漏掉了多少?

FNR 是 False Negative Rate,漏放率。

公式:

它回答的问题是:

真实风险样本里,有多少逃过去了?

FNR 和 Recall 是互补关系:

如果 Recall = 80%,那么 FNR = 20%。

在资损型场景里,比如盗号、支付欺诈、营销薅羊毛,FNR 往往直接对应漏放风险。漏放越高,意味着越多黑产进入后续业务链路。


八、ROC-AUC:整体排序能力

ROC 曲线的横轴是 FPR,纵轴是 TPR,也就是 Recall。

flowchart LR
    A[模型输出风险分] --> B[不断调整阈值]
    B --> C[得到不同 FPR]
    B --> D[得到不同 Recall / TPR]
    C --> E[画出 ROC 曲线]
    D --> E
    E --> F[计算 ROC-AUC]

ROC-AUC 衡量的是整体排序能力。

可以这样理解:

随机拿一个黑样本和一个白样本,模型能不能把黑样本排在白样本前面。

AUC 越高,说明模型整体区分能力越强。

但它在风控里有一个问题:ROC-AUC 看的是整体区间,不一定关心低误伤区域。

比如业务只允许:

那真正关心的是 ROC 曲线左侧那一小段。

一个模型整体 AUC 很高,但在 FPR < 1% 的区域表现一般,业务上未必好。


九、PR-AUC:黑样本很少时更敏感

PR 曲线的横轴是 Recall,纵轴是 Precision。

PR-AUC 是 Precision-Recall 曲线下面积。

它更适合正负样本极不平衡的场景,而风控恰好经常是这种场景。

比如:

  • 正常用户:100 万;
  • 风险用户:1 万;
  • 黑样本占比:1%。

这种情况下,ROC-AUC 有时看起来不错,但 Precision 可能很低。

比如模型拦了 10000 个,其中:

  • 真黑:1000;
  • 误伤:9000。

那么:

如果后面接人工审核,审核同学会发现 10 个里面 9 个是正常人,队列质量很差。

所以黑样本稀少时,要重点看:

  • Precision;
  • Recall;
  • PR-AUC;
  • Precision@TopK。

十、KS:金融风控常用的区分度指标

KS 在金融风控里很常见,用来衡量模型对好坏样本的区分能力。

它看的不是单个阈值,而是好坏样本分数分布能不能拉开。

flowchart TD
    A[模型风险分] --> B[黑样本累计分布]
    A --> C[白样本累计分布]
    B --> D[计算两条累计分布的差值]
    C --> D
    D --> E[最大差值 = KS]

简单理解:

如果模型好,黑样本的风险分应该整体更高,白样本的风险分应该整体更低。

KS 越大,说明模型越能把好人和坏人分开。

经验上可以粗略理解为:

  • KS < 0.2:区分能力偏弱;
  • KS 0.2 - 0.4:有一定效果;
  • KS 0.4 - 0.6:比较好;
  • KS > 0.6:很强,但也要警惕数据泄露或样本穿越。

在互联网风控里,KS 也能看,但没有信贷评分卡场景里那么绝对核心。


十一、Precision@TopK:风险最高的一批,命中率如何?

很多风控场景不是直接全自动拦截,而是要接人工审核、运营复核或者高风险巡检。

这时资源是有限的。

比如每天只能审核 1000 个账号,那你关心的就是:

也就是:

模型风险分最高的 1000 个账号里,有多少是真的风险?

如果 Top 1000 里有 850 个真黑:

这个指标非常适合:

  • 人工审核队列;
  • 高风险账号巡检;
  • 广告作弊点击排序;
  • 内容安全优先审核;
  • 营销活动异常用户排查。

它回答的是一个很业务的问题:

我资源有限,优先处理最可疑的一批,命中率够不够高?


十二、最重要的业务表达:Recall @ FPR = 1%

现在回到开头那句话:

在误伤率不超过 1% 的情况下,黑样本召回率能做到多少?

翻译成指标语言就是:

或者:

因为 TPR 本质上就是 Recall。

这句话比“模型 AUC 是 0.94”更接近业务,因为它同时回答了两个问题:

  • 业务能接受多少误伤?
  • 在这个误伤约束下,模型能抓住多少风险?

举个例子:

  • 模型 A:ROC-AUC = 0.96,FPR = 1% 时 Recall = 35%;
  • 模型 B:ROC-AUC = 0.94,FPR = 1% 时 Recall = 55%。

如果只看整体 AUC,模型 A 更好。

但如果业务明确要求误伤率不能超过 1%,模型 B 可能更有价值。因为它在同样误伤约束下,抓住了更多黑样本。


十三、一个完整数字例子

假设测试集里有:

  • 正常用户:100000;
  • 风险用户:10000。

业务要求:

也就是说:

模型调阈值后,得到:

  • TP = 6000;
  • FP = 1000;
  • FN = 4000;
  • TN = 99000。

那么:

业务表达就是:

在误伤率 1% 的约束下,黑样本召回率达到 60%,拦截准确率 85.7%。

这句话比“模型 AUC 是 0.94”更能说明模型能不能上线。


十四、不同指标适合什么场景?

mindmap
  root((风控指标选择))
    整体排序能力
      ROC-AUC
      KS
    黑样本稀少
      PR-AUC
      Precision
      Recall
    低误伤约束
      FPR
      Recall@FPR
    人审队列
      Precision@TopK
      TopK召回
    资损控制
      FNR
      漏放金额

如果是模型离线评估,可以看 ROC-AUC、PR-AUC、KS。

如果是策略上线评估,就要进一步看:

  • FPR 是否满足业务容忍度;
  • Recall 是否足够覆盖风险;
  • Precision 是否保证拦截质量;
  • Precision@TopK 是否匹配人审容量;
  • 漏放金额、误伤投诉、转化损失是否可接受。

十五、面试里可以这样回答

如果面试官问:

风控模型你会看哪些指标?

可以这样答:

我不会只看 AUC。AUC 可以反映整体排序能力,但风控场景更关注业务约束下的效果,比如在 FPR 不超过 1% 或 0.5% 的情况下,黑样本 Recall 能做到多少。
如果后面接人工审核,我还会看 Precision@TopK,保证审核队列的命中率。
在黑样本极度稀少的情况下,我会更关注 PR-AUC、Precision、Recall,而不是只看 ROC-AUC。
最后还要结合业务成本,比如误伤正常用户的损失、漏放风险用户的资损、人审容量和策略拦截强度,选择合适阈值。

这个回答的重点是:你不是只懂公式,而是知道指标背后的业务取舍。


十六、最后用一句话记住

风控模型评估的核心不是:

AUC 有多高?

而是:

在可接受误伤率下,能召回多少真实风险?

再压缩成一句面试金句:

风控不是单纯追求 AUC,而是在低误伤约束下最大化黑样本召回,同时兼顾拦截队列的 Precision。


文章作者: Onefly
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Onefly !
评论
  目录