Confusion Matrix
了解混淆矩阵如何评估分类性能。探索 TP、FP、TN 和 FN,优化你的 Ultralytics YOLO26 模型以提升准确性。
混淆矩阵是一种用于机器学习分类问题的性能测量工具,其输出可以包含两个或更多类别。它是一个包含预测值与实际值四种不同组合的表格,是模型评估中数据可视化的基础要素。与简单准确率不同,如果数据集不平衡,准确率可能会产生误导;混淆矩阵则能细致地展示计算机视觉(CV)模型在哪些方面出错。通过将预测结果与真实标签进行比较,开发者可以判断系统是在混淆两个特定类别,还是完全未能检测到某个对象。
矩阵的核心组件#
对于二分类,矩阵本身通常分为四个象限;而对于由 Ultralytics YOLO26处理的多分类问题,矩阵会相应扩展。这四个组件表示模型预测的结果与图像中实际存在内容之间的交集。
- **真正例(TP):**模型正确预测出正类。例如,在目标检测任务中,模型成功地在画面中实际存在的人周围绘制了边界框。
- **真负例(TN):**模型正确预测出负类。这在异常检测等场景中至关重要,因为系统需要正确识别出制造的零件不存在缺陷。
- **假正例(FP):**模型错误地预测出正类。这通常被称为“第一类错误”,发生在系统检测到实际不存在的对象时,例如监控摄像头将影子标记为入侵者。
- **假负例(FN):**模型错误地预测出负类。这被称为“第二类错误”,发生在模型未能检测到实际存在的对象时,本质上是“漏检”了目标。
衍生指标及其重要性#
混淆矩阵中的原始数值用于计算描述模型性能的更高级指标。理解这些衍生指标对于优化神经网络至关重要。
- **精确率:**计算公式为 TP / (TP + FP),该指标揭示了正类预测的准确程度。精确率越高,误报越少。
- **召回率(敏感度):**计算公式为 TP / (TP + FN),用于衡量模型找出所有正类实例的能力。当漏检对象会造成严重后果时,高召回率至关重要。
- **F1 分数:**精确率与召回率的调和平均值。它提供一个平衡两者权衡关系的单一分数,可用于比较不同的 YOLO26 模型。
实际应用#
混淆矩阵所定义的错误具体成本,决定了模型如何针对不同行业进行调优。
在**医疗保健领域的 AI**中,混淆矩阵关乎安全。训练模型进行医学图像分析以检测肿瘤时,假负例(漏检肿瘤)远比假正例(将良性病灶标记出来供医生复查)更糟糕。因此,工程师会在这些矩阵中优先考虑召回率而非精确率,以确保不会忽略潜在的健康风险。
相反,在**制造业质量控制**中,效率是关键。如果用于分类流水线零件的系统产生过多假正例(将合格零件标记为有缺陷),就会造成不必要的浪费并拖慢生产。在这种情况下,混淆矩阵可以帮助工程师调优模型,使精确率最大化,确保被拒收的零件确实存在缺陷,从而简化自动化机器学习工作流。
使用 Ultralytics YOLO26 生成混淆矩阵#
使用现代框架时,生成该矩阵通常是标准验证流程的一部分。下面的示例演示了如何验证一个 YOLO26 模型,并使用 ultralytics 包访问混淆矩阵数据。
from ultralytics import YOLO
# Load a pre-trained YOLO26 model
model = YOLO("yolo26n.pt")
# Validate the model on the COCO8 dataset
# This automatically generates and plots the confusion matrix
metrics = model.val(data="coco8.yaml")
# Access the confusion matrix object directly
print(metrics.confusion_matrix.matrix)区分相关概念#
需要将混淆矩阵与类似的评估术语区分开来。
- **与准确率相比:**准确率只是正确预测数与预测总数的比值。虽然准确率很有用,但在不平衡数据集中可能具有很强的欺骗性。例如,如果 95% 的电子邮件都不是垃圾邮件,那么一个将每一封邮件都预测为“不是垃圾邮件”的模型,其准确率为 95%,但实际上毫无用处。混淆矩阵会通过显示垃圾邮件类别的真正例数量为零,揭示这一缺陷。
- **与ROC 曲线相比:**混淆矩阵提供的是在某个特定置信度阈值下的性能快照。相比之下,受试者工作特征(ROC)曲线会展示该阈值变化时真正率和假正率如何变化。Ultralytics Platform等工具允许用户探索这两种可视化结果,从而为部署选择最佳运行点。









