type
status
date
slug
summary
tags
category
icon
password

引入:混淆矩阵(Confusion Matrix)

在谈及指标之前,我想先谈谈混淆矩阵(confusion matrix or error matrix)。混淆矩阵本质上就是以表格的形式对算法输出进行可视化。矩阵的每一行都表示实际类中的实例,而每列表示预测类中的实例。因此,矩阵的对角线代表了预测正确的所有实例。
一个简单的2x2混淆矩阵示例,来源于wiki
一个简单的2x2混淆矩阵示例,来源于wiki
而对于2x2的混淆矩阵,我们也可以表述为以下这种形式(也可以推广到更高维的矩阵,概念是一样的):
notion image
这里引入了四个非常重要的概念:
  1. True Positive (TP):真阳性,被预测为正样本的正样本数量
  1. False Positive (FP):假阳性。被预测为正样本的负样本数量
  1. True Negative (TN):真阴性。被预测为负样本的负样本数量。
  1. False Negative(FN):假阴性。被预测为负样本的正样本数量。
 
有了这些基本定义,我们接下来就可以对基于此的各种指标进行探讨。

一、准确率(Accuracy)

1. 定义

准确率可以说是机器学习中最常用的指标之一,用于衡量正确的预测数量占所做预测总数的百分比
也可以写作:

2. 适用范围和局限性

准确率适用于以下这些情况:
  1. 类别分布均衡
  1. 错误代价相近
 
  • 对于不平衡的类别分布,准确率并不是一个很好的指标。例如在一个95%为负类,5%为正类的数据集中,即使模型将所有样本都预测为负类,也能得到95%的准确率,显然这是毫无意义的。
  • 准确率无法区分不同类型错误的严重性。比如在疾病诊断中,把患病的人判为健康(FN)远比把健康的人判为患病(FP)严重,但准确率不会体现这种差异。

二、精确率(Precision)

1. 定义

精确率衡量的是:模型预测为正类的样本中,有多少是真正的正类。也就是说,精确率着重强调了结果的正确性。
因此,精确率本质上是描述模型的预测能力有“多精确”。高精确率意味着尽管模型会将某些正样本预测为负样本,但只要是预测的正样本基本上就是正确的。低精确率意味着即使你预测出了很多正样本,这里面很多都是错误的。

2. 适用范围和局限性

精确率适用于以下这些情况:
  1. 假阳性代价特别高:例如金融系统中将正常客户错判为欺诈客户会导致客户流失。
  1. 置信度需求高:例如“Top-N”推荐中,我们宁愿少点推荐结果,也不要胡乱推荐错误结果。
 
  • 精确率本身不考虑漏报(FN)。
  • 模型很可能非常保守,只预测极少量的正样本以提高精确率。

三、召回率(Recall)

1. 定义

召回率指的是:所有实际为正类的样本中,被模型成功识别出来的比例。召回率着重强调了结果的覆盖度。
召回率本质上是描述模型能找回多少正样本。高召回率意味着模型能够找到绝大多数的正样本,即使很多负样本也被预测成了正样本;低召回率意味着模型找到的正样本数量相对很少,即使可能正确率很高。

2. 适用范围和局限性

召回率适用于以下这些情况:
  1. 假阴性代价特别高:例如医疗诊断中宁可误报也不能漏报
  1. 保证正样本数量:例如RAG中要保证一定比例的正样本返回,即使会掺杂负样本
 
  • 召回率不考虑误报(FP)
  • 模型可能非常宽泛,将所有样本都预测为正样本。

四、F-1 Score

在很多情况下,我们需要对精确率和召回率进行权衡,这就意味着可以调整模型降低召回率来提高精确率,或者另一方面以降低精确率为代价来提高召回率。F-1分数就是这样一种方案。

1. 定义

F-1分数被定义为精确率和召回率的调和平均值:
由于F1分数是精确率和召回率的平均值,这意味着它对精确率和召回率的权重相同:
  • 如果精确率和召回率都很高,模型将获得较高的F1分数
  • 如果精确率和召回率都较低,模型将获得较低的F1分数
  • 如果精确率和召回率中的一个低而另一个高,则模型将获得中等F1分数
 
为什么我们使用调和平均值而不是普通平均值呢?这是因为调和平均对极端值更敏感。如果精确率或召回率中任何一个很低,那么F1分数也会很低,这能鼓励模型在两者之间取得平衡。
 

2. 适用范围和局限性

F1分数具有以下的优势:
  1. 能够处理类别不平衡的数据
  1. 能够有效平衡精确率和召回率
 
  • F1分数对极端情况过于敏感
  • 类别极端不平衡时不如AUC稳定,F1会剧烈波动
 

3. 拓展:Fβ分数

有时候我们需要手动控制更关注精确率还是召回率,因此有:

五、AUC(ROC曲线下面积)

1. ROC曲线

我们先定义两个指标:
  1. True Positive Rate (TPR): (也就是召回率)
  1. False Positive Rate (FPR):
 
ROC曲线(Receiver Operating Characteristic Curve)是一个以:
  • x轴:假正率 FPR(False Positive Rate)
  • y轴:真正率 TPR(True Positive Rate = Recall)
为坐标轴的曲线,表示随着分类阈值变化时模型性能的变化。
ROC曲线
ROC曲线
从图中我们看到,曲线越靠近左上角,说明模型的分类效果越好。
 
如何绘制ROC曲线呢?在模型预测完毕后,我们通过设置一个阈值(threshold)来判定该预测值属于哪个正类还是负类。每一个不同的阈值都会得到一个不同的TPR和FPR,ROC曲线就是在不同的阈值下的TPR和FPR对应的点集。

2. AUC(Area under ROC)

理解了ROC,AUC就很好解释了,本质上就是ROC曲线下面积,如图:
notion image
因此,当AUC=0.5时,相当于一个随机分类器(小于0.5说明你的模型还不如随机预测)。
完美的模型说明在某些阈值下,TPR为1.0,FPR 为 0.0,都表示为(0, 1)(如果所有其他阈值均被忽略),或者出现以下情况:
notion image
对于多分类问题,其实就是一对一或者一对多取平均,或者加权平均,这里不展开详谈,之后也许会写博文介绍这一方面。
 
总结来看,AUC分数是指代模型“将正样本排在负样本前面”的能力,对类别不平衡非常友好,是评价分类模型质量的黄金标准之一。
 

3. 使用范围与局限性

AUC分数适用于以下场景:
  1. 模型输出概率值而不是直接输出标签
  1. 正负样本极度不平衡
 
  • AUC分数不考虑实际分类阈值
  • 不考虑代价不对称性
  • 只反映排序能力,高AUC不代表高精确率或F1分数

📎 参考资料

  1. https://zhuanlan.zhihu.com/p/100059009
  1. https://medium.com/@watermelontt615/淺談-auroc-與-aupr-4d28bdec9ba5
  1. https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc?hl=zh-cn
  1. https://www.dataapplab.com/the-f1-score/
  1. https://en.wikipedia.org/wiki/Confusion_matrix
 
【大模型基础系列】一、从了解Token开始最初的随笔
Loading...
HeartBird
HeartBird
Learning AI
最新发布
LangGraph案例分享:Build.inc
2025-5-4
【大模型基础系列】一、从了解Token开始
2025-5-4
期末碎碎念
2025-5-4
Langgraph中几种流输出模式总结
2025-4-14
机器学习中的常用指标(一)
2025-4-6
最初的随笔
2025-4-4