在机器学习领域,不存在一个算法能够解决所有问题。因此,针对特定问题,可能会构建多个模型,并使用多种性能指标来选择最佳的模型。其中之一就是“混淆矩阵”,它用于评估基于任何分类算法的模型性能。本文将探讨以下关键点:混淆矩阵是什么、与混淆矩阵相关的术语,并通过实例进一步解释这些术语。
让通过一个例子来理解混淆矩阵的工作原理及其外观。假设要为一个种植两种作物的农民构建一个分类模型,这两种作物分别是山药和土豆。山药的售价高于土豆。因此,构建的分类器的任务是正确分类这两种作物,以便农民能够以正确的市场价格出售作物以最大化利润。
农民给发送了20个样本来检查分类器的性能,其中11个样本是山药,9个样本是土豆。图2给出了为农民构建的分类器的混淆矩阵,它基本上告诉列是实际类别(这里的作物),行是预测类别(这里的作物)由分类器预测,它还告诉:
在11个山药样本中,有5个被正确分类为山药,6个被错误分类为土豆。同样,在9个土豆样本中,有2个被错误分类为山药,7个被正确分类为土豆。这意味着在20个样本中,有12个被正确分类(图2中绿色框的总和),8个被错误分类(图2中红色框的总和)。此外,从图2中了解到,分类器在正确分类山药方面表现非常糟糕,但在正确分类土豆方面做得相当好。
因此,如果要用简单的语言定义混淆矩阵,可以说:“混淆矩阵帮助了解每个类别的正确和错误分类数量。”
每当讨论与混淆矩阵相关的话题时,经常听到“召回率”、“精确度”和“F1分数”等词汇,这让思考它们的含义和用途。不用担心,将在本文中讨论所有这些内容,因此将从它们的定义和公式开始。
召回率是TP/(TP+FN)的比率,其中TP是真正例的数量,FN是假负例的数量。换句话说,它让知道特定类别的正确分类数量占该类别总样本数量的比例。
让通过农民的例子来理解这一点,以“山药”为感兴趣的作物:如果将图2中的值代入公式,得到:
recall = 5/(5+6) = 5/11 = 0.454 = 45.4%,
其中TP = 5,FN = 6。正如所看到的,召回率百分比相当低,这表明分类器大多数时候没有正确分类山药,而常常将其误认为是土豆。
精确度是TP/(TP+FP)的比率,其中TP是真正例的数量,FP是假正例的数量。换句话说,它让知道特定类别的正确分类数量占对该类别的总预测数量的比例。
让再次通过农民的例子来理解这一点,仍然将“山药”视为感兴趣的作物:如果将图2中的值代入公式,得到:
precision = 5/(5+2) = 5/7 = 0.714 = 71.4%,
其中TP = 5,FP = 2。因此,从上述计算中,了解到分类器5次正确预测了山药样本为“山药”,但2次错误地将土豆样本预测为“山药”。换句话说,与TP相比,FP的值越低,分类器的精确度就越高。
注意:召回率和精确度之间总是存在权衡。
F1分数是衡量模型在特定数据集上整体性能的指标。F1分数是将模型的精确度和召回率结合起来的一种方式,它被定义为模型精确度和召回率的调和平均数。
因此,如果根据上述计算的精确度和召回率来计算F1分数,得到:
F1-score = (2 x (0.454 x 0.714)) / (0.454 + 0.714) = 0.648/1.168 = 0.554
这告诉,为农民构建的分类器在正确分类山药作物方面的表现并不是很好。