机器学习模型度量指标(混淆矩阵、准确率、精确率、召回率、F1分数、ROC曲线、AUC、平均精度均值)
我们研究的是多分类问题,下面所有例子以多分类问题举例
混淆矩阵(Confusion Matrix)

定义:用于展示多分类模型预测结果与真实标签的对应关系矩阵,直观反映各类别的预测正确 / 错误情况。
维度:若有 K 个类别,则混淆矩阵为 K×K 矩阵。
1. 矩阵结构解析
以 3 分类问题(类别 A、B、C)为例,混淆矩阵格式如下:
真实\预测 | A | B | C |
---|---|---|---|
A | TP_A | FP_A→B | FP_A→C |
B | FP_B→A | TP_B | FP_B→C |
C | FP_C→A | FP_C→B | TP_C |
TP_i(True Positive_i):类别 i 的正确预测数(对角线元素)。
FP_i→j(False Positive_i→j):真实为 i 类但被误判为 j 类的样本数(非对角线元素)。
2. 案例说明
假设预测 100 个样本(A 类 30 个、B 类 30 个、C 类 40 个),混淆矩阵如下:
真实\预测 | A | B | C |
---|---|---|---|
A | 25 | 3 | 2 |
B | 2 | 24 | 4 |
C | 3 | 3 | 34 |
TP_A=25(A 类正确预测 25 个),FP_A→B=3(A 类误判为 B 类 3 个),其余同理。
准确率(Accuracy)
特点:整体模型的预测正确率,但对样本不均衡问题不敏感(如某类样本极少时,正确预测该类对准确率贡献小)。
精确率(Precision)(分母为列求和)
针对每一个类别,预测正确的样本数比上预测出来的样本数(预测为某类的样本中实际正确的比例)(在混淆矩阵里,行表示真实类别,列表示预测类别,预测正确的样本数在对角线上)
召回率(Recall)(分母为行求和)
针对每一个类别,预测正确的样本数比上实际存在的样本数(实际为某类的样本中被正确预测的比例)(在混淆矩阵里,行表示真实类别,列表示预测类别,预测正确的样本数在对角线上)
精确率和召回率之间的关系
🌟 核心比喻
想象你是一个渔夫在捞鱼:
- 精确率:你捞上来的鱼里,有多少是真鱼(而不是垃圾、水草)。
→ “捞得准不准”(避免误捞)。 - 召回率:整个池塘里所有的鱼,你捞上来多少。
→ “捞得全不全”(避免漏捞)。
两者矛盾:
- 如果你用特别密的网(严格),捞上来的基本都是鱼(高精确率),但可能漏掉很多鱼(低召回率)。
- 如果你用特别松的网(宽松),能捞到大部分鱼(高召回率),但会混进很多垃圾(低精确率)。
两者的关系
-
此消彼长:
- 模型越严格 → 精确率高,召回率低(少犯错,但会漏东西)。
- 模型越宽松 → 召回率高,精确率低(多抓取,但混进错误)。
-
平衡方法:
- F1分数:精确率和召回率的“调和平均”(既要准,又要全)。
- 业务需求决定:
- 医疗诊断:高召回率(宁可误诊,不能漏诊)。
- 推荐系统:高精确率(宁可少推荐,不能推错)。
F1 分数(F1-Score)
多类分类任务评级指标
ROC曲线、AUC
区别于二分类
- 一对多(One-vs-Rest, OVR)
- 一对一(One-vs-One, OVO)
- 微平均(Micro-average)与宏平均(Macro-average)
平均精度均值(mAP,mean Average Precision)
在多分类问题中,平均精度均值(mAP,mean Average Precision) 是一种综合评估模型性能的重要指标,尤其适用于需要考虑样本排序和类别相关性的任务(如目标检测、信息检索、图像分类等)。下面从基础概念、计算流程到多分类场景的扩展进行详细解析。
核心概念:AP(Average Precision)
AP 是衡量单个类别分类效果的指标,其核心思想是:在所有可能的召回率水平下,计算精确率的平均值,反映模型对该类样本的 “排序质量”。
2. AP 的计算流程(以二分类为例,多分类需扩展)
假设模型对某类样本的预测结果按置信度从高到低排序,依次将每个样本视为 “正类阈值”,计算对应的精确率和召回率,最终 AP 是这些精确率的加权平均。具体步骤:
- 排序预测结果:按置信度从高到低排序所有样本。
- 逐样本计算 TP/FP:
- 若样本真实类别为正类,则记为 TP,否则为 FP。
- 累积精确率和召回率:
- 前k个样本的精确率:前k个中的 TP 数 / k。
- 前k个样本的召回率:前k个中的 TP 数 / 总正类样本数。
- 计算 AP:
- 方法 1:全点插值法(现代常用):对每个召回率点r,取所有召回率≥r时的最大精确率,再求这些精确率的平均值(本质是计算精确率 - 召回率曲线下的面积)。
- 方法 2:11 点插值法(历史方法):在召回率为 0, 0.1, ..., 1.0 的 11 个点上,取对应最大精确率的平均值。
多分类场景下的 mAP 计算
多分类问题中(如C个类别),mAP 是每个类别 AP 的平均值,核心是将多分类转化为多个二分类问题处理。
对每个类别c,将其视为 “正类”,其他C−1个类别视为 “负类”,形成C个二分类任务。例如,在三分类问题(类别 A、B、C)中:
- 计算类别 A 的 AP 时,将 A 视为正类,B 和 C 视为负类;
- 同理处理类别 B 和 C。
以目标检测任务(典型多分类场景)为例,假设模型输出每个检测框的类别、置信度和坐标,计算 mAP 的步骤如下:
步骤 1:对每个类别单独处理
以类别c为例:
- 收集所有预测框:筛选出预测为类别c的所有检测框,按置信度从高到低排序。
- 确定真实正类样本:所有真实标签为类别c的目标。
- 计算每个预测框的 TP/FP:
- 对于每个预测框,若与某真实正类目标的 IoU(交并比)≥阈值(如 0.5),且该真实目标未被其他更高置信度的预测框匹配过,则记为 TP;否则为 FP(包括 IoU 不足或重复匹配)。
步骤 2:计算单个类别的 AP
基于步骤 1 的 TP/FP 序列,按 AP 的计算方法(全点插值法)计算类别c的 AP:
- 例如,假设排序后的预测框依次为p1,p2,...,pn,前k个框中有tk个 TP,则前k个框的精确率为tk/k,召回率为tk/T(T为类别c的总真实目标数)。
- AP 是所有召回率点对应的最大精确率的平均值(即精确率 - 召回率曲线下的面积)。
步骤 3:计算 mAP
对所有C个类别的 AP 取算术平均值:
三、示例:mAP 计算实例
假设一个三分类问题(类别 A、B、C),每个类别有 2 个真实目标,模型对每个类别输出 5 个预测框(按置信度排序),如下表所示:
类别 A 的 AP 计算
预测框 | 置信度 | 真实标签是否为 A | IoU≥0.5? | TP/FP | 前 k 个框的 TP 数 | 精确率(前 k 个) | 召回率(前 k 个) |
---|---|---|---|---|---|---|---|
1 | 0.9 | 是 | 是 | TP | 1 | 1/1=1.0 | 1/2=0.5 |
2 | 0.8 | 否 | - | FP | 1 | 1/2=0.5 | 1/2=0.5 |
3 | 0.7 | 是 | 是 | TP | 2 | 2/3≈0.667 | 2/2=1.0 |
4 | 0.6 | 否 | - | FP | 2 | 2/4=0.5 | 2/2=1.0 |
5 | 0.5 | 否 | - | FP | 2 | 2/5=0.4 | 2/2=1.0 |
- 计算各召回率点的最大精确率:
- 召回率 = 0.5 时,最大精确率为 1.0(来自 k=1);
- 召回率 = 1.0 时,最大精确率为 0.667(来自 k=3);
- 其他召回率点无新值。
- AP_A = (1.0 + 0.667) / 2 ≈ 0.833。
类别 B 的 AP 计算
预测框 | 置信度 | 真实标签是否为 B | IoU≥0.5? | TP/FP | 前 k 个框的 TP 数 | 精确率 | 召回率 |
---|---|---|---|---|---|---|---|
1 | 0.9 | 是 | 是 | TP | 1 | 1.0 | 0.5 |
2 | 0.8 | 是 | 是 | TP | 2 | 1.0 | 1.0 |
3 | 0.7 | 否 | - | FP | 2 | 0.667 | 1.0 |
4 | 0.6 | 否 | - | FP | 2 | 0.5 | 1.0 |
5 | 0.5 | 否 | - | FP | 2 | 0.4 | 1.0 |
- 召回率 = 0.5 时,精确率 = 1.0;召回率 = 1.0 时,最大精确率 = 1.0(来自 k=1 和 k=2)。
- AP_B = (1.0 + 1.0) / 2 = 1.0。
类别 C 的 AP 计算
假设模型对类别 C 的预测较差,所有预测框均为 FP,则 AP_C=0。
最终 mAP
mAP=30.833+1.0+0≈0.611
关于ROC曲线、AUC、平均精度均值,后面复习更多再补充