多分类任务的混淆矩阵

今天我将讨论如何在多分类中使用混淆矩阵评估模型的性能。

什么是混淆矩阵?

它显示了实际值和预测值之间的差异。 它告诉我们有多少数据点被正确预测,哪些数据点没有被正确预测。对于多分类来说,它是一个 N * N 矩阵,其中 n 是编号。 输出列中的类别,也称为目标属性。一二分类任务中包含了 2 个类也就是一个 2*2 矩阵,一般情况下介绍混淆矩阵都会以二分类为例。 如果有 3 个类呢?那么将得到一个 3*3 矩阵依此类推。 通过上面描述我们知道,混淆矩阵的类将具有相同数量的行和列。

下面让我们尝试了解一些常用术语,有 TP(True Positive)、FP(False Positive)、False Positive 和 FN(False Negative)。

我们将使用一个 3 x 3 矩阵,我们将使用我将向您展示的技巧计算 TP、TN、FP、FN 值。 这个技巧也可以应用于 4*4、5*5…N*N 矩阵。

考虑这个混淆矩阵在下图 1 中的数据集的输出列中具有 A、B、C 类。

我们将尝试计算 A 类的TP(True Positive)、FP(False Positive)、False Positive 和 FN(False Negative)的值

TP

TruePositive(A):它告诉实际值和预测值相同。 A 类的TP只不过是实际值和预测值相同,这意味着单元格 1 的值为 15。

FP

FalsePositive(A):它告诉实际值是负的,在我们的例子中它是 B 类和 C 类,但模型预测它是正的,即 A 类。它是除了 TP 值之外的相应列的值的相加。

FalsePositive(A) = (单元格 4 + 单元格 7):7+2=9

TN

TrueNegative(A):实际值和预测值的含义相同,对于 A:B 类和 C 类是负分类。 它是所有非A行和列的值相加。

TrueNegative(A) = (单元格 5 + 单元格 6 + 单元格 8 + 单元格 9):15 + 8 +3 + 45= 71

FN

FalseNegative(A):实际值在我们的例子中是正的,它是 A 类,但模型预测它是负的,即 B 类和 C 类。可以通过除 TP 值之外的相邻行来计算的。

FalseNegative(A) = (单元格 2 + 单元格 3): 2 + 3= 5

常用指标

现在是计算 A 类的 Precision、Recall 和 Accuracy 的时候了。

精度Precision:“模型认为正确且确实是正确的样本模型认为正确的所有样本的概率”

Precision (A) = 正确预测 / 总预测 = 15/24 = 0.625

召回Recall :“模型认为正确且确实是正确的样本模型认为正确的所有样本的概率”

Recall (A)= 正确分类 / 总实际值 = 15/20 = 0.75

正确率Accuracy :被分对的样本数除以所有的样本数

Accuracy (A) = 正确分类的总数 / 实际分类的总数 = (15 + 15+ 45)/100 = 0.75

同样,可以计算 B 类和 C 类的 TP、FP、FN、TN、Precision、Recall

https://www.overfit.cn/post/d03f3e77c727446f9f1716737f3b6f91

作者:Akash Borgalli

### 如何解读和分析分类混淆矩阵 #### 多分类混淆矩阵概述 对于多分类问题,混淆矩阵是一个重要的工具用于评估模型性能。该矩阵展示了实际类别与预测类别的对应关系,能够直观反映模型的分类效果[^1]。 #### 混淆矩阵基本构成 在一个典型的多分类混淆矩阵中,每一行表示真实标签的实际分布情况,而每列表示由分类算法所给出的不同预测结果的数量统计。对角线上的数值反映了被正确识别的数据点数量;非对角线上则显示了错误分配给其他类目的实例数[^2]。 #### 关键评价指标计算方法 为了更深入地理解和利用这些数据,在构建好混淆矩阵之后还需要关注以下几个重要度量标准: - **准确率 (Accuracy)**:所有预测正确的比例,即 `(TP + TN)/(TP + FP + FN + TN)` 。然而当各类别间存在显著不平衡时此值可能具有误导性。 - **精确率 (Precision)** :针对某个特定正向类别而言,其定义为 `TP/(TP+FP)` ,衡量的是在所有被判为阳性的样本中有多少是真的阳性案例。 - **召回率 (Recall)** 或者灵敏度(Sensitivity),也称为真正率(True Positive Rate, TPR):同样适用于单个正类,表达式为` TP / P = TP / (FN + TP)` , 描述了所有真正的阳性病例中有多少被成功检测出来。 - **F1得分(F1 Score)** : 是精确率和召回率之间的调和平均数,公式为 `2 * ((precision*recall)/(precision+recall))`, 它提供了一个综合考量两者平衡程度的方法。 - **特异性 (Specificity)** 或负样例覆盖率(Negative Predictive Value,NPV): 对于每一个负类来说,指的是TN占总N的比例,也就是 `TN/N=TN/(FP+TN)` 。 - **假阳性率(False Positive Rate,FPR)**: 表达式为 `FP/N=FP/(FP+TN)`,指代那些实际上属于负类却被误判成正类的情况占比。 通过上述各项指数可以全面掌握不同类别间的相互影响以及整体表现状况,从而为进一步优化模型奠定基础。 ```python from sklearn.metrics import confusion_matrix, classification_report import seaborn as sns import matplotlib.pyplot as plt # 假设 y_true 和 y_pred 分别是真实的标签序列和预测得到的结果 cm = confusion_matrix(y_true, y_pred) plt.figure(figsize=(8,6)) sns.heatmap(cm, annot=True, fmt='d', cmap="YlGnBu", cbar=False) plt.title('Confusion Matrix') plt.ylabel('True label') plt.xlabel('Predicted label') print(classification_report(y_true, y_pred)) ``` 这段代码片段可以帮助可视化一个多分类任务中的混淆矩阵,并打印出详细的分类报告,其中包括精度、召回率和支持度等信息。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值