首页
Preview

您的多类别机器学习模型的混淆矩阵

混淆矩阵是一种表格化的方式,用于可视化预测模型的性能。混淆矩阵中的每个条目表示模型分类正确或错误的类别预测次数。

已经熟悉混淆矩阵的人都知道,它通常是针对二元分类问题进行解释的。但是,这篇文章不是针对二元分类的解释。今天,我们将看看混淆矩阵在多类机器学习模型上的工作原理。但是,我们将从二元分类开始,以便更好地了解。

二元分类的混淆矩阵

二元分类的混淆矩阵

如你所见,二元分类问题只有两个类别可供分类,最好是正类和负类。现在让我们看看混淆矩阵的指标。

真正(TP): 它是指分类器正确预测正类为正类的预测次数。

真负(TN): 它是指分类器正确预测负类为负类的预测次数。

假正(FP): 它是指分类器错误地将负类预测为正类的预测次数。

假负(FN): 它是指分类器错误地将正类预测为负类的预测次数。

最好将混淆矩阵用作机器学习模型的评估标准。它为你的模型提供了非常简单但有效的性能指标。以下是你可以从混淆矩阵中使用的最常见性能指标。

准确率:它给出模型的整体准确率,即分类器正确分类的样本总数的分数。要计算准确率,请使用以下公式:(TP+TN)/(TP+TN+FP+FN)

分类错误率:它告诉你预测的哪一部分是错误的。它也称为分类错误率。你可以使用(FP+FN)/(TP+TN+FP+FN)(1-准确率)来计算它。

精度:它告诉你实际上是正类的预测中有多少是正类。要计算精度,请使用以下公式:TP/(TP+FP)

召回率:它告诉你分类器正确预测为正类的所有正样本的分数。它也称为真正率(TPR)、灵敏度、检测概率。要计算召回率,请使用以下公式:TP/(TP+FN)

特异性:它告诉你分类器正确预测为负类的所有负样本的分数。它也称为真负率(TNR)。要计算特异性,请使用以下公式:TN/(TN+FP)

**F1值:**它将精度和召回率结合为单个度量。在数学上,它是精度和召回率的调和平均值。它可以计算如下:

在理想的情况下,我们希望模型的精度为1,召回率为1。这意味着F1得分为1,即100%的准确性,这通常不适用于机器学习模型。因此,我们应该尝试获得更高的精度和更高的召回率。现在,我们已经了解了混淆矩阵的性能指标,让我们看看如何在多类机器学习模型中使用它。

多类分类的混淆矩阵

为简单起见,让我们将我们的多类分类问题视为3类分类问题。假设我们有一个数据集,其中包含三个类标签,即苹果、橙子和芒果。以下是这些类的可能混淆矩阵。

多类分类的混淆矩阵

与二元分类不同,这里没有正类或负类。一开始可能很难找到TP、TN、FP和FN,因为没有正类或负类,但实际上很容易。我们必须为每个单独的类找到TP、TN、FP和FN。例如,如果我们选择苹果类,那么让我们看看混淆矩阵中指标的值。

  • TP = 7
  • TN = (2+3+2+1) = 8
  • FP = (8+9) = 17
  • FN = (1+3) = 4

由于我们从混淆矩阵中获得了类Apple的所有必要指标,现在我们可以计算类Apple的性能指标。例如,类Apple具有

  • 精度 = 7/(7+17) = 0.29
  • 召回率 = 7/(7+4) = 0.64
  • F1值 = 0.40

同样,我们可以计算其他类的指标。以下是显示每个类的每个指标值的表格。

每个类的精度、召回率和F1值

现在我们可以更多地利用这些指标。我们可以组合每个类的F1值,以获得整个模型的单个指标。有几种方法可以做到这一点,让我们现在看看它们。## 微观平均 F1

这被称为微观平均 F1 分数。它通过考虑模型的总 TP、总 FP 和总 FN 来计算。它不考虑每个类别,而是全局计算指标。因此,对于我们的示例,

  • 总 TP = (7+2+1) = 10
  • 总 FP = (8+9)+(1+3)+(3+2) = 26
  • 总 FN = (1+3)+(8+2)+(9+3) = 26

因此,

  • 精确度 = 10/(10+26) = 0.28
  • 召回率 = 10/(10+26) = 0.28

现在我们可以使用常规的 F1 分数公式,使用上述精度和召回率来获取微观平均 F1 分数。

微观平均 F1 = 0.28

正如你所看到的,当我们全局计算指标时,所有度量值变得相等。此外,如果你计算准确度,你会发现:

精确度 = 召回率 = 微观平均 F1 = 准确度

宏观平均 F1

这是宏观平均 F1 分数。它为每个类别单独计算指标,然后取度量的无权平均值。正如我们从图 “每个类别的精确度、召回率和 F1 分数” 中看到的,

  • 类别 Apple 的 F1 分数 = 0.40
  • 类别 Orange 的 F1 分数 = 0.22
  • 类别 Mango 的 F1 分数 = 0.11

因此,

宏观平均 F1 = (0.40+0.22+0.11)/3 = 0.24

加权 F1

最后一个是加权平均 F1 分数。与宏观平均 F1 不同,它采用度量的加权平均值。每个类别的权重是该类别的样本总数。由于我们有 11 个 Apples、12 个 Oranges 和 13 个 Mangoes,

加权 F1 = ((0.40*11)+(0.22*12)+(0.11*13))/(11+12+13) = 0.24

最后,让我们看一个使用 Python 的 Scikit-learn 计算这些度量的脚本。

这是脚本的输出。

来源:Google Colab

注意:Scikit-Learn 使用行作为“真实类别”,列作为“预测类别”。这与我们对 Apple、Orange 和 Mango 示例的考虑相反,但逻辑上相似。你可以以任何方式考虑真实和预测类别。但是,如果你使用 Scikit-Learn,则必须按照他们的规则操作。

希望你找到了你要寻找的内容。谢谢阅读。

译自:https://towardsdatascience.com/confusion-matrix-for-your-multi-class-machine-learning-model-ff9aa3bf7826

版权声明:本文内容由TeHub注册用户自发贡献,版权归原作者所有,TeHub社区不拥有其著作权,亦不承担相应法律责任。 如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

点赞(0)
收藏(0)
alivne
复杂的问题简单化

评论(0)

添加评论