卷 V · 交代CH 19工位 19/24

ROC、AUC、增益:三张图各回答什么问题

工位 STEP 8.2 / 8.4 可视化 · 评估 20% 的核心 评分员在找:三张图不是三张装饰。ROC 说明「排序能力」,阈值表说明「你怎么用它」,增益表说明「这值多少钱」——最后这张是决策支持的落点。

上一章的阈值表回答的是「在某个阈值下模型表现如何」。这一章的两张图回答的是另外两个问题:不管阈值,这个模型的排序能力有多强(ROC / AUC),以及把这个排序拿去用,能省多少钱(增益 / 提升度)。三张图配齐,Step 8 的可视化一节就完整了。

ROCAUCLift累计增益PR 曲线

ROC:把所有阈值一次画完

上一章那张阈值表有 7 行,每行是一个阈值下的(召回率,误报率)。ROC 曲线就是把所有可能的阈值都画上去连成一条线。横轴是误报率 FPR = FP/(FP+TN),纵轴是召回率 TPR = TP/(TP+FN)。

模型AUC曲线形状
逻辑回归0.943光滑——每个样本的概率都不同
朴素贝叶斯0.932光滑
决策树(深度 4)0.897阶梯状——深度 4 的树只有 10 片叶子,最多只能输出 10 种不同概率
瞎猜0.500对角虚线

AUC 的意思,一句话:随机抽一个正例和一个负例,模型给正例打的分更高的概率。逻辑回归的 0.943 就是「这件事有 94.3% 的把握」。这个解释比「曲线下面积」好懂得多,而且可以直接写进报告给非技术读者看。

树的曲线是阶梯状的,这解释了一个常见困惑:为什么树的 AUC 常常低于逻辑回归,但准确率不一定更差?因为 AUC 奖励「排序精细」——树把 336 个训练样本归到 10 片叶子里,同一片叶子里的地区在树看来完全一样,没法互相排序。而如果你的用途正是「排序取前 N 名」,这就是个真实的缺点,值得写进 8.4。

⚠ ROC 的陷阱:负例很多时它会骗你

ROC 的横轴分母是负例总数。如果你的数据 99% 是负例(比如欺诈检测),FPR 从 0.01 涨到 0.02 在图上几乎看不出来,而实际误报数量翻了一倍。

所以:正例占比很低(< 10%)时,用 PR 曲线(精确率-召回率曲线)代替 ROC,因为它的两个轴都只和正例有关,不会被海量负例稀释。

本书示例数据正例占 42.3%,ROC 完全适用。但如果你自己的数据不平衡,在 8.2 里加一句「因正类占比仅 X%,同时报告 PR 曲线与平均精确率(AP)」,这一句就是加分。

增益表:唯一能翻译成钱的那张图

ROC 和 AUC 是给技术读者的。给决策者看的是这一张——把地区按模型分数从高到低排,分成若干箱,看每箱里真正未达标的比例:

分箱(按分数降序)地区数命中箱内未达标率提升度 lift累计覆盖
前 20%28281.0002.3645.9%
20–40%29220.7591.7982.0%
40–60%2990.3100.7396.7%
60–80%2910.0340.0898.4%
80–100%2910.0340.08100%

基础率(整个测试集的未达标比例)是 42.4%。所以:

  • 第一箱的未达标率是 100%,是基础率的 2.36 倍——这就是提升度。
  • 只走访前 20% 的地区,就覆盖了 45.9% 的高风险地区;随机走访同样数量只能覆盖 20%。
  • 前 40% 覆盖 82.0%。再往后每箱的 lift 都掉到 1 以下——意味着投到 40% 就该停了,继续投等于随机撒钱。
◆ 这张表怎么变成 Step 9.1 的一段话
8.3 / 9.1 应用方案

将 144 个地区按模型输出的未达标概率降序排列,分为五等分:
· 第一等分(29 个地区)的实际未达标率为 100%,为基础率
  (42.4%)的 2.36 倍;
· 前两个等分(58 个地区,占 40%)已覆盖全部未达标地区的
  82.0%;
· 第三等分之后的提升度降至 0.73 以下,投放效率低于随机。

据此建议的投放规则:年度可投放名额若为 15 个,全部取自第一
等分;若名额扩至 40 个,取满前两个等分后停止。相比现行的
按人口平摊(命中率约等于基础率 42%),同样的 15 个名额,
预计命中数由约 6 个提升至 14–15 个。

停止规则:当候选地区的模型概率低于 0.15(对应第三等分起点)
时不再投放,因该区间的提升度已低于 1。

「停止规则」那一段是这门课最像决策支持系统的一段话。能算出「该停在哪」的模型,才叫决策支持;只报一个准确率的,是一份技术练习。

三张图的分工,一句话各一张

回答给谁看报告里的位置
混淆矩阵 + 阈值表在我选的这条线上,四种后果各多少?你自己、评分员8.1 / 8.4
ROC + AUC不管阈值,这个模型的排序能力有多强?多个模型怎么比?技术读者8.2 / 8.4
增益 / 提升度表拿去用,能省多少?该在哪停?决策者8.2 / 8.3 / 9.1

三张都要有。如果只能有一张,选第三张——因为这门课在商学院,而 LO5 要的是「a prototypical Big Data Analytics Solution to address one of the SDGs」,解决方案的价值要能被业务方看懂。

⇄ 三条产线上的这三张图
ISASOSASBDAS
ROC / AUCEvaluation 节点(选 ROC 图);Analysis 节点给 AUCroc_curveroc_auc_scoreRocCurveDisplayBinaryClassificationEvaluator(metricName='areaUnderROC');曲线要自己从 roc 属性取点画
增益 / 提升度Evaluation 节点自带 Gains、Lift、Response、Profit 四种图——这是 SPSS 在这门课里最值钱的一个功能手写:按概率排序 → qcut 分箱 → 每箱命中率 / 基础率ntile(10).over(Window.orderBy(desc('prob'))) 后 groupBy 聚合
成本/利润Evaluation 节点的 Profit 图(可填收入与成本)手写代价函数(第 18 章)手写

ISAS 的 Evaluation 节点值得专门花二十分钟:它一次给出 Gains / Response / Lift / Profit 四张图,而且 Profit 图允许你填单位收益和单位成本——那正是第 18 章代价敏感分析的可视化版本。把这四张图截进 ISAS 报告,Step 8.2 会非常充实,而且 OSAS、BDAS 两次可以拿它当参照说「我们用 Python 复现了同样的增益分析,结果一致」。

⚠ 分箱的两个细节

1. 箱数取决于样本量。10 分箱是行业惯例(decile),但本例测试集只有 144 行,10 箱后每箱 14 个,箱内比例的抖动会很大。样本少就用 5 箱,并在报告里说明原因。(Demo 里可以切换 5/10 箱对比看抖动。)

2. 增益表必须在测试集上算。在训练集上算的增益表会好看得多,也毫无意义。这是一个很常见的错误,因为很多工具默认在全量数据上出图。SPSS 的 Evaluation 节点要接在 Partition 之后并勾选只用 Testing 分区。

▣ 本章交付物 —— 报告里放什么

1. 一张 ROC 图,含至少两个模型 + 对角线,图注写「AUC = X,含义:随机抽取一个正例与一个负例,模型给正例更高分的概率为 X」。

2. 一张增益/提升度表(5 或 10 箱)+累计增益曲线,在测试集上算

3. 投放方案与停止规则那一段(上面模板),约 200 字。这一段同时供 8.3 与 9.1 使用。

4. 一句指标选择说明:若正类稀少,加一句「同时报告 PR 曲线与 AP,因 ROC 在负例占绝对多数时会低估误报的绝对数量」。

这一章的一句话

ROC 回答「排序能力有多强」(AUC 0.943 = 随机一正一负、正例得分更高的概率为 94.3%),增益表回答「拿去用值多少钱」(前 20% 覆盖 45.9%、提升 2.36 倍、第三箱起提升度跌破 1 所以该停)——后一张是决策支持的落点,也是这门课在商学院里真正要你交的东西。

下一章处理 Step 8 剩下的部分,也是最难的部分:怎么把结果读成一句不出错的人话。会用到两个演示——四份统计量完全相同却长得完全不同的数据,以及一个会让你差点写出「医生越多死亡率越高」的符号翻转。