4. 不平衡数据下的评估

在工业异常检测中,正常样本往往占据绝大多数,异常样本可能只占千分之一甚至更低。这种极端的类别不平衡会从根本上改变评估指标的行为:准确率会严重虚高,ROC曲线会显得过于乐观,而真正决定模型能否上线的,往往是少数异常样本上的精确率与召回率。本节围绕类别不平衡的影响、PR曲线的构造,以及AUC-PR与AUC-ROC的差异与适用场景展开。

一、类别不平衡如何扭曲评估结论

假设一条产线每天产生10000个样本,其中真正异常只有20个。若模型把所有样本都判为正常,准确率仍高达99.8%,但召回率为0,完全不可用。这说明在异常检测中,准确率不是有效指标,因为它被多数类主导。

更隐蔽的问题出现在ROC曲线上。ROC的横轴是假正率FPR = FP / (FP + TN),纵轴是真正率TPR = TP / (TP + FN)。当负样本数量极大时,即使FP的绝对数量很大,FPR仍可能很小,于是ROC曲线看起来仍然靠近左上角,AUC-ROC可能达到0.95以上,但实际部署时误报会淹没运维人员。因此,不平衡场景下必须同时观察PR曲线。

核心结论:类别不平衡不会改变模型的排序能力,但会显著改变“误报”在业务上的代价。ROC对类别比例不敏感,PR对少数类更敏感。

二、精确率-召回率曲线与AUC-PR

精确率Precision = TP / (TP + FP),回答“报警中有多少是真的”;召回率Recall = TP / (TP + FN),回答“真实异常中抓到了多少”。PR曲线以Recall为横轴、Precision为纵轴,通过不断调整判定阈值得到一系列(Recall, Precision)点并连线。

与ROC不同,PR曲线没有使用TN,因此不受大量真负样本“稀释”。当异常极稀少时,PR曲线能直接暴露误报的严重程度。AUC-PR即PR曲线下面积,常用平均精度AP(Average Precision)近似,数值越高表示在保持高召回的同时精确率下降越慢。

下面用一段伪代码说明如何从异常分数计算PR曲线与AUC-PR:

输入: y_true (0/1), score (异常分数, 越大越异常)
1. 按 score 从大到小排序样本
2. 依次将每个样本判为异常, 累计 TP、FP
3. 对每个阈值计算:
   precision = TP / (TP + FP)
   recall    = TP / (TP + FN)
4. 绘制 (recall, precision) 曲线
5. AUC-PR = Σ (R_i - R_{i-1}) * P_i   # 阶梯积分/平均精度

在工业场景中,通常还会关注固定召回率下的精确率,例如“召回率达到90%时,精确率是否高于30%”,这比单一AUC-PR更贴近运维可接受水平。

三、AUC-PR与AUC-ROC的区别与适用场景

两者的根本差异在于是否使用真负样本TN。AUC-ROC同时考虑正负两类,衡量的是模型整体排序能力;AUC-PR只关注正类(异常)的查全与查准,对少数类更敏感。当负样本远多于正样本时,AUC-ROC往往偏高且变化平缓,而AUC-PR更能区分模型优劣。

对比维度 AUC-ROC AUC-PR
坐标轴 FPR vs TPR Recall vs Precision
是否使用TN 是 否
对类别不平衡敏感度 低,容易乐观 高,更贴近异常检测
随机基线 0.5 约等于正类比例
适用场景 类别较均衡、关注整体排序 异常稀少、关注误报与漏报
工业异常检测推荐度 辅助参考 主指标

需要特别注意的是,AUC-PR的随机基线不是0.5,而是正类占比。例如异常率1%时,随机模型的AUC-PR约为0.01。因此不能拿AUC-PR与0.5比较,而应与该基线比较,或与业务要求的精确率-召回率组合比较。

四、案例:同一模型下两种指标的差异

某轴承故障检测任务中,测试集包含10000个正常样本和100个异常样本。模型A的AUC-ROC为0.96,AUC-PR为0.42;模型B的AUC-ROC为0.93,AUC-PR为0.61。若只看AUC-ROC,会误以为模型A更好;但实际部署中模型B在相同召回率下误报更少,更适合上线。这正是不平衡数据下“ROC乐观、PR务实”的典型体现。

实操建议:在异常检测报告中同时给出AUC-ROC与AUC-PR,并明确标注异常率。若两者结论冲突,以AUC-PR和固定召回率下的精确率为准。

五、常见误区与复盘

  • 误区一:用准确率评价异常检测模型。应改用PR曲线、AUC-PR、F1或固定召回率下的精确率。
  • 误区二:认为AUC-ROC高就代表模型可用。高AUC-ROC可能只是负样本太多造成的假象。
  • 误区三:把AUC-PR与0.5比较。应使用正类比例作为随机基线。
  • 误区四:忽略阈值选择。AUC是排序指标,实际部署必须结合业务代价选择阈值。

复盘时建议固定三件事:异常率、评估指标组合、业务可接受的误报上限。只有把指标与业务代价绑定,PR曲线和AUC-PR才能真正指导阈值优化与模型选型。

类别不平衡下 AUC-ROC 与 AUC-PR 的评估差异 ROC 曲线(对不平衡不敏感) FPR(假正率) TPR(真正率) 随机基线 模型A AUC=0.96 模型B AUC=0.93 负样本极多 → FPR 被稀释 PR 曲线(对少数类敏感) Recall(召回率) Precision(精确率) 随机基线≈异常率 模型A AUC-PR=0.42 模型B AUC-PR=0.61 误报直接压低 Precision 结论:不平衡异常检测以 AUC-PR 为主指标,AUC-ROC 仅作辅助参考;两者冲突时优先信任 PR 曲线。