更新于 2026年10月15日 全文 1800 字未阅读

分类阈值与混淆矩阵#

假设你训练了一个用于垃圾邮件检测的逻辑回归(Logistic Regression)模型,它的输出是 0 到 1 之间的一个概率值,表示某封邮件是垃圾邮件的可能性。预测值 0.50 表示这封邮件有 50% 的概率是垃圾邮件,预测值 0.75 表示它有 75% 的概率是垃圾邮件,依此类推。

接下来你打算把这个模型部署到邮件应用里,把垃圾邮件自动过滤到独立的文件夹。但要做到这一点,必须把模型输出的原始数值(比如 0.75)转换成两种类别(Class)之一:「垃圾邮件」或「正常邮件」。

为了完成这个转换,你需要选择一个概率门槛值,称为分类阈值(Classification Threshold)。概率高于该阈值的样本会被归入正类(Positive Class)——也就是你正在检测的目标类别(这里就是 垃圾邮件);概率低于阈值的样本则被归入负类(Negative Class)——也就是另一种类别(这里就是 正常邮件)。

关于分类阈值的边界情况

你可能会问:如果预测分数正好等于分类阈值(比如分数和阈值都是 0.5),结果会怎样?这个边界情况的处理方式取决于你所使用的分类模型实现。例如,Keras 库在分数等于阈值时会预测为负类,但其他工具/框架的处理方式可能会有所不同。(MLWM:不过这个问题并不重要)

假设模型给一封邮件打了 0.99 分(预测它有 99% 的概率是垃圾邮件),给另一封邮件打了 0.51 分(预测它有 51% 的概率是垃圾邮件)。如果你把分类阈值设为 0.5,模型会把这两封邮件都判定为垃圾邮件;如果把阈值提高到 0.95,则只有 0.99 分的那封邮件会被判定为垃圾邮件。

虽然 0.5 看起来是一个直觉上合理的阈值,但当两种错误分类的代价不对等、或者类别分布不均衡时,0.5 并不是一个好的选择。如果垃圾邮件在所有邮件中只占 0.01%,或者把正常邮件误判为垃圾邮件的后果比让垃圾邮件进入收件箱更严重,那么把模型认为至少有 50% 概率是垃圾邮件的邮件一律标为垃圾邮件,将带来糟糕的后果。


混淆矩阵#

概率预测只是模型对可能性的预测,并不等于真实标签(Ground Truth)。对于二分类器的每一个输出,存在4种可能的结果。以垃圾邮件分类器为例,如果你把真实标签作为列、模型预测作为行,就能得到下面这张表,称为混淆矩阵(Confusion Matrix):

实际为正 实际为负
预测为正 真正例(True Positive, TP):垃圾邮件被正确地分类为垃圾邮件——这些邮件会被自动投递到垃圾邮件文件夹。 假正例(False Positive, FP):正常邮件被错误地分类为垃圾邮件——这些正常邮件会被错误地丢进垃圾邮件文件夹。
预测为负 假负例(False Negative, FN):垃圾邮件被错误地分类为正常邮件——这些垃圾邮件没能被拦截,最终出现在收件箱里。 真负例(True Negative, TN):正常邮件被正确地分类为正常邮件——这些正常邮件会被直接投递到收件箱。

注意每一行的总和给出了所有的「预测为正」(TP + FP)和所有的「预测为负」(FN + TN),无论预测是否正确;而每一列的总和则给出了所有的「真实为正」(TP + FN)和所有的「真实为负」(FP + TN),无论模型如何分类。

当真实正例的总数与真实负例的总数差距较大时,就称数据集是 类别不均衡(Class-Imbalanced) 的。一个类别不均衡的数据集可能是这样的:数据集里有数千张云的照片,而你感兴趣的那种罕见云(比如「卷云 volutus」)只出现了很少几次。

关于对混淆矩阵的理解(包括多个类别对应的混淆矩阵),可以参见文章分类评估指标:准确率、召回率与F-score解析中的内容。


阈值对真假正负例的影响#

不同的阈值通常会得到不同的真正例、假正例、真负例、假负例数量。

请自己调整阈值,动手试一试。

这个交互小组件包含三个示例数据集:

  • 可分(Separated):正例和负例区分得很清楚,大多数正例的分数都高于负例。

  • 不可分(Unseparated):很多正例的分数低于负例,同时也有很多负例的分数高于正例。

  • 类别不均衡(Imbalanced):正例的样本数量非常少。

巩固理解#

  1. 假设有一个钓鱼网站或恶意网站的分类模型,其中钓鱼/恶意网站属于标签为 1(真)的类别,安全网站属于标签为 0(假)的类别。该模型错误地把一个安全网站判定为恶意网站。这种情况叫什么?

    • A. 假正例(False Positive)

    • B. 真正例(True Positive)

    • C. 假负例(False Negative)

    • D. 真负例(True Negative)

  2. 一般来说,当分类阈值提高时,假正例的数量会怎样变化?真正例的数量又会怎样变化?请用上面的滑块动手试试。

    • A. 真正例和假正例都会减少

    • B. 真正例和假正例都会增加

    • C. 真正例增加、假正例减少

  3. 一般来说,当分类阈值提高时,假负例的数量会怎样变化?真负例的数量又会怎样变化?请用上面的滑块动手试试。

    • A. 真负例和假负例都会增加

    • B. 真负例和假负例都会减少

    • C. 真负例增加、假负例减少

关键术语:

小结

  • 分类阈值: 决定了如何把逻辑回归输出的概率转换为二元类别:概率高于阈值判为正类,低于阈值判为负类。
  • 混淆矩阵: 以 2×2 的表格系统记录了模型预测与真实标签的四种组合:TP、FP、FN、TN,是评估二分类模型表现的基本工具。
  • 阈值选择没有标准答案: 当两种错误的代价不对等、或数据存在严重的类别不均衡时,需要结合业务目标来选择合适的阈值——提高阈值会减少假正例但增加假负例,降低阈值则相反。
阅读 --