机器学习 · 互动实验室

阈值与 ROC

阈值是概率分界线:预测坏件概率达到阈值,就判为可疑。

01移动概率阈值02看分类结果03对应 ROC 点
看这里
真坏零件真好零件当前概率阈值对应的 ROC 点每点一件零件 · 100 个合成样本

文字版:阈值与 ROC 曲线在做什么

分类模型给出的其实是一个概率,不是「是」或「否」。把概率变成判定,需要人为定一条线:概率达到多少就算可疑?这一页让你直接拖这条线,看混淆矩阵的四个数字、检出率、误报率和 ROC 曲线上的位置怎样一起变。

画面上正在发生什么

每个点是一个零件,颜色是它的真实好坏,位置是模型给它的概率。把阈值从高往低拖:查出的坏件越来越多(漏掉的越来越少),但被误判的好件也越来越多。这两件事永远是此消彼长的,没有哪个阈值能让它们同时变好。

右下角的 ROC 曲线把所有阈值的结果连成一条线,当前阈值对应着曲线上的一个点。关键在于:拖动阈值时 AUC 不变。AUC 衡量的是模型把坏件排在好件前面的整体能力,与你选哪个阈值无关。要改善 AUC 只能换模型或换特征,调阈值是没用的。

什么时候它会骗你

  • 单看准确率会被类别比例骗过去。把「真实坏零件占比」调到很低,再把阈值拉到最高——模型几乎把所有零件都判为好件,准确率却很高,因为它答对了占绝大多数的那一类。这个高分毫无价值。
  • 论文里那个漂亮的阈值,往往是在测试集上挑出来的。页面有个「试试本批准确率最高的阈值」按钮。在同一批数据上挑出最好的阈值再报成绩,等于偷看了答案。阈值必须在训练集或验证集上定好,再拿到测试集上用一次。
  • AUC 高不代表概率可信。AUC 只看排序对不对,不看数值准不准。一个把所有概率都压在 0.1 到 0.2 之间但排序完美的模型,AUC 可以是 1.0,而它报出的「10% 的风险」和真实风险完全对不上。要判断概率数值是否可靠,得另外做校准曲线。

常见问题

AUC 是什么意思?
AUC 是 ROC 曲线下的面积,可以直接理解为:随机取一个正例和一个负例,模型给正例的分数高于负例的概率。0.5 相当于随机排序,1.0 表示排序完全正确。它衡量排序能力,不是准确率。
阈值应该怎么定?
取决于两类错误的代价。漏诊代价远高于误诊时(如癌症筛查)应把阈值压低,保证高检出率;误报成本高时(如自动封号)应提高阈值。定阈值是业务决策,不是算法问题,而且必须在没参与最终评估的数据上定。
类别严重不平衡时还能看 ROC 吗?
可以看,但容易过于乐观:负例数量巨大时,即使误报很多,假阳性率的分母也很大,曲线依然好看。这种情况更推荐 PR 曲线(精确率-召回率曲线),它对正例稀少的场景更敏感。

本页使用 100 个教学合成样本,混淆矩阵、各项比率与 AUC 随参数实时计算,不代表任何真实检测系统的性能。

作者与维护:覃秉丰 · 关于覃秉丰 · 引用本页讲解

继续学习