虽然准确率提供了一个单一数值来代表整体正确性,但它通常无法全面反映分类模型的性能。如前所述,准确率可能不足够,特别是在处理不平衡数据集或不同类型错误的代价差异很大时。为了获取更全面的认识,我们需要分析模型做出正确和错误预测的类型。这正是混淆矩阵所能使我们做到的。它是一个表格,通过将预测结果与真实标签进行细分对比,总结了分类算法的性能。混淆矩阵由以下基本计数构成:真阳性($TP$)、假阳性($FP$)、真阴性($TN$)和假阴性($FN$)。混淆矩阵的结构对于二分类问题(两种可能的输出类别,如“垃圾邮件”与“非垃圾邮件”,或“患病”与“健康”),混淆矩阵通常表示为一个 2x2 的表格。约定通常是:行: 表示 实际(或真实)类别标签。列: 表示模型生成的 预测 类别标签。让我们描绘一下标准布局,清楚地标明每个单元格代表什么:digraph G { rankdir=LR; node [shape=plaintext]; ConfusionMatrix [label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD ROWSPAN="2" COLSPAN="2"></TD><TD COLSPAN="2" BGCOLOR="#e9ecef">预测类别</TD></TR> <TR><TD BGCOLOR="#e9ecef">正类 (1)</TD><TD BGCOLOR="#e9ecef">负类 (0)</TD></TR> <TR><TD ROWSPAN="2" BGCOLOR="#e9ecef"><B>实际</B><BR/><B>类别</B></TD><TD BGCOLOR="#e9ecef">正类 (1)</TD><TD BGCOLOR="#b2f2bb">TP<BR/>(真阳性)</TD><TD BGCOLOR="#ffc9c9">FN<BR/>(假阴性)</TD></TR> <TR><TD BGCOLOR="#e9ecef">负类 (0)</TD><TD BGCOLOR="#ffc9c9">FP<BR/>(假阳性)</TD><TD BGCOLOR="#b2f2bb">TN<BR/>(真阴性)</TD></TR> </TABLE>>]; }标准的 2x2 混淆矩阵布局。行表示实际类别,列表示预测类别。TP 和 TN 代表正确预测,而 FP 和 FN 代表错误。以下是每个单元格的分类说明:真阳性 (TP): 模型正确预测为正类。(实际 = 正类,预测 = 正类)假阴性 (FN): 模型错误地预测为负类,而实际是正类。这也称为第二类错误。(实际 = 正类,预测 = 负类)假阳性 (FP): 模型错误地预测为正类,而实际是负类。这也称为第一类错误。(实际 = 负类,预测 = 正类)真阴性 (TN): 模型正确预测为负类。(实际 = 负类,预测 = 负类)所有四个单元格的总和($TP + FN + FP + TN$)等于评估的总实例数。示例:垃圾邮件过滤器让我们考虑一个实际例子。假设我们建立了一个模型来将电子邮件分类为“垃圾邮件”(正类)或“非垃圾邮件”(负类)。我们在一组已知真实分类的 100 封电子邮件上测试此模型。运行模型后,我们得到以下结果:在 20 封实际垃圾邮件中,模型正确识别出 15 封为垃圾邮件($TP=15$),但错过了 5 封,将它们分类为非垃圾邮件($FN=5$)。在 80 封实际非垃圾邮件中,模型正确识别出 75 封为非垃圾邮件($TN=75$),但错误地将 5 封标记为垃圾邮件($FP=5$)。我们可以将这些结果整理成一个混淆矩阵:digraph G { rankdir=LR; node [shape=plaintext]; SpamMatrix [label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD ROWSPAN="2" COLSPAN="2"></TD><TD COLSPAN="2" BGCOLOR="#e9ecef">预测标签</TD></TR> <TR><TD BGCOLOR="#e9ecef">垃圾邮件 (正类)</TD><TD BGCOLOR="#e9ecef">非垃圾邮件 (负类)</TD></TR> <TR><TD ROWSPAN="2" BGCOLOR="#e9ecef"><B>实际</B><BR/><B>标签</B></TD><TD BGCOLOR="#e9ecef">垃圾邮件 (正类)</TD><TD BGCOLOR="#b2f2bb">15<BR/>(TP)</TD><TD BGCOLOR="#ffc9c9">5<BR/>(FN)</TD></TR> <TR><TD BGCOLOR="#e9ecef">非垃圾邮件 (负类)</TD><TD BGCOLOR="#ffc9c9">5<BR/>(FP)</TD><TD BGCOLOR="#b2f2bb">75<BR/>(TN)</TD></TR> </TABLE>>]; }垃圾邮件过滤器的混淆矩阵示例,在 100 封电子邮件上测试(20 封实际垃圾邮件,80 封实际非垃圾邮件)。矩阵解读混淆矩阵清楚地显示了模型的行为:对角线元素 (TP 和 TN): 这些代表正确的分类。在我们的示例中,$TP = 15$,$TN = 75$。将它们相加可得到正确预测的总数($15 + 75 = 90$)。主对角线上的高值表示良好的性能。非对角线元素 (FP 和 FN): 这些代表模型所犯的错误。假阳性 (FP = 5): 模型在电子邮件实际为“非垃圾邮件”时,5 次预测为“垃圾邮件”。这导致的结果是,合法的电子邮件可能会进入用户的垃圾邮件文件夹。假阴性 (FN = 5): 模型在电子邮件实际为“垃圾邮件”时,5 次预测为“非垃圾邮件”。这导致的结果是,垃圾邮件可能会到达用户的收件箱。根据应用场景,一种类型的错误可能比另一种更具问题。例如,在严重疾病的医学诊断中,假阴性(漏诊疾病)可能比假阳性(错误诊断健康患者,导致更多检查)带来更严重的后果。混淆矩阵清楚地显示了两种错误的计数,便于进行这种评估。其他指标的根本混淆矩阵不仅仅是一个可视化工具;它是计算几个重要分类指标的根本。$TP$、$FN$、$FP$ 和 $TN$ 的计数直接用于以下公式中:准确率: 衡量整体正确性。公式:$(TP + TN) / (TP + FN + FP + TN)$精确率: 衡量正向预测的准确性。公式:$TP / (TP + FP)$召回率(敏感度): 衡量实际正例中有多少被正确识别。公式:$TP / (TP + FN)$F1-分数: 精确率和召回率的调和平均值。我们将在后续章节中详细探讨精确率、召回率和 F1-分数。分类虽然我们侧重于二分类问题的 2x2 矩阵,但混淆矩阵也可用于多分类问题(即有两种以上可能的输出类别)。对于一个有 $N$ 个类别的问题,混淆矩阵将是一个 $N \times N$ 的表格。主对角线仍代表正确预测(其中预测类别 = 实际类别),非对角线单元格代表模型将一个类别误认为另一个类别的情况。解读原则保持不变:分析对角线以了解正确分类,并分析非对角线元素以理解不同类别之间发生的特定错误分类类型。总之,混淆矩阵是评估分类模型不可或缺的工具。它提供了预测性能的详细细分,通过显示真阳性、真阴性、假阳性和假阴性的计数,突出了模型表现出色和遇到困难的地方。这种详细的视图对于理解模型行为并就其对特定任务的适用性做出明智决策十分重要。