来源:海豚数智科学实验室
构建机器学习模型或深度学习模型的想法遵循建设性反馈原则。你构建一个模型,从指标中获取反馈,进行改进,并继续下去,直到达到理想的分类准确性。评估指标解释了模型的性能。评估指标(evaluation metrics)的一个重要方面是它们区分模型结果的能力。
本文解释了作为数据科学专业人士必须了解的 12 个重要评估指标。你将了解它们的用途、优点和缺点,这将帮助你相应地选择和实施它们。
在线工具推荐:Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器
评估指标是用于评估统计或机器学习模型的性能和有效性的定量措施。这些指标可以深入了解模型的执行情况,并有助于比较不同的模型或算法。
在评估机器学习模型时,评估其预测能力、泛化能力和整体质量至关重要。评估指标提供了衡量这些方面的客观标准。评估指标的选择取决于特定的问题领域、数据类型和期望的结果。
我见过很多分析师和有抱负的数据科学家甚至懒得去检查他们的模型有多稳健。一旦他们完成模型的构建,他们就会匆忙地将预测值映射到看不见的数据上。这是一个不正确的做法。基本事实是建立预测模型不是你的动机。这是关于创建和选择一个模型,该模型可以在样本外数据上提供较高的accuracy_score。因此,在计算预测值之前检查模型的准确性至关重要。
在我们的行业中,我们考虑不同类型的指标来评估我们的机器学习模型。评估指标的选择完全取决于模型的类型和模型的实施计划。完成模型构建后,这 12 个指标将帮助你评估模型的准确性。考虑到交叉验证的日益普及和重要性,我还在本文中提到了它的原理。
1.1 预测模型的类型
当我们谈论预测模型时,我们谈论的是回归模型(连续输出)或分类模型(名义或二进制输出)。每个模型中使用的评估指标都不同。
在分类问题中,我们使用两种类型的算法(取决于它创建的输出类型):
在回归问题中,我们的输出不会出现这种不一致的情况。输出本质上始终是连续的,不需要进一步处理。
对于分类模型评估指标的讨论,我使用了我对 Kaggle 上 BCI 挑战问题的预测。问题的解决方案不在我们这里讨论的范围之内。然而,本文使用了训练集的最终预测。针对该问题的预测是概率输出,假设阈值为 0.5,则将其转换为类输出。
混淆矩阵(confusion matrix)是一个 N X N 矩阵,其中 N 是预测类别的数量。对于当前的问题,我们有 N=2,因此我们得到一个 2 X 2 矩阵。它是机器学习分类问题的性能测量,其中输出可以是两个或多个类别。混淆矩阵是一个包含 4 种不同的预测值和实际值组合的表。它对于测量精确率、召回率、特异性、准确性以及最重要的 AUC-ROC 曲线非常有用。
-
真阳性(true positive):预测为阳性,而且这是真的。
-
真阴性(true negative):预测为阴性,而且它是真的。
-
误报(false positive):1 类错误,预测为阳性,但结果是错误的。
-
假阴性(false negative):2 类错误,预测为阴性,但结果是错误的。
-
准确率(accuracy):正确预测总数占正确预测总数的比例。
-
阳性预测值或精度(positive predictive value or precision):正确识别的阳性样本的比例。
-
阴性预测值(negative predictive value):正确识别出阴性样本的比例。
-
敏感性或召回率(sensitivity or recall):正确识别的实际阳性样本的比例。
-
特异性(sepcificity):实际阴性样本被正确识别的比例。
-
比率
(rate):它是混淆矩阵中的一个测量因素。它还具有 TPR、FPR、TNR 和 FNR 4 种类型。
我们手头问题的准确率为 88%。从上面两个表可以看出,阳性预测值很高,但阴性预测值很低。敏感性和特异性也是如此。这主要是由我们选择的阈值驱动的。如果我们降低阈值,这两对完全不同的数字将会更加接近。
一般来说,我们关心的是上面定义的指标之一。例如,在一家制药公司,他们会更关心最小的错误阳性诊断。因此,他们会更关心高特异性。另一方面,损耗模型将更关注敏感性。混淆矩阵通常仅与类输出模型一起使用。
在上一节中,我们讨论了分类问题的精度和召回率,并强调了为我们的用例选择精度/召回率基础的重要性。如果对于某个用例,我们试图同时获得最佳精度和召回率怎么办?F1-Score 是分类问题的精度值和召回值的调和平均值。F1-Score的公式如下:
现在,我想到的一个明显的问题是为什么要采用调和(harmonic)平均值而不是算术(arithmetic)平均值。这是因为 HM 对极端值的惩罚更多。让我们通过一个例子来理解这一点。我们有一个二元分类模型,结果如下:
在这里,如果我们取算术平均值,我们会得到 0.5。很明显,上述结果来自一个愚蠢的分类器,它忽略输入并预测其中一个类作为输出。现在,如果我们采用 HM,我们会得到 0,这是准确的,因为该模型对于所有目的都是无用的。
这看起来很简单。然而,在某些情况下,数据科学家希望对精确度或召回率给予更高的重要性/权重百分比。稍微改变一下上面的表达式,以便我们可以为此目的包含一个可调整的参数 beta,我们得到:
Fbeta 衡量模型对于用户的有效性,该用户对召回率的重视程度是精确度的 β 倍。
增益图和提升图主要涉及检查概率的排序。以下是构建提升/增益图的步骤:
-
-
-
第 3 步:构建十分位数,每组都有近 10% 的观测值。
-
第 4 步:计算每个十分位数的良好(响应者)、不良(无响应者)和总数的响应率。
这是一张信息非常丰富的表格。累积增益图表是累积 %Right 和累积 %Population 之间的图表。对于当前的情况,这是图表:
该图告诉你模型将响应者与非响应者区分开的效果如何。例如,第一个十分之一拥有 10% 的人口,拥有 14% 的响应者。这意味着我们在第一个十分位数处获得了 140% 的提升。
在第一个十分位中我们可以达到的最大升力是多少?从本文的第一个表中,我们知道响应者总数为 3850。此外,第一个十分位数将包含 543 个观察值。因此,第一个十分位数的最大升力可能是 543/3850 ~ 14.1%。因此,我们的这个模型已经非常接近完美了。
现在让我们绘制升力曲线。升力曲线是总升力和人口百分比之间的图。请注意,对于随机模型,该值始终保持在 100% 不变。这是当前案例的情节:
这张图告诉你什么?它指出我们的模型在第 7 个十分位之前表现良好。发布后,每十分之一都将偏向于无响应者。任何提升@十分位数高于 100% 直到最小第 3 个十分位数和最大第 7 个十分位数的模型都是一个好的模型。否则你可能会首先考虑过采样。
提升/增益图广泛用于营销活动定位问题。这告诉我们可以将特定营销活动的目标客户定位到哪个十分位。此外,它还告诉你期望从新目标群体中得到多少反应。
K-S 或 Kolmogorov-Smirnov 图衡量分类模型的性能。更准确地说,K-S是正负分布分离程度的度量。如果分数将总体分为两个单独的组,其中一组包含所有正样本,另一组包含所有负样本,则 K-S 为 100。
另一方面,如果模型无法区分阳性和阴性,那么就好像模型从总体中随机选择案例。K-S 将为 0。在大多数分类模型中,K-S 将落在 0 到 100 之间,值越高,模型区分正例和负例的能力就越好。
我们还可以绘制%Cumulative Good和Bad来查看最大分离。以下是示例图:
这里介绍的评估指标主要用于分类问题。到目前为止,我们已经了解了混淆矩阵、提升和增益图以及K-S图。让我们继续学习一些更重要的指标。
2.5 ROC 曲线下面积 (AUC – ROC)
这又是业内流行的评估指标之一。使用ROC曲线的最大优点是它独立于响应者比例的变化。此声明将在以下部分中变得更加清晰。
我们首先尝试了解一下 ROC(接收者操作特性)曲线是什么。如果我们查看下面的混淆矩阵,我们会发现对于概率模型,每个指标都会得到不同的值。
因此,对于每个敏感度,我们都会得到不同的特异性。两者的区别如下:
ROC 曲线是敏感性和(1-特异性)之间的图。(1-特异性)也称为假阳性率,敏感性也称为真阳性率。以下是当前案例的 ROC 曲线。
我们以阈值 = 0.5 为例(参考混淆矩阵)。这是混淆矩阵:
如你所见,此阈值的灵敏度为 99.6%,(1-特异性)约为 60%。该坐标成为 ROC 曲线中的点。为了将该曲线简化为一个数字,我们找到该曲线下的面积 (AUC)。
请注意,整个正方形的面积为 1*1 = 1。因此 AUC 本身就是曲线下面积与总面积的比率。对于当前的案例,我们得到的 AUC ROC 为 96.4%。以下是一些经验法则:
我们发现我们属于当前模型的优秀范围。但这可能只是过度拟合。在这种情况下,进行及时和超时验证变得非常重要。
-
对于以类别作为输出的模型,将在 ROC 图中表示为单个点。
-
此类模型无法相互比较,因为判断需要针对
单个指标进行,而不是使用多个指标。例如,参数为 (0.2,0.8) 的模型和参数为 (0.8,0.2) 的模型可以来自同一个模型;因此,不应直接比较这些指标。
-
在概率模型的情况下
,我们很幸运地得到了一个数字,即 AUC-ROC。但我们仍然需要审视整个曲线才能做出决定性的决定。也有可能一种模型在某些地区表现更好,而另一种模型在其他地区表现更好。
AUC ROC 考虑预测概率来确定我们模型的性能。然而,AUC ROC 存在一个问题,它只考虑概率的顺序,因此没有考虑模型预测更有可能为正的样本的更高概率的能力。在这种情况下,我们可以使用对数损失,它只不过是每个实例的校正预测概率的对数的负平均值。
让我们计算一些随机值的对数损失,以获得上述数学函数的要点
:
从向右缓慢下降的斜率可以明显看出,随着预测概率的提高,对数损失逐渐下降。然而,朝相反方向移动,当预测概率接近 0 时,对数损失会非常迅速地增加。
因此,对数损失越低,模型就越好。然而,没有绝对的衡量良好对数损失的方法,并且它取决于用例/应用程序。
虽然 AUC 是根据具有不同决策阈值的二元分类计算的,但对数损失实际上考虑了分类的“确定性”。
基尼系数有时用于分类问题。基尼系数可以直接从 AUC ROC 数得出。基尼系数只不过是ROC曲线和对角线之间的面积与上面三角形的面积之比。以下是使用的公式:
Gini = 2*AUC – 1
基尼系数在60%以上就是一个好的模型。对于本例,我们得到的基尼系数为 92.7%。
2.8 一致/不一致比率
这又是任何分类预测问题最重要的评估指标之一。为了理解这一点,我们假设有 3 名学生今年有可能通过考试。以下是我们的预测:
现在想象一下。如果我们从这三个学生中取出两对,我们会得到多少对?我们将有 3 对:AB、BC 和 CA。现在,年底后,我们看到 A 和 C 今年通过了,而 B 失败了。不,我们选择所有能找到一个响应者和另一个无响应者的对。我们有多少这样的对?
我们有两对 AB 和 BC。现在,对于 2 对中的每一对,一致对是响应者的概率高于非响应者的概率。而不一致的配对则反之亦然。如果两个概率相等,我们就说平局。让我们看看我们的案例中会发生什么:
因此,在这个例子中我们有 50% 的一致案例。一致率超过60%被认为是一个好的模型。在决定要定位多少客户等时,通常不会使用此指标。它主要用于访问模型的预测能力。诸如目标数量之类的决定再次由 KS/提升图做出。
2.9 均方根误差 (RMSE)
RMSE 是回归问题中最常用的评估指标。它遵循这样的假设:误差是无偏的并且遵循正态分布。以下是 RMSE 需要考虑的关键点:
-
-
该指标的“平方”性质有助于提供更可靠的结果,从而防止抵消正误差值和负误差值。换句话说,该度量恰当地显示了误差项的合理大小。
-
它避免使用绝对误差值,这在数学计算中是非常不希望的。
-
当我们有更多样本时,使用 RMSE 重建误差分布被认为更可靠。
-
RMSE 受异常值的影响很大。因此,在使用此指标之前,请确保您已从数据集中删除了异常值。
-
与平均绝对误差相比,RMSE 给予更高的权重并惩罚大的误差。
RMSE 指标由下式给出:
其中 N 是观察总数。
2.10 均方根对数误差
对于均方根对数误差,我们取预测值和实际值的对数。那么基本上,我们测量的方差有哪些变化?当我们不想惩罚预测值和实际值的巨大差异(当预测值和真实值都是巨大数字时),通常会使用 RMSLE。
-
如果预测值和实际值都很小:RMSE 和 RMSLE 相同。
-
-
如果预测值和实际值都很大:RMSE > RMSLE(RMSLE 几乎可以忽略不计)
2.11 R 平方
我们了解到,当 RMSE 降低时,模型的性能将会提高。但仅凭这些值并不直观。
对于分类问题,如果模型的准确度为 0.8,我们可以衡量我们的模型与准确度为 0.5 的随机模型相比有多好。所以随机模型可以作为基准。但当我们谈论 RMSE 指标时,我们没有可以比较的基准。
这是我们可以使用 R 平方度量的地方。R 平方的公式如下:
换句话说,与仅预测训练集中目标的平均值作为预测的非常简单的模型相比,我们的回归模型有多好?
2.12 调整 R 平方
如果模型的性能等于基线,则 R 平方为 0。模型越好,r2 值就越高。具有所有正确预测的最佳模型的 R 平方值为 1。但是,在向模型添加新特征时,R 平方值要么增加,要么保持不变。R-Squared 不会因为添加对模型没有任何价值的特征而受到惩罚。因此,R-Squared 的改进版本是调整后的 R-Squared。调整后的 R 平方的公式由下式给出: