混淆矩阵是什么?一张表看清分类模型对在哪、错在哪
混淆矩阵(Confusion Matrix)是机器学习中评估分类模型性能的工具。它通过一张表格,列出模型的真阳性、真阴性、假阳性和假阴性预测的数量,以此总结分类模型的表现。它有助于全面地评估模型预测的准确性和有效性,也是计算各种评价指标的基础。
二分类的混淆矩阵
对于只有两个类别的二元分类问题,比如判断邮件是否是垃圾邮件,混淆矩阵是一个 2 乘 2 的表格。表格的行通常表示实际的类别,列表示模型预测的类别(也有相反的画法),形成四个格子:
真阳性(TP):实际是垃圾邮件,模型也判断为垃圾邮件,判对了。假阴性(FN):实际是垃圾邮件,模型却判断为正常邮件,漏掉了。假阳性(FP):实际是正常邮件,模型却判断为垃圾邮件,误报了。真阴性(TN):实际是正常邮件,模型也判断为正常邮件,判对了。
对角线上的两个格子(真阳性和真阴性)是判断正确的情况,另外两个格子是判断错误的情况。一个好的模型,对角线上的数字应该大,非对角线上的数字应该小。
为什么叫“混淆”矩阵
这个名字来自它能清楚地展示模型把哪些类别“混淆”了。在多分类问题中,混淆矩阵会更加有用:如果有 10 个类别,它就是一个 10 乘 10 的表格,每一行代表一个实际的类别,每一列代表一个预测的类别,格子里的数字表示有多少个某类的样本被预测成了另一类。通过它,可以清楚地看到:模型经常把哪两个类别搞混。比如一个识别手写数字的模型,可能经常把 4 认成 9,把 3 认成 8;一个识别动物的模型,可能经常把狼认成哈士奇。这些信息对于发现模型的弱点、有针对性地改进非常有价值,比如为容易混淆的类别补充更多的训练数据。
从混淆矩阵计算各种指标
很多常用的分类评价指标,都可以直接从混淆矩阵中计算出来:准确率,等于判断正确的样本数(真阳性加真阴性)除以总样本数;精确率,等于真阳性除以(真阳性加假阳性),衡量模型判为阳性的样本中有多少是对的;召回率,等于真阳性除以(真阳性加假阴性),衡量实际的阳性样本中有多少被找出来了;特异度,等于真阴性除以(真阴性加假阳性);以及综合了精确率和召回率的 F1 分数。
混淆矩阵最大的价值,在于它提供了比单一准确率更完整的信息。尤其是在类别不均衡的情况下,一个准确率很高的模型,可能在少数类别上几乎全部判错,只有通过混淆矩阵才能发现这一问题。